高阶函数¶
expand 和 map 是用于集合操作的高阶函数。它们可以对集合中的元素进行转换和处理。
map¶
将集合中的每个元素转换为另一个对象。它会返回一个新的迭代器,其中包含对每个元素应用转换函数后的结果。
用法示例:
List<int> numbers = [1, 2, 3];
List<int> squares = numbers.map((number) => number * number).toList();
print(squares); // 输出: [1, 4, 9]
fold¶
/// accountList.fold(0.0, ...):fold 是 Dart 集合的一个方法,用于遍历集合并累加(或聚合)结果。0.0 是初始值,表示累加从 0 开始。
/// (sum, item) => sum + (double.tryParse(item.balance) ?? 0.0):这是一个匿名函数,每次遍历时:
/// sum 是当前累计的总和。
/// item 是当前遍历到的账户对象。
/// item.balance 是账户余额(字符串类型),用 double.tryParse 转成数字,如果转换失败则用 0.0。
/// 把转换后的余额加到 sum 上,作为新的累计值。
double totalAmount = accountList.fold(
0.0,
(sum, item) => sum + (double.tryParse(item.balance) ?? 0.0),
);
expand¶
将集合中的每个元素转换为一个可迭代对象,然后将所有结果合并为一个单一的迭代器。它适合用于将嵌套集合展平。
用法示例:
List<List<int>> nestedList = [[1, 2], [3, 4], [5]];
List<int> flattenedList = nestedList.expand((list) => list).toList();
print(flattenedList); // 输出: [1, 2, 3, 4, 5]
总结¶
map:用于对集合中的每个元素进行转换。expand:用于将集合中的每个元素转换为一个可迭代对象,并将结果合并。适合展平嵌套集合。