【问题标题】:Dart - assign value only if null (??=) gives warning messageDart - 仅当 null (??=) 给出警告消息时才赋值
【发布时间】:2022-01-10 07:23:05
【问题描述】:

当我执行这个小飞镖程序时:

void main() {
  int? someint;
  someint ??= 123;
  someint ??= 246;
  print(someint);
}

我收到以下警告消息;

$ dart test.dart 
test.dart:4:3: Warning: Operand of null-aware operation '??=' has type 'int' which excludes null.
  someint ??= 246;
  ^
123

所以一切都按预期工作,但警告消息很烦人。有什么办法可以抑制这个警告信息?

【问题讨论】:

    标签: dart


    【解决方案1】:

    这只是一个警告,因为编译器知道分配不可能发生,因为您之前刚刚完成了无效分配。飞镖垫上有更好的错误信息:

    void main() {
      int? someint;
      someint ??= 123;
      someint ??= 246; // <- warning here
      print(someint);
    }
    
    line 4 • The left operand can't be null, so the right operand is never executed. (view docs)
    Try removing the operator and the right operand.
    

    您的代码仍然可以编译,尽管您没有理由再进行一次无效赋值,因为它永远不会运行。

    【讨论】:

    • 谢谢。说得通。注意到如果我用for (var i = 0; i &lt; 10; i++) someint ??= 246; 替换第二个作业,那么就没有警告了。您知道是否有任何方法可以抑制此类警告?
    • 我假设 for 循环示例有效,因为出于性能原因,在 for 循环条件的第一部分中没有空分配检查。我认为您应该可以通过遵循此问题的回复stackoverflow.com/q/59211916/10873797 来忽略 lints
    猜你喜欢
    • 2016-02-16
    • 2015-08-07
    • 1970-01-01
    • 2013-06-06
    • 2019-06-25
    • 2019-05-08
    • 2018-10-21
    • 2011-06-06
    • 2022-10-14
    相关资源
    最近更新 更多