Comment effectue des opérations séparées par des virgules fonctionnent en Perl?

StackOverflow https://stackoverflow.com/questions/4825130

  •  26-10-2019
  •  | 
  •  

Question

Je suis en train d'étudier la programmation Perl et je suis en cours d'exécution dans des déclarations comme ceci:

return bless { }, $type;

Je sais ce que return bless { }; ferait, et je sais aussi ce que return $type; ferait, mais comment les séparant par une virgule affectent l'état, et ça marche de la même façon pour tous les opérateurs unaires?

Était-ce utile?

La solution

bénissez n'est pas un opérateur unaire, donc ce qui se passe est que $type est transmis à bless (où il est utilisé comme nom de la classe pour bénir la hashref en).

La seule chose spéciale sur le retour est que l'expression de sa puissance de droite être évalués dans la liste, scalaire ou contexte vide en fonction du contexte du sous-programme a été appelé.

Le opérateur rel="nofollow"> ne soit pas interprété différemment dans un communiqué de return qu'il serait nulle part ailleurs (sauf que vous ne pouvez pas dire que ce soit dans la liste ou un contexte scalaire en regardant la déclaration de return).

Autres conseils

fonctions Perl peut Prédéfini être appelé avec ou sans parenthèses. La plupart des gens qui viennent d'autres langues confondons ces fonctions pour des mots clés / opérateurs.

bénisse, FNUD, pousser, pop, changement, unshift, impression, split, joignez-vous, etc. sont toutes les fonctions.

Par conséquent, ces deux sont équivalentes:

 return bless { }, $type;
 return bless({ }, $type);

Mais ces deux ne sont pas:

 print 2 * 3 + 2; # prints 8
 print(2 * 3) + 2; # prints 6 (with a warning if warnings pragma is on)
scroll top