小编Rab*_*yal的帖子

折平列表

我可以使用fold拼合列表

flattenWithFold(Iterable list) => list.fold([], (List xs, s) {
s is Iterable ? xs.addAll(flattenWithFold(s)) : xs.add(s);
   return xs;
});
Run Code Online (Sandbox Code Playgroud)

执行时

print(flattenWithFold([1,[3,5,[1,2]],[2,1],6])); 
Run Code Online (Sandbox Code Playgroud)

它产生正确的结果[1、3、5、1、2、2、1、6]

但是当我尝试重构使用..add时,它会产生错误的结果

flattenWithFold1(Iterable list) => list.fold([], (List xs, s) => xs..add(
              s is Iterable ? xs.addAll(flattenWithFold1(s)) : s));
Run Code Online (Sandbox Code Playgroud)

有人可以解释为什么在执行时为何存在null [1、3、5、1、2,null,null,2、1,null,6]吗?

print(flattenWithFold1([1,[3,5,[1,2]],[2,1],6]));
Run Code Online (Sandbox Code Playgroud)

dart

2
推荐指数
1
解决办法
335
查看次数

标签 统计

dart ×1