不知能否重写这段dart代码:
double length = 0;
Point current = points.first;
for (var next in points.skip(1)){
length += current.distanceTo(next);
current = next;
}
return length;
更简洁优雅的东西。我正在考虑使用 reduce/fold,但是有没有办法在组合函数中访问可迭代的先例元素?
最佳答案
使用函数式编程风格和 dart 扩展方法:
extension MyExtensions<T> on Iterable<T> {
T foldByPairs(T initialValue, T combine(T value, T previous, T current)) {
Iterator<T> iterator = this.iterator;
iterator.moveNext(); // error handling omitted for brevity
T value = initialValue;
T previous = iterator.current;
while (iterator.moveNext()) {
T current = iterator.current;
value = combine(value, previous, current);
previous = current;
}
return value;
}
}
关于dart - 在 Dart 中访问折叠/减少中的前一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61293084/