Question

S'il y avait une telle chose que j'imagine la syntaxe d'être quelque chose le long des lignes de

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

Je me demandais s'il y avait quelque chose comme ça ou une façon d'imiter cela?

Était-ce utile?

La solution

Non, le plus proche serait:

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

Bien sûr, si Java obtient toujours la fermeture concises, il serait raisonnable d'écrire quelque chose comme de .NET Enumerable.TakeWhile procédé pour envelopper le iterable (group dans ce cas) et le faire terminer tôt si la condition cesse de maintien.

C'est faisable, même maintenant, bien sûr, mais le code pour le faire serait laid. Pour référence, le C # ressemblerait à ceci:

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

Peut-être que Java obtenir de belles fermetures un peu de temps ...

Autres conseils

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

est ce que je peux penser.

Pour référence, la deuxième réponse de Jon Skeet en Java serait actuellement, pour certains interface Predicate, ressembler à:

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

Il est la syntaxe qui suce, pas la sémantique.

En Java est basée sur l'état while. Ce que vous cherchez est la construction foreach.

Il n'y a pas une telle chose comme tout-chacun en Java, mais nous avons pour -Chaque qui est si grand.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top