Почему я могу присвоить null значению Unit и почему оно преобразуется в ()? - PullRequest
9 голосов
/ 24 апреля 2011

Рассмотрим этот код:

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

а) Почему мне разрешено присваивать значение NULL классу значений? (см. §12.2.3)

б) Почему null конвертируется в ()?

1 Ответ

19 голосов
/ 24 апреля 2011

Из раздела спецификации scala 6.26.1:

Значение отбрасывается. Если e имеет некоторый тип значения и ожидаемый тип равен Unit, e преобразуется в ожидаемый тип, встраивая его в термин { e ; () }.

Другими словами, ваш код эквивалентен

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

null не конвертируется - он просто игнорируется и заменяется (), предопределенным значением Unit.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...