2011-04-24 8 views
9

consideran este código:qué puedo asignar un valor nulo a la unidad y por qué se convierten en()?

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

a) ¿Qué está permitido asignar nula a una clase de valor? (vea §12.2.3)

b) ¿Por qué el null se convierte a ()?

+0

posible duplicado de [Scala: ¿Por qué puedo convertir Int a la unidad?] (Http://stackoverflow.com/questions/3513364/scala-why-can-i-convert-int-to-unit) –

+0

Dónde hacer ¿ves que '()' se convierte a nulo? –

Respuesta

19

Desde la sección de especificaciones Scala 6.26.1:

Valor descarte. Si e tiene algún tipo de valor y el tipo esperado es Unit, e se convierte en el tipo esperado mediante la incorporación en el término { e ;() }.

En otras palabras, su código es equivalente a

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

El null no se convierte - Es simplemente ignorados y se sustituye por (), el valor predefinido Unit.

Cuestiones relacionadas