7 votes

Quelle est la meilleure façon en Perl d'itérer une boucle et d'en extraire des paires ou des triplets ?

J'ai un tableau plat de coordonnées et je veux itérer et extraire des paires de coordonnées x et y. La même logique pourrait s'appliquer aux triples pour les couleurs RVB. C'est ce que j'ai fait jusqu'à présent, mais ce n'est pas très flexible ni élégant.

my @coords = qw(1 5 2 6 3 8 6 12 7 5);

for (my $i = 0; $i < @coords; $i += 2) {
    my $x = $coords[$i];
    my $y = $coords[$i+1];

    print "$x, $y\n";
}

Il doit y avoir un meilleur moyen de faire ça, non ?

1voto

J'aime utiliser splice sans le surmener en faisant passer le résultat comme test, et ajouter une condition de garde :

@triples % 3 and die "TRIPLES ARRAY NOT MULTIPLE OF 3 IN LENGTH";
while (@triples){
    my ($foo, $bar, $baz) = splice @triples, 0, 3;
    ...
}

si vous avez besoin que les @triples survivent à la consommation par le code élidé dans la boucle, faites des copies, soit du tableau entier, soit avec des décalages tout en incrémentant un index. TMTOWTDI.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X