dart - 在 Dart 中访问折叠/减少中的前一个元素

标签 dart collections reduce

不知能否重写这段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/

相关文章:

dart - 私有(private)变量/属性和方法如何工作?

flutter - 如何使警报对话框在抖动中工作

http - 加载时间长,并且显示_InternalLinkedHashMap和列表<Dynamic>错误

c# - 具有两个键和一个对象的最佳 C# 集合是什么?

java - ConcurrentHashMap 上的迭代器

python - 如何在 Python 中传播树节点

dart - 如何在构造函数中将常量值分配为默认值

java - Hibernate 注释与集合

nested - 减少 javascript 中的嵌套对象数组

javascript - 在 javascript 中使用 map 和 reduce 来过滤数组中的对象