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?

È stato utile?

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)
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top