Вдогонку к приятной новости про implicit
-ы (как некоторые заметили, очередной шаг в направлении языка Haskell
) в Scala 3 было внесено не менее масштабное предложение - полностью исключить null
из значений отдельных типов и обособить его в свой собственный Null
наряду с уже существующими AnyVal
(примитивы) и AnyRef
(объекты).
В целом, предложение содержит полную переработку механизма обращения с null
-значениями на уровне компилятора. Основная идея заключается в присвоении всем потенциально аnull
ируемым значениям типа TypeName
|
Null
, в связи с чем их уже нельзя будет передать в методы, принимающие строго тип TypeName
. Из интересных особенностей - уточнение типа переменных при сравнении с null
на стабильных путях (привет, Kotlin
!). При этом авторы также основательно поработали над взаимодействием с кодом предыдущих версий языка Scala и Java-библиотеками, благодаря чему уже существующий код потребует лишь незначительных изменений.
Полное описание предложения можно найти по ссылке:
https://gist.github.com/abeln/9f79774bac111d99b3ae2cb9016a33e6
>>Click here to continue<<
