如果有这样的事情,我会想象语法类似于
while(Integer item : group<Integer>; item > 5)
{
//do something
}
只是想知道是否有类似的东西或模仿它的方法?
如果有这样的事情,我会想象语法类似于
while(Integer item : group<Integer>; item > 5)
{
//do something
}
只是想知道是否有类似的东西或模仿它的方法?
不,最接近的是:
for (Integer item : group<Integer>)
{
if (item <= 5)
{
break;
}
//do something
}
当然,如果 Java 曾经获得简洁的闭包,那么编写类似 .NET 的Enumerable.TakeWhile
方法来包装可迭代对象(group
在这种情况下)并在条件停止成立时使其提前完成是合理的。
当然,即使现在也是可行的,但是这样做的代码会很丑陋。作为参考,C# 看起来像这样:
foreach (int item in group.TakeWhile(x => x > 5))
{
// do something
}
也许Java会在某个时候得到很好的闭包......
for(Integer item : group<Integer>)
{
if (item <= 5)
break;
//do something
}
这是我能想到的。
作为参考,对于某些人来说,Jon Skeet 在 Java 中的第二个答案目前interface Predicate
看起来像:
for (int item : takeWhile(group, new Predicate<Integer>() {
public boolean contains(Integer x) {
return x > 5;
}
}) {
// do something
}
糟糕的是语法,而不是语义。
在 Javawhile
中是基于条件的。您正在寻找的是foreach
构造。
Java 中没有像 while-each 这样的东西,但我们有 for -each 非常棒。