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