Почему переменная, объявленная с помощью 'var', может быть нулевой в нулевом дротике?
Я копирую это из документации
// In null-safe Dart, none of these can ever be null.
var i = 42; // Inferred to be an int.
String name = getFileName();
final b = Foo();
Но я запускаю приведенный ниже код в нулевом блокноте, и он компилируется.
void main() {
var x = null;
print(x);
}
Это ошибка документации или я что-то упустил?
1 ответ
Решение
Ваш пример не близок к тому, что пытается объяснить документация. Попробуйте вместо этого:
void main() {
var x = 42;
x = null; // Error: A value of type 'Null' can't be assigned to a variable of type 'int' - line 3
print(x);
}
Причина в том, что
var x = 42
"Предполагается, что
int
" и нет
int?
.
В вашем примере происходит следующее:
var x = null
решены так
x
рассматриваются как тип
dynamic
поскольку Дарт понятия не имеет, какой тип вы пытаетесь использовать. поскольку
dynamic
может иметь значение
null
тебе хорошо идти.