gpt4 book ai didi

dart - 折叠压平列表

转载 作者:行者123 更新时间:2023-12-01 06:41:16 25 4
gpt4 key购买 nike

我能够使用折叠来展平列表

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

执行时

print(flattenWithFold([1,[3,5,[1,2]],[2,1],6])); 

它产生正确的结果 [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));

谁能解释一下为什么执行时出现 null [1, 3, 5, 1, 2, null, null, 2, 1, null, 6] ?

print(flattenWithFold1([1,[3,5,[1,2]],[2,1],6]));

最佳答案

结果中会出现 null,因为如果 sIterable,那么您正在执行 xs..add(xs. addAll(flattenWithFold1(s))addAll 是一个 void 方法,但由于您将其用作表达式,因此它返回 null。因此,您将扁平化元素添加到 xs 中,但随后添加 null,这是 void 的返回值方法。

关于dart - 折叠压平列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41817994/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com