首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用赋值运算符==时出错?在达特

使用赋值运算符==时出错?在达特
EN

Stack Overflow用户
提问于 2021-09-02 03:57:22
回答 2查看 588关注 0票数 1

我正在学习Dart,并使用这个视频来练习--当变量为null时,我遇到了一种分配值的方法。

代码语言:javascript
复制
void main() {

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

}

在尝试测试VSCode中的代码时,我得到了以下错误,无法识别它的来源,因为从理解的中,我使用的是文档 (和视频教程)中指示的内容。

非空局部变量'linus‘必须在使用之前被赋值。尝试给它一个初始化表达式,或者确保在每个执行路径上都分配它。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-09-02 04:38:25

Dart语言现在支持一个名为声音空安全的新特性。默认情况下,变量现在是不可空的,这意味着除非显式声明变量可以包含空值,否则不能将空值赋值给变量。

若要指示变量的值可能为null,只需添加?到其类型声明:

代码语言:javascript
复制
int? linus;

因此,请记住:每个变量在使用它之前都必须有一个分配给它的值。就像在您的示例中一样,默认情况下,linus变量是不可空的,空感知操作符没有什么关系,因为如果它是null.So,它将给linus赋值,linus没有值,因此它不能在打印函数中使用。

为了解决这个问题,你可以这样做:

代码语言:javascript
复制
void main() {

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

linus ??= 100;

print(linus);

}

了解更多关于零安全的信息

票数 1
EN

Stack Overflow用户

发布于 2021-09-02 04:30:34

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

代码语言:javascript
复制
void main() {

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

}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69023973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档