以下は、Scala と Scalaz を使用したワークシートのエクスポートです。
def f(str: Option[String]) = str //> f: (str: Option[String])Option[String]
f(None) //> res1: Option[String] = None
var x:Option[String]=None //> x : Option[String] = None
x=Some("test")
x //> res2: Option[String] = Some(test)
x=None
x
今 Scalaz を使って、
def fz(str: Option[String]) = str //> fz: (str: Option[String])Option[String]
fz(none) //> res4: Option[String] = None
var xz:Option[String]=none //> xz : Option[String] = None
xz=some("test")
xz //> res5: Option[String] = Some(test)
xz=none
xz
None
orの使用に関係なく、すべてのステートメントが同じように評価されることに注意してくださいOption.Empty
。どのように ?
var x:Option[String]=None
ご覧のとおり、ステートメントの戻り値の型を介して Scala に意図を知らせることが重要です。これにより、後で a を割り当てることができますSome
。ただし、変数 x が に解決され、 に解決されないvar x=None
ため、後の行ではシンプルに失敗します。None.type
Option[T]
慣習に従うべきだと思います。課題については、var x:Option[String]=None
オプションを選択します。また、 None を使用するときはいつでも、割り当てが に解決されないように、戻り値の型 (この場合は Option[String]) を使用することをお勧めしNone.type
ます。
タイプを提供する方法がなく、いくつかの割り当てを行う必要がある場合にのみ、私は行きますOption.empty