2012-07-29 10 views
35

zaman tipi seçeneği bir alanda Dize türünde bir değer etkilemeye çalışıyorum [Dize] alıyorum aşağıdaki hata:Seçenekde Dize nasıl ayarlanır? [String]?

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

nasıl alanına myField:Option[String] içine değerini myValue:String etkileyebilir?

Böyle bir Option herhangi bir nesne içine alabilirsiniz

cevap

52

Ayrıca sadece Some için None ve boş olmayan için boş dönüştürecektir Option(myValue) kullanabilirsiniz. Yok olarak boş bir dize dönüştürmek istiyorsanız

+2

Değeri "" eşitse (boş dize) anlamalısınız, bu durumda seçenek Bazı() – RomKazanova

+1

Doğru, boş bir dize null ile aynı değildir. –

12

: Eğer bir şey yok eğer sadece bazıları sınıfta nesneyi sarabilirsiniz

val opt = Some("foo") 
+7

Not' genelde biri olarak, '' bir kısmı (null değeri) almamak için genellikle sabit bir dizgenin yerine bir değişkeni geçirir. – Frank

4

val myField = Some(myValue) 

Veya, pas

None 

012 Opsiyon desen olarak adlandırılan

Onun

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

+3

'Seçenek (...)' zaten sizin için her şeyi yapıyor. "Boş" değerlerini "Yok" ile değiştirir ve diğerlerini "Bazı (...)" ile sarar. Orada kodunuzda herhangi bir ayrım yapmaya gerek yok. – Frank

+0

Amacım, özel bir api kullanıyor ve seçenek boşsa hiçbir şey iletmek istemiyorsanız, seçenek modelini açıklamaktı. – FUD

0

daha evrensel bir çözümdür: Eğer `Seçenek (...) kullanmalıdır Option(str).filter(_.nonEmpty)

İlgili konular