Ответ 1
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)
.