2010-10-20 10 views
7

बॉक्स और विकल्प मोनैड के प्रसार के साथ भी, हमें अभी भी यहां और वहां शून्य मूल्यों की जांच करनी है। सबसे अच्छा मैं अब तक आया हूं बॉक्स # का उपयोग करके !! विधि:मैं स्काला/लिफ्ट के भीतर से नल चेक कैसे निष्क्रिय तरीके से संभाल सकता हूं?

(Box !! possiblyNull).map(_.toString).openOr("") 

क्या ऐसा करने का कोई बेहतर तरीका है? मैं बॉक्स के लागू विधि का उपयोग करने की कोशिश की:

Box(possiblyNull).map(_.toString).openOr("") 

लेकिन संकलक एक ओवरलोड परिभाषा करने के लिए एक अस्पष्ट संदर्भ की शिकायत की, विशेष रूप से:

[InType,OutType](value: InType) 
(pf: PartialFunction[InType,OutType])net.liftweb.common.Box[OutType] 

मुझे यकीन है कि क्यों कि क्या हो रहा है नहीं कर रहा हूँ, लेकिन मैं वहाँ उम्मीद कर रही थी यह कहने का एक छोटा और अधिक संक्षिप्त तरीका होगा, "मुझे इस स्ट्रिंग का मान दें, या सिर्फ" "मैं कोशिश कर रहा था, लेकिन मैंने इसे अपवाद से निपटने के लिए अपमानजनक माना, जब इसे टाला जा सकता था।

उत्तर

11

I पता नहीं क्या बॉक्स के बारे में है। लेकिन यहां एक साधारण उदाहरण चला जाता है विकल्प का उपयोग कर:

scala> val str1:String="abc" 
str1: String = abc 

scala> val str2:String=null 
str2: String = null 

scala> Option(str1).getOrElse("XXX") 
res0: String = abc 

scala> Option(str2).getOrElse("XXX") 
res1: String = XXX 
+0

वाह, यह बहुत आसान है .. धन्यवाद। इसके अलावा, बॉक्स लिफ्ट फ्रेमवर्क का विकल्प का पुनः-वैंपिंग है। विकल्प के दो उप-वर्गों के बजाय, इसमें तीन हैं: पूर्ण, खाली, और विफलता। – Collin

+0

ऐसा लगता है कि http://www.scala-lang.org/archives/downloads/distrib/files/nightly/docs/library/scala/Either.html – pedrofurla

संबंधित मुद्दे

 संबंधित मुद्दे