【问题标题】:Error to use assignment operators ==? in Dart使用赋值运算符 == 时出错?在飞镖
【发布时间】:2021-10-31 13:24:30
【问题描述】:
我正在学习 Dart 并用这个 video 练习我遇到了这种在变量为 null 时赋值的方式
void main() {
int linus;
linus ??= 100;
print(linus);
}
当尝试在 VSCode 中测试代码时,我收到以下错误,我无法识别其来源,因为我理解的是,我使用的是 documentation 中指示的内容(以及视频教程)。
必须先分配不可为空的局部变量“linus”,然后才能使用它。
尝试给它一个初始化表达式,或者确保在每个执行路径上都分配了它。
【问题讨论】:
标签:
flutter
dart
variables
operators
dart-null-safety
【解决方案1】:
Dart 语言现在支持称为声音空值安全的新功能。变量现在默认是不可为空的,这意味着您不能将空值分配给变量,除非您明确声明它们可以包含空值。
要表明一个变量可能具有 null 值,只需添加 ?对其类型声明:
int? linus;
所以,请记住:每个变量都必须先分配一个值,然后才能使用它。 在您的示例中,linus 变量默认情况下是不可为空的,null-aware 运算符没有任何作用这样做是因为如果它为null,它会给linus赋值。所以,linus没有得到任何值,因此它不能在打印函数中使用。
所以要解决这个问题,你可以这样做:
void main() {
int? linus; //marks linus as a variable that can have null value
linus ??= 100;
print(linus);
}
了解更多关于null safety
【解决方案2】:
文档是非 Null 安全的,您正在尝试使用 Null 安全版本
请检查以下代码
void main() {
int? linus;
linus ??= 100;
print(linus);
}