为什么我可以为单位值赋值null,为什么它会转换为()?

时间:2011-04-24 16:53:58

标签: class scala null unit-type

考虑以下代码:

var unit: Unit = null
unit: Unit = ()

a)为什么我可以将null赋给值类? (见§12.2.3)

b)为什么null会转换为()

1 个答案:

答案 0 :(得分:19)

来自scala规范部分6.26.1:

  

放弃价值。如果e有某种值类型且预期类型为Unit,则e会通过将其嵌入到{ e ; () }中而转换为预期类型术语var unit: Unit = {null; ()} unit: Unit = ()

换句话说,您的代码等同于

null

()未被转换 - 它仅被忽略,取而代之的是Unit,即预定义的{{1}}值。