Строгий не null режим(Rust mode)

Если вы компилируете ваш код с ключом --enable-experimental-non-null, то компилятор Vala будет строго проверять каждый тип на не null, если только явно не объявлено обратное с помощью вопросительного знака:

Object o1 = new Object(); // не может быть null
Object? o2 = new Object(); // может быть null

Компилятор будет следить за тем, чтобы ссылки, которые могут содержать null не были присвоены ссылкам, которые не могут быть null, т.е. такого рода присвоения будут невозможны:

o1 = o2;

o2 может быть null, а о1 объявлен нe null, поэтому такое присвоение запрещено. Тем не менее, вы можете переопределить такое поведение с помощью приведения ссылки к не null, если есть уверенность, что о2 не null:

o1 = (!) o2;

Строгая проверка в не null режиме помогает избежать использования нежелательного использования null ссылок. Эта возможность покажет свой потенциал полностью, если все типы в биндингах будут отмечены на предмет содержания null ccылок правильным образом, что пока еще встречается редко.

Last updated