これは私にとって非常に奇妙なようです:私はOption[someType]
という変数を持っていて、someType
オブジェクトを割り当てます。なぜオブジェクトを明示的にオプション?Scala - 型のOption [型]への暗黙的変換
var num: Option[Int] = Option[Int](3) // works
var num: Option[Int] = 3 // seems reasonable, but doesn't compile
編集:私はむしろ、「これを回避する方法」よりも、「なぜScalaはこのようにそれを実装しました」の詳細であることを私の質問を意味しました。ご覧のとおり、私はそれを回避する方法を知っています。
Int
はOption[Int]
と考えることはできません。私はInt
がList[Int]
ではない理由を知っています(私はパラダイムがそれであると想像することもできますが)。Option[Int]
への変換をシームレスに行わないというロジックは見えません。
「Some(3)」と言うのはもっと普通だと思います。私はあなたがキャストしているとは思わない。私はあなたが 'Option.apply(3)'( 'Some(3)'を返す)を呼び出すと信じています。 –
はい、論理的な観点からは、 'A'型のすべての値も考えることができます'Option [A]' '型のオプションの値として扱いますが、実際には、これは非常に煩わしいことがあります。 – Yawar
'AnyVal'の型はnullにできませんが、Scalaコンパイラが' AnyRef'型のインスタンスがnullでないことを静的に知る方法はありません。 – Ryan