2009-06-30 3 views

ответ

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 будет получать хорошую CLOSURES некоторое время ...

+0

Хе-хе. Ударьте меня на несколько секунд. btw ... Я думаю, вы намеревались использовать «for» вместо «while» в первой строке вашего фрагмента кода. –

+0

Hm. Я не понимаю, что в то время как синтаксис. – ojrac

+0

Doh! Да, действительно. c'n'p error –

3
for(Integer item : group<Integer>) 
{ 
    if (item <= 5) 
     break; 
    //do something 
} 

Это то, о чем я могу думать.

+0

Точно мое предложение, за исключением того, что ваше состояние выглядит так, как будто это неправильно для меня. –

+0

Выглядит правильно, не так ли? – WowtaH

+0

спасибо Jon Skeet, исправил его –

3

Для справки, второй ответ Джон Скит в Java бы в настоящее время, по некоторым interface Predicate, выглядеть например:

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

Это синтаксис, который отстой, а не семантика.

+0

спасибо, мне было интересно, что синтаксис определенно сосет –

+1

+1 для присасывания – voyager

0

В Java while состояние основано. Вы ищете конструкцию foreach.

0

В Java нет такой вещи, как на каждом, но у нас есть для -ий, который так велик.

Смежные вопросы