Quando é operador vírgula escalar do Perl útil?
-
18-09-2019 - |
Pergunta
Existe alguma razão para usar um operador escalar vírgula em qualquer lugar diferente em um loop for
?
Solução
Desde o escalar vírgula Perl é uma "porta" do operador C vírgula, esses comentários são, provavelmente, a propósito:
De vez em quando, você se encontra em uma situação em que uma C espera expressão única, mas você tem dois coisas que você quer dizer. A maioria comum (e na verdade o único comum) exemplo é um circuito em
for
, especificamente o primeiro e terceiro controlador expressões. E se (por exemplo) você querem ter um circuito em que contai
a partir0
para10
, ao mesmo tempo quej
está em contagem regressiva a partir10
para0
?
Assim, o seu instinto que é útil principalmente em loops for
é uma boa, eu acho.
Outras dicas
Eu ocasionalmente usá-lo no (às vezes chamado erroneamente "o ternário") operador condicional, se o código é mais fácil de ler do que quebrá-lo fora em um verdadeiro if / else:
my $blah = condition() ? do_this(), do_that() : do_the_other_thing();
Ele também poderia ser usado em alguma expressão, onde o último resultado é importante, como em uma expressão grep
, mas neste caso é apenas o mesmo que se foi usado um ponto e vírgula:
my @results = grep { setup(), condition() } @list;