2009-06-30 13 views

Odpowiedz

7

Nie, najbliżej byłoby:

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

Oczywiście jeśli Java kiedykolwiek dostaje zwięzłe zamknięć, byłoby rozsądne, aby napisać coś podobnego Enumerable.TakeWhile metody .NET, aby owinąć iterable (group w tym przypadku) i spraw, aby zakończyło się wcześnie, jeśli warunek przestanie się utrzymywać.

Jest to możliwe nawet teraz, ale kod do tego będzie brzydki. Dla porównania, C# wyglądałby następująco:

foreach (int item in group.TakeWhile(x => x > 5)) 
{ 
    // do something 
} 

Może Java będzie uzyskać ładny zamknięć trochę czasu ...

+0

Hehe. Pokonaj mnie jeszcze kilka sekund. btw ... Myślę, że zamierzałeś użyć "dla" zamiast "while" w pierwszym wierszu kodu. –

+0

Hm. Nie rozpoznaję tego podczas składni. – ojrac

+0

Doh! Tak, na prawdę. c'n'p error –

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

Oto, co mogę wymyślić.

+0

Dokładnie moja sugestia, z wyjątkiem tego, że twój stan wygląda na niewłaściwy. –

+0

Wygląda dobrze, prawda? – WowtaH

+0

dzięki Jon Skeet, naprawiono to –

3

odsyłającym Druga odpowiedź Jon Skeet w Javie byłoby obecnie jakiegoś interface Predicate, wyglądać na przykład:

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

To składnia, która jest do bani, a nie semantyka.

+0

dziękuję Zastanawiałem się nad tym, że składnia zdecydowanie jest do bani –

+1

+1 za przyssanie – voyager

0

W języku Java while opiera się na warunku. To, czego szukasz, to konstrukcja foreach.

0

Nie ma czegoś takiego jak podczas - każdy w Javie, ale mamy - co jest tak wspaniałe.

Powiązane problemy