Почему переменная, объявленная с помощью '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 тебе хорошо идти.

Другие вопросы по тегам