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?

War es hilfreich?

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)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top