使用赋值运算符时出错 ==?在飞镖

Error to use assignment operators ==? in Dart

我正在学习 Dart 并练习这个 video 我遇到了这种在变量为 null 时赋值的方法

void main() {

  int linus;
  linus ??= 100;
  print(linus);

}

尝试测试 VSCode 中的代码时出现以下错误,我无法确定其来源,因为 据我了解,我正在使用指示的内容在 documentation(和视频教程)中。

不可为 null 的局部变量 'linus' 必须先赋值才能使用。 尝试给它一个初始化表达式,或者确保它在每个执行路径上都被分配。

文档是非空安全的,您正在尝试空安全版本 请检查下面的代码

void main() {

  int? linus;
  linus ??= 100;
  print(linus);

}

Dart 语言现在支持一个称为声音空安全的新特性。默认情况下,变量现在是不可空的,这意味着您不能将空值分配给变量,除非您明确声明它们可以包含空值。

要指示一个变量可能具有空值,只需添加 ?到它的类型声明:

int? linus;

所以,请记住:每个变量在使用前都必须赋值。如您的示例所示,默认情况下,linus 变量不可为空,null- aware operator 无关,因为如果它是 null.So,它会为 linus 赋值,linus 没有值,因此它不能在 print 函数中使用。

所以要解决这个问题,你可以这样做:

void main() {

int? linus; //marks linus as a variable that can have null value

linus ??= 100;

print(linus);

}

了解更多null safety