2012-07-29 30 views
35

私はタイプオプションのフィールドにString型の値に影響を与えるためにしようとしている[文字列]私は次のエラーを取得する:オプション[文字列]で文字列を設定する方法は?

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

はどのようにして、フィールドmyField:Option[String]に値myValue:Stringに影響を与えることができますか?

答えて

52

また、単にSomeNoneと非nullにnullに変換されますOption(myValue)を使用することができます。

+2

値が ""(空の文字列)である場合、この場合のオプションはSome() – RomKazanova

+1

であることを理解する必要があります。空の文字列はnullと同じではありません。 –

12

あなたはこのようなOptionで任意のオブジェクトをラップすることができます

val opt = Some("foo") 
+7

注意通常は定数文字列の代わりに変数を渡します。 – Frank

4

あなただけ

None 
を通過し、いくつかのクラスに

val myField = Some(myValue) 

それともあなたは何を持っていけない場合は、あなたのオブジェクトをラップすることができます

呼び出されるオプションパターン

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

+3

'Option(...)'はすでにあなたのためにすべてをしています。それは 'null'値を' None'で置き換え、 'Some(...)'で他の値をラップします。そこにあなたのコードを区別する必要はありません。 – Frank

+0

私のポイントは、カスタムAPIを使用していて、値が空の場合は何も渡したくない場合のように、オプションパターンを説明することでした。 – FUD

0

あなたはなしより普遍的なソリューションに空の文字列を変換したい場合です:あなたは一人として、 `一般的に` `いくつかの(null)を避けるために、`オプション(...)を使用する必要がありますOption(str).filter(_.nonEmpty)

関連する問題