そのようなものがあれば、構文は次のようなものになると想像します
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 での 2 番目の回答は、現在のところ、次のinterface Predicate
ようになります。
for (int item : takeWhile(group, new Predicate<Integer>() {
public boolean contains(Integer x) {
return x > 5;
}
}) {
// do something
}
ひどいのは構文であり、セマンティクスではありません。
Java ではwhile
条件ベースです。あなたが探しているのはforeach
構造です。