Dart中能否在列表链式调用中用三元运算符控制.where方法调用?
在Dart中能否在列表链式调用中插入条件判断?
你给出的示例代码无法直接运行,Dart不支持这种在链式调用中间直接嵌入三元运算符的语法。
不过可以通过调整三元运算符的位置,实现链式调用里的条件过滤,不需要拆分两次赋值:
final lists = List<dynamic>.from( isNotWhere ? lists2.map((x) => Model.fromMap(x)) : lists2.map((x) => Model.fromMap(x)).where((e) => e.deleted == deleted), );
如果想避免重复调用map方法,还可以先把映射后的结果存起来:
final mappedItems = lists2.map((x) => Model.fromMap(x)); final lists = List<dynamic>.from( isNotWhere ? mappedItems : mappedItems.where((e) => e.deleted == deleted), );
你自己想到的分步赋值写法是完全可行的,逻辑清晰,适合复杂条件下的场景;上面的链式写法则更紧凑,适合简单条件的情况。
内容的提问来源于stack exchange,提问作者Daniel Roldán
相关产品推荐
相关产品推荐

