实施Option#unit
时:
override def unit[A](a: => A): Option[A] = ...
这两个之间有什么区别吗?
Some(a)
或
Option[A](a)
或者,如果指定的返回类型为Option[A]
?
Option[A]
可能是不必要的
答案 0 :(得分:7)
如果你试图让Option
成为monad(根据方法名称判断),那么Some(a)
是遵循monad法则的唯一版本。见https://stackoverflow.com/a/20125955/9204
答案 1 :(得分:6)
这取决于Option
和Some
的实施情况。在标准scala中,Option(a)
为您提供了额外的空检查,如果a
评估为null
,则可以返回无。