6

そのようなものがあれば、構文は次のようなものになると想像します

while(Integer item : group<Integer>; item > 5)
{
    //do something
}

このようなもの、またはこれを模倣する方法があったのだろうか?

4

5 に答える 5

7

いいえ、最も近いものは次のとおりです。

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はいつか素晴らしい閉鎖を得るでしょう...

于 2009-06-30T22:25:05.123 に答える
3
for(Integer item : group<Integer>)
{
    if (item <= 5)
         break;
    //do something
}

これが私が考えることができるものです。

于 2009-06-30T22:24:58.993 に答える
3

参考までに、Jon Skeet の Java での 2 番目の回答は、現在のところ、次のinterface Predicateようになります。

for (int item : takeWhile(group, new Predicate<Integer>() {
    public boolean contains(Integer x) {
        return x > 5;
    }
}) {
    // do something
}

ひどいのは構文であり、セマンティクスではありません。

于 2009-06-30T22:44:35.960 に答える
0

Java ではwhile条件ベースです。あなたが探しているのはforeach構造です。

于 2013-03-26T01:49:33.133 に答える