用dart语言从列表中填充null的最佳方法是什么

用dart语言从列表中填充null的最佳方法是什么,dart,Dart,正在寻找与python过滤器等效的dart a = ['', None,4] [print(e) for e in filter(None,a)] 我的代码太难看了: List a = [null,2,null]; List b=new List(); for(var e in a){if(e==null) b.add(e);} for(var e in b){a.remove(e);} print(a); 您可以使用列表的removehere方法,如下所示: List a = [null,

正在寻找与python过滤器等效的dart

a = ['', None,4]
[print(e) for e in filter(None,a)]
我的代码太难看了:

List a = [null,2,null];
List b=new List();
for(var e in a){if(e==null) b.add(e);}
for(var e in b){a.remove(e);}
print(a);

您可以使用列表的
removehere
方法,如下所示:

List a = [null, 2, null];
a.removeWhere((value) => value == null);
print(a); // prints [2]

在具有声音零位安全的新dart 2.12中,最好的方法是:

List<int?> a = [null,2,null];
final List<int> b = a.whereType<int>().toList();
列表a=[null,2,null];
最终列表b=a.whereType().toList();

在现代Dart中,您可以使用“collection if”和“collection for”,这与Python的列表理解类似:

列表a=[null,2,null];
列表b=[如果(i!=null)i,则表示(a中的变量i)];
打印(b);//印刷品[2]

来源:

这不会返回任何内容…类型检查更干净我不知道反射是否会对
removeWhere
解决方案造成性能损失。这正是我想要的:从
列表转换为
列表
,简单的强制转换将不起作用。很好!奇怪的是我们不能做
。其中((a)=>a!=null)
List<int?> a = [null,2,null];
final List<int> b = a.whereType<int>().toList();