考虑以下代码:
var unit: Unit = null
unit: Unit = ()
a)为什么我可以将null赋给值类? (见§12.2.3)
b)为什么null
会转换为()
?
答案 0 :(得分:19)
来自scala规范部分6.26.1:
放弃价值。如果
e
有某种值类型且预期类型为Unit
,则e
会通过将其嵌入到{ e ; () }
中而转换为预期类型术语var unit: Unit = {null; ()} unit: Unit = ()
。
换句话说,您的代码等同于
null
()
未被转换 - 它仅被忽略,取而代之的是Unit
,即预定义的{{1}}值。