【问题标题】: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);
      
      }
      

      【讨论】:

        猜你喜欢
        • 2013-11-07
        • 1970-01-01
        • 1970-01-01
        • 2013-07-10
        • 2022-10-23
        • 2022-07-20
        • 2019-10-24
        • 2020-03-03
        • 2019-04-14
        相关资源
        最近更新 更多