为什么Option(null).map会导致错误?

时间:2018-02-06 21:49:34

标签: scala

我们说我已经定义了一个函数:

f:(Int)=>String

为什么以下结果会导致错误?

Option(null).map(f)

虽然以下工作正常吗?

None.map(f)

PS:Option(null)评估为None

编辑:以下是我在scala控制台上看到的错误

scala> Option(null).map(f)
<console>:14: error: type mismatch;
found   : Int => String
required: Null => ?
   Option(null).map(f)

1 个答案:

答案 0 :(得分:6)

表达式Option(null)的类型为Option[Null],而NoneOption[Nothing]的实例。 Null不是Int的子类型,但Nothing是。

Option(null)的计算结果为None,但在编译时并不知道。无论如何,字面上写Option(null)没有任何意义。只有当您不确定参数是否为null时,该构造才有用。