可能性の重複:
Why Option[T] ?Scalaのオプション
私はスカラ座での初心者です、私は本当にJavaをヌル間の差のような感覚を感じ、Option
することはできませんScalaについて 私はどれも対象ではないと私はスカラ座でそのようになめらかに書くならば、それは安全で行くことを知っている:
val map = Map("koko" -> "is a cat")
val string:Option[String] =map.get("other")
println(string.map(a=>println(a.toString)))
私はうまく代わりに例外をスローした結果としてNone
を取得します。 それは面白いです。
しかし、戻り値がSome
でラップされないようにする必要がある場合。 .getを使用して値を返します。
map.get("other").get.map(a=>println(a.toString))
私は「一致」を使用してこの問題を処理することができます知っている:私たちの例では
は、それがexceoptionがスローされます。 私はここで、スカラとJavaのどちらのオプションについても好調なことを学ぶ必要があると考えています!
私はまだ得ることができませんでしたが、私の変数の中に存在していたどのように私はオプションの利点を使用しますが、場合に値が存在する可能性があることです、値を返さないSome(value)
def testOption(): String = {
val map = Map("koko" -> "is a cat")
val string: Option[String] = map.get("koko")
string
}
私が意味はどのような方法があります戻り値をOption[String]
に更新する代わりに、このコードを動作させる! は私がいないOption[String]
がどのように私はそれがmatch
の任意の種類なしで動作させることができString型である私の豆変数に設定するために、文字列を返すために持っていることを想像してみて! 私はそれが動作するようなスムーズさがあれば、それは私がよくOption
の力を理解させるようになりますね。
これを読む:http://stackoverflow.com/questions/2079170/why-optiont – OscarRyz
'get'の代わりに' apply'を使うことができます。それはマップに存在するので、正確な値を返します。 – axel22