我们说我已经定义了一个函数:
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)
答案 0 :(得分:6)
表达式Option(null)
的类型为Option[Null]
,而None
是Option[Nothing]
的实例。 Null
不是Int
的子类型,但Nothing
是。
Option(null)
的计算结果为None
,但在编译时并不知道。无论如何,字面上写Option(null)
没有任何意义。只有当您不确定参数是否为null
时,该构造才有用。