2011-04-24 82 views
9

考虑以下代码:为什么我可以将null分配给单位值,为什么它会转换为()?

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

一)为什么我允许null分配到一个值类? (见§12.2.3)

b)为什么null转换为()

+0

[Scala:为什么我可以将Int转换为单位?](http://stackoverflow.com/questions/3513364/scala-why-can-i-convert-int-to-unit) – 2011-04-24 17:10:49

+0

哪里可以你看到'()'被转换为空? – 2011-04-24 17:11:13

回答

19

从阶指定部6.26.1:

值丢弃。如果e具有某种值类型,并且预期类型为Unit,则e将通过将其嵌入到术语{ e ;() }中而转换为预期类型。

换句话说,你的代码就相当于

var unit: Unit = {null;()} 
unit: Unit =() 

null不转换 - 它是由(),预定义的Unit值只是忽略和替代。

相关问题