检查元素是否是折叠函数中的最后一个值



我正在对一个尚未分配给变量的数组使用fold,并希望检查该元素是否是最后一个值。使用传统的for循环,我可以做到这一点:

List<int> ints = [1, 2, 3];
int sum = 0;
for (int num in ints]) {
if (num != ints.last) {
sum = sum + num;
}
}
print(sum);

可以用折叠代替吗?

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;
}

但它不起作用,因为我不知道如何检查折叠何时在最后一个元素:

String get fieldsToSqlInsert => columns
.map((column) =>
data.containsKey(column.name) ? data[column.name] : "NULL")
.fold("", (val, column) => column != columns.last ? "$val," : val);

如果您只是想从进一步的计算中排除最后一个元素,您只需使用take即可:

String get fieldsToSqlInsert => columns.take(columns.length - 1)...

相关内容

最新更新