实施Option#unit

时间:2014-01-22 03:47:11

标签: scala

实施Option#unit时:

override def unit[A](a: => A): Option[A] = ...

这两个之间有什么区别吗?

Some(a)

Option[A](a)

或者,如果指定的返回类型为Option[A]

,则Option[A]可能是不必要的

2 个答案:

答案 0 :(得分:7)

如果你试图让Option成为monad(根据方法名称判断),那么Some(a)是遵循monad法则的唯一版本。见https://stackoverflow.com/a/20125955/9204

答案 1 :(得分:6)

这取决于OptionSome的实施情况。在标准scala中,Option(a)为您提供了额外的空检查,如果a评估为null,则可以返回无。