在DART中,foldreduce有什么不同?我什么时候应该使用一个而不是另一个?根据文件,他们似乎在做同样的事情.

通过迭代组合 元素使用提供的 功能.

推荐答案

reduce只能用于非空集合,其函数返回的类型与集合中包含的类型相同.

fold可用于所有情况.

例如,您不能用reduce计算列表中所有字符串的长度之和.您必须使用fold:

final list = ['a', 'bb', 'ccc'];
// compute the sum of all length
list.fold(0, (t, e) => t + e.length); // result is 6

顺便说一下,list.reduce(f)可以看作是list.skip(1).fold(list.first, f)的捷径.

Dart相关问答推荐

异类列表中函数类型不变性的解决方法

有什么区别!并且 ! 在 Dart 中?

Dart 中 ThemeData 类的 copyWith() 方法

Dart 扩展: don't access members with "this" unless avoiding shadowing

使用 headers 和 body 进行 HTTP Post

如何在 Flutter 中找出 URL 的有效性?

如何在 Flutter Web 中使用 Skia/CanvasKit?

Google Dart支持mixins吗?

不要将 PageView 居中 - Flutter

dart中整数的最大值是多少?

如何在命令行上创建和运行Dart元素

将Dart嵌入到应用程序中

'Future' 的实例而不是显示值

在 Dart 中将类类型作为变量传递

dart - 数字格式

Dart 有没有办法测量小代码的执行时间

在 Dart 中覆盖哈希码的好方法是什么?

何时在 Dart 中使用 part/part of 与 import/export?

dart列表最小值/最大值

如何在 Dart 中生成随机数?