繁体   English   中英

Java 8会有懒惰的评估吗?

[英]Will Java 8 have lazy evaluation?

我在C#中工作了很长时间,我非常喜欢一种构造,这里我说的是收益率 由于懒惰的评估,这甚至可以组织无限的集合:

IEnumerable<int> fib() {
  int a = 0, b= 1;
  while (true) {
    yield return b;
    int c = a;
    a = b;
    b = c+b;
  }
}

Java 8的语义是否与此相似? 它会以其全部功能进行延迟评估吗?

您可以这样编写一个Iterable:

class Fibonacci implements Iterable<Integer> {
  public Iterator<Integer> iterator() {
    return new Iterator<Integer>() {
      private int a = 0, b = 1;

      public boolean hasNext() {
        return true; // also possible to provide a set limit here
      }

      public Integer next() {
        final int lastA = a;
        a = b;
        b = lastA + b;
        return a;
      }

      public void remove() {
        throw new UnsupportedOperationException();
      }
    };
  }
}

然后,您可以迭代如下值:

for (final Integer i : new Fibonacci()) {
  System.out.print(i + ", ");
  if (i > 100) {
    break;
  }
}

因此,无需等待Java 8。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM