Come funziona separati da virgola operazioni funzionano in perl?
Domanda
Attualmente sto studiando la programmazione Perl e sono in esecuzione in dichiarazioni come questa:
return bless { }, $type;
So cosa return bless { };
avrebbe fatto, e so anche che cosa return $type;
avrebbe fatto, ma come si fa separandoli da una virgola influenzare la dichiarazione, e funziona allo stesso modo per tutti gli operatori unari?
Soluzione
benedite non è un operatore unario, così accade che $type
viene passato a bless
(dove viene utilizzato come nome della classe per benedire la rifhash in).
L'unica cosa di speciale ritorno è che l'espressione del suo potere a destra essere valutata in lista, scalare, o un contesto vuoto a seconda del contesto della subroutine è stato chiamato in.
Il virgola operatore non è interpretata in modo diverso in una dichiarazione return
quanto sarebbe altrove (ad eccezione che non si può dire se è in elenco o un contesto scalare, cercando in dichiarazione return
).
Altri suggerimenti
funzioni predefinite Perl può essere chiamato con o senza parentesi. La maggior parte di persone provenienti da altre lingue confondono queste funzioni per parole chiave / operatori.
benedire, undef, spinta, pop, spostamento, non innesto, stampa, dividere, unire, ecc sono tutte le funzioni.
Quindi, questi due sono equivalenti:
return bless { }, $type;
return bless({ }, $type);
Ma questi due non sono:
print 2 * 3 + 2; # prints 8
print(2 * 3) + 2; # prints 6 (with a warning if warnings pragma is on)