Mit Blick auf die Dokumentation für Excel lesen , Es gibt eine Aussage, die ich nicht wirklich verstehe.
Kann jemand erklären, was $sheet -> {MaxRow} ||= $sheet -> {MinRow};
macht?
Ich verstehe, dass es ein Zuweisungsoperator ist. Allerdings verstehe ich nicht, wie ||
funktionieren soll?
Der Operator ||=
ist logisch OR-assign. Es ist ähnlich wie +=
, was add-assign ist. Es berechnet das logische OR von LHS und RHS und weist dann das Ergebnis dem LHS zu, das daher ein gültiger Lvalue sein muss.
Mit anderen Worten, genau wie
%Vor%entspricht
%Vor%können wir das sagen
%Vor%entspricht
%Vor% Nun, in Bezug auf die Aussage, auf die Sie in Ihrer Frage Bezug genommen haben, ist da etwas mehr los als in meinem obigen Beispiel. In Ihrer Anweisung ist die LHS nicht nur ein einfaches Variablentoken, sondern ein Variablentoken, das als Hashreferenz behandelt wird ( $sheet
) und dereferenziert wird, um den Wert zu erhalten, der mit der Zeichenfolge 'MaxRow'
codiert ist. Die RHS ist auch eine Hash-Dereferenzierungsoperation für $sheet
, deren Schlüssel jedoch 'MinRow'
ist. Aber das Verhalten ist das gleiche; Das können wir sagen.
entspricht
%Vor%(Hinweis: Ich möchte Hash-Schlüsselwerte immer ausdrücklich als Strings anführen, weil sie das sind, aber nicht jeder geht für diesen Grad an Explizitheit.)
Weitere Informationen zur logischen ODER-Operation finden Sie in Ссылка und für Perl-spezifische Informationen unter Ссылка (für ||
und //
) und Ссылка (für or
). Das wichtigste Zitat aus der Perl-Dokumentation zu ||
:
Binär "||" Führt eine logische ODER-Kurzschlußoperation durch. Das heißt, wenn der linke Operand wahr ist, wird der rechte Operand nicht einmal ausgewertet. Skalar- oder Listenkontext wird bei Auswertung zum rechten Operanden weitergeleitet.
Das erklärt es nicht ganz. Für den Fall, dass die LHS einen truthigen Wert ergibt (Definition siehe unten), ist der Rückgabewert der Operation ||
der Wert der LHS, ansonsten der Wert der RHS.
In Perl werden logische Werte im Allgemeinen durch 0
(oder manchmal ''
oder undef
) für false und 1
für true dargestellt. Genauer gesagt wird jeder Wert, der nicht zu den obigen drei falschen Werten gehört, als wahr behandelt, und manchmal verweisen Programmierer auf diese Unterscheidung unter Verwendung der informellen Ausdrücke "truthy" und "falsy". IOW, 0
, ''
und undef
sind falsch und alles andere ist truthy. Weitere Einzelheiten finden Sie Ссылка .