Comment effectue des opérations séparées par des virgules fonctionnent en Perl?
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?
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é.
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)