12
votes

Puis-je tirer l'élément suivant de la boucle Perl Feach?

Puis-je faire quelque chose comme ce qui suit dans Perl? XXX

MISE À JOUR: J'ai besoin de cela dans PERL, mais pour la curiosité: les autres langues ont-elles une soirée Syntaxe pour ça?


0 commentaires

5 Réponses :


9
votes

pas avec un foreach boucle. Vous pouvez utiliser un de style C pour boucle: xxx

Vous pouvez également utiliser quelque chose comme Array :: Itérateur . Je laisserai cette version comme un exercice pour le lecteur. : -)


0 commentaires

20
votes

Doit utiliser un pour boucle? Copiez l'original et 'consommez-le' avec shift : < Pré> xxx


1 commentaires

Joli. Dans mon cas, détruire l'original n'est même pas un problème, je peux donc faire sans la copie.



9
votes

commençant par Perl 5.12, chacun est maintenant plus flexible En travaillant également sur des tableaux: xxx pré>


p>

une réserve avec chacun code> , rappelez-vous que l'itérateur est global et n'est pas réinitialisé si vous sortez d'une boucle. P>

pour par exemple : p>

keys @tokens;                      # resets iterator
($i, $val) = each @tokens;
say "Now at => $val ($i)";         # Now at => a (0)


1 commentaires

Whoa! Je ne savais pas - cela viendra utile. Merci :)



0
votes

J'aime la réponse à Zays, mais elle échoue s'il rencontre un élément nul dans le tableau Donc ... xxx

Ceci ne s'arrêtera pas avant que @array est vide.


0 commentaires

1
votes
    my $arr = [0..9];

    foreach ( 1 ..  scalar @{$arr} ) {

           my $curr = shift @{$arr};

           my $next = shift @{$arr};

           unshift @{$arr} , $next;

           print "CURRENT :: $curr :: NEXT :: $next \n";
    }

1 commentaires

Meilleure solution ici.