2012-07-29 15 views
35

जब मैं प्रकार विकल्प के एक क्षेत्र में प्रकार स्ट्रिंग के एक मूल्य को प्रभावित करने की कोशिश कर रहा हूँ [स्ट्रिंग] मैं निम्न त्रुटि:एक विकल्प में स्ट्रिंग कैसे सेट करें [स्ट्रिंग]?

type mismatch; found : String required: Option[String] 

मैं कैसे क्षेत्र myField:Option[String] में मूल्य myValue:String प्रभावित कर सकते हैं?

उत्तर

52

आप, साथ ही Option(myValue) जो Some को None और गैर-शून्य करने के लिए अशक्त में परिवर्तित कर देंगे उपयोग कर सकते हैं।

+2

आपको समझना होगा कि क्या आप मान बराबर है (खाली स्ट्रिंग), इस मामले में विकल्प कुछ होगा() – RomKazanova

+1

सही, एक खाली स्ट्रिंग शून्य के समान नहीं है। –

12

आप एक Option इस तरह में किसी भी वस्तु लपेट कर सकते हैं:

val opt = Some("foo") 
+7

ध्यान दें कि आप 'विकल्प (...) का उपयोग करना चाहिए' सामान्य रूप में एक 'कुछ (शून्य) हो रही से बचने के लिए ', एक के रूप में आमतौर पर एक स्थिर स्ट्रिंग के बजाय एक चर पारित कर देगा। – Frank

4

तुम बस कुछ वर्ग में अपनी वस्तु लपेट कर सकते हैं

val myField = Some(myValue) 

या यदि आप न कुछ भी है, पारित

None 

इसे विकल्प पैटर्न

012 कहा जाता है

http://www.codecommit.com/blog/scala/the-option-pattern

+3

'विकल्प (...) 'पहले से ही आपके लिए सबकुछ करता है। यह 'शून्य 'मानों को' शून्य 'द्वारा प्रतिस्थापित करता है और दूसरों को' कुछ (...) 'में लपेटता है। वहां आपके कोड में कोई भेद करने की आवश्यकता नहीं है। – Frank

+0

मेरा बिंदु विकल्प पैटर्न को समझाना था जैसे कि आप कस्टम एपीआई का उपयोग कर रहे हैं और यदि मूल्य खाली है तो कुछ भी पास नहीं करना चाहते हैं। – FUD

0

आप को कोई नहीं पर खाली स्ट्रिंग परिवर्तित करना चाहते हैं, तो अधिक सार्वभौमिक समाधान है: Option(str).filter(_.nonEmpty)

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