[英]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.