Consider this code:
var unit: Unit = null
unit: Unit = ()
a) Why am I allowed to assign null to a value class? (see §12.2.3)
b) Why doe开发者_运维百科s the null
get converted to ()
?
From the scala specification section 6.26.1:
Value Discarding. If
e
has some value type and the expected type isUnit
,e
is converted to the expected type by embedding it in the term{ e ; () }
.
In other words, your code is equivalent to
var unit: Unit = {null; ()}
unit: Unit = ()
The null
isn't converted -- it's merely ignored and replaced by ()
, the predefined Unit
value.
精彩评论