【发布时间】:2021-06-03 20:15:46
【问题描述】:
我在尚未分配给变量的数组上使用折叠,并想检查该元素是否是最后一个值。使用传统的 for 循环,我可以做到这一点:
List<int> ints = [1, 2, 3];
int sum = 0;
for (int num in ints]) {
if (num != ints.last) {
sum = sum + num;
}
}
print(sum);
是否可以用 fold 来代替?
int foldSum = [1, 2, 3].fold(0, (int prev, element) => prev + element);
print(foldSum);
当 fold 是最后一个值时,我找不到任何检查方法。注意:这是我的问题的简化示例,列表未分配给变量的原因(允许我使用.last)是因为它是调用.map() 的结果。
为了完整起见,下面是实际代码(显然不能单独运行,但有助于说明我的问题)我正在尝试转换为使用 .map 和 .fold:
String get fieldsToSqlInsert {
String val = "";
for (Column column in columns) {
if (data.containsKey(column.name)) {
val = '$val "${data[column.name]}"';
} else {
val = "$val NULL";
}
if (column != columns.last) {
val = "$val,";
}
}
return val;
}
但它不起作用,因为我不知道如何检查 fold 何时位于最后一个元素:
String get fieldsToSqlInsert => columns
.map((column) =>
data.containsKey(column.name) ? data[column.name] : "NULL")
.fold("", (val, column) => column != columns.last ? "$val," : val);
【问题讨论】: