||=
ist ein Zuweisungsoperator, der den zugewiesenen Wert zurückgibt. a ||= b
ist gleichbedeutend mit der Anweisung a || a = b
, was bedeutet, dass, wenn a
gesetzt ist und einen wahren Wert hat, es gleich bleibt, andernfalls wird der Wert von b
übernommen.
In Ihrem Beispiel wird a
nur einmal gesetzt, was das Verhalten erklärt, das Sie bemerkt haben.
Typische Verwendung, die ich gesehen habe, ist statische Variablen zu initialisieren, dh.
%Vor%BEARBEITEN:
Es muss erwähnt werden, dass ||=
ein Kurzschlussoperator ist. Dies bedeutet, dass es im Fall von a ||= b
nur eine Zuweisung von a = b
geben wird. Es wird niemals eine Zuweisung von a = a
geben, falls a
nicht falsch ist. Dies ist ein wenig pedantisch, aber in einigen (sehr) Randfällen wichtig.
Weitere Informationen erhalten Sie in der endgültigen Liste der || = Themen und Seiten .
Sie können "a || = {}" so lesen. Wenn "a" definiert ist, ignoriere den Ausdruck auf der rechten Seite. Andernfalls setze "a" gleich dem Ausdruck auf der rechten Seite. In der ersten Zeile ist "a" wahrscheinlich undefiniert, so dass die Zeile "a" auf den Ausdruck rechts setzt, der der leere Hash ist. In der zweiten Zeile wird "a" bereits als {} gesetzt, so dass der Ausdruck auf der rechten Seite den Wert 1 ignoriert.
Tags und Links ruby