2011-04-24 31 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值只是忽略和替代。

相關問題