Wie funktioniert das von Kommas getrennte Operationen in Perl?
Frage
Ich studiere derzeit die Perl -Programmierung und stieß auf solche Aussagen zu:
return bless { }, $type;
ich weiß was return bless { };
würde tun, und ich weiß auch was return $type;
Würde es tun, aber wie wirkt sich die Trennung durch ein Komma auf die Aussage aus und funktioniert es für alle unären Betreiber auf die gleiche Weise?
Lösung
segnen ist kein unärer Operator, also ist das also das $type
wird an bless
(wo es als Name der Klasse verwendet wird, um den Hashref zu segnen).
Das einzige Besondere an Rückkehr ist, dass der Ausdruck auf seiner rechten Hand in der Liste, Skalar oder einem voiden Kontext bewertet werden kann, abhängig vom Kontext, in dem die Unterroutine aufgerufen wurde.
Das Komma -Betreiber wird in a nicht anders interpretiert return
Aussage als es irgendwo anders wäre (außer dass Sie nicht sagen können, ob sie sich in der Liste oder im skalaren Kontext befindet, indem Sie sich das ansehen return
Aussage).
Andere Tipps
Vordefinierte Perlfunktionen können mit oder ohne Klammern aufgerufen werden. Die meisten Leute aus anderen Sprachen verwirren diese Funktionen für Schlüsselwörter/Operatoren.
Segne, undf, Push, Pop, Shift, Unschuh, Druck, Split, Join usw. sind alle Funktionen.
Daher sind diese beiden gleichwertig:
return bless { }, $type;
return bless({ }, $type);
Aber diese beiden sind nicht:
print 2 * 3 + 2; # prints 8
print(2 * 3) + 2; # prints 6 (with a warning if warnings pragma is on)