Quand l'opérateur virgule scalaire Perl utile?
-
18-09-2019 - |
Question
Y at-il raison d'utiliser un opérateur virgule scalaire ailleurs que dans une boucle de for
?
La solution
Depuis la virgule scalaire Perl est un "port" de l'opérateur virgule C, ces commentaires sont probablement à propos:
Une fois dans un certain temps, vous vous trouvez dans une situation dans laquelle C prévoit une seule expression, mais vous avez deux les choses que vous voulez dire. Le plus commun (et en fait la seule commune) exemple se trouve dans une boucle de
for
, en particulier la première et la troisième commande expressions. Que faire si (par exemple), vous veulent avoir une boucle dans laquellei
compte à partir0
à10
en même temps quej
compte à rebours de10
à0
?
Alors, votre instinct que c'est surtout utile dans les boucles for
est un bon, je pense.
Autres conseils
Je l'utilise de temps en temps dans le conditionnel (parfois appelé à tort « ternaire ») opérateur, si le code est plus facile à lire que le casser en un véritable if / else:
my $blah = condition() ? do_this(), do_that() : do_the_other_thing();
Il pourrait également être utilisé dans une expression où le dernier résultat est important, comme dans une expression de grep
, mais dans ce cas, il est juste le même que si un point-virgule a été utilisé:
my @results = grep { setup(), condition() } @list;