Quando è scalare operatore virgola di Perl utile?
-
18-09-2019 - |
Domanda
C'è qualche motivo per utilizzare un operatore scalare virgola altrove che in un ciclo for
?
Soluzione
Poiché lo scalare virgola Perl è una "porta" dell'operatore C virgola, questi commenti sono probabilmente a proposito:
Una volta ogni tanto, ci si trova in una situazione in cui C prevede un singola espressione, ma si hanno due cose che si vogliono dire. Più comune (e in effetti l'unico comune) esempio è in un ciclo
for
, specificamente il primo e il terzo controllo espressioni. E se (ad esempio) vogliono avere un ciclo in cuii
conta dal0
a10
allo stesso tempo chej
il conto alla rovescia da10
a0
?
Così, il vostro istinto che è soprattutto utile in for
loop è una buona, credo.
Altri suggerimenti
Di tanto in tanto lo uso al condizionale (a volte chiamato erroneamente "ternario") operatore, se il codice è più facile da leggere rispetto a romperlo fuori in un vero e proprio if / else:
my $blah = condition() ? do_this(), do_that() : do_the_other_thing();
Potrebbe essere utilizzato anche in qualche espressione in cui l'ultimo risultato è importante, come ad esempio in un'espressione grep
, ma in questo caso è proprio la stessa, come se un punto e virgola è stato utilizzato:
my @results = grep { setup(), condition() } @list;