为什么两个结果打印的结果是一样的?

final list1 = [ "a", "b", "c" ];
final result1 = true ? list1 : list1..removeWhere((e) => e == "a");
print(result1); // prints ["b", "c"]

final list2 = [ "a", "b", "c" ];
final result2 = false ? list2 : list2..removeWhere((e) => e == "a");
print(result2); // prints ["b", "c"]

这仅在三元条件下发生.在正常的If-Else模式下,这工作得很好.

推荐答案

三元运算符在级联运算符之前求值,因此代码基本上等同于

final result1 = (true ? list1 : list1)..removeWhere((e) => e == "a");

而不是你所期望的

final result1 = true ? list1 : (list1..removeWhere((e) => e == "a"));

请参阅:Operator precedence

Dart相关问答推荐

将数据库提供程序导入另一个文件提供程序 dart

flutter.io (dart) - 将填充设置为设备宽度的百分比?

VS Code 无法识别 Flutter 中的单元测试

dart 中 call() 的实现是什么?

Flutter-ExpansionTile 在点击时展开和折叠

如何用 Flutter 在同屏路由上制作英雄风格的动画?

Flutter - 为什么滑块不会在 AlertDialog 中更新?

如何计算列表中元素的出现次数

如何在Flatter中的press/finger/mouse/cursor位置显示菜单

如何判断一个字符串是否可以是 json.decode

将Dart嵌入到应用程序中

Flutter:主题未应用于文本小部件

Flutter列表视图底部溢出

如何在 flutter 中对json进行字符串化

将Flutter的 PageView 与屏幕左侧对齐

如何在 Dart 中上传文件?

找到两个数字中larger/smaller的方法是什么

如何在 Dart 中比较两个对象以查看它们是否是同一个实例?

GWT 与 Dart - 主要区别是什么? Dart 是 GWT 的潜在替代品吗?

Dart 如何获取枚举的value