Was bedeutet a || = in Ruby? [Duplikat]

8

Was bedeutet die untere Zeile?

%Vor%

in irb gibt es immer die Klasse von a als Hash für beide obigen Zeilen zurück. Vielen Dank im Voraus.

    
doel 08.03.2011, 08:43
quelle

3 Antworten

16

||= 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.

%Vor%

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 .

    
Matthew Scharley 08.03.2011 08:48
quelle
0

Es bedeutet

%Vor%

d. h.

%Vor%     
Dom De Felice 08.03.2011 08:46
quelle
0

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.

    
RubyFanatic 08.03.2011 08:48
quelle

Tags und Links