458 Stimmen

Was bedeutet ||= (oder-gleich) in Ruby?

Was bedeutet der folgende Code in Ruby?

||=

Gibt es eine Bedeutung oder einen Grund für die Syntax?

4voto

Sunda Punkte 197

||= ist eine bedingter Zuweisungsoperator

  x ||= y

ist gleichbedeutend mit

  x = x || y

oder alternativ

if defined?(x) and x
    x = x
else 
    x = y
end

3voto

Pankhuri Punkte 928

Angenommen, a = 2 y b = 3

DANN, a ||= b wird zu a Wert, d.h. 2 .

Wenn a zu einem Wert ausgewertet wird, der nicht zu false ou nil .. Deshalb ist es ll nicht bewerten b Wert.

Nehmen wir nun an a = nil y b = 3 .

Dann a ||= b wird zu 3 d.h. b Wert.

Zunächst wird versucht, den Wert von a auszuwerten, was zu nil .. so bewertete er b Wert.

Das beste Beispiel, das in ror app verwendet wird, ist :

#To get currently logged in iser
def current_user
  @current_user ||= User.find_by_id(session[:user_id])
end

# Make current_user available in templates as a helper
helper_method :current_user

Wo, User.find_by_id(session[:user_id]) wird nur dann ausgelöst, wenn @current_user vorher nicht initialisiert wird.

3voto

0r4cl3 Punkte 120

unless x x = y end

wenn x keinen Wert hat (nicht nil oder false), setze ihn gleich y

ist gleichbedeutend mit

x ||= y

3voto

SHUBHAM SHARMA Punkte 31

A ||= b

Bedeutet, dass, wenn ein Wert in 'a' vorhanden ist und Sie ihn nicht ändern wollen, dieser Wert weiter verwendet wird; wenn 'a' keinen Wert hat, verwenden Sie den Wert von 'b'.

Einfache Worte: Wenn die linke Seite nicht null ist, zeige auf den vorhandenen Wert, ansonsten zeige auf den Wert auf der rechten Seite.

2voto

mukh007 Punkte 279

Es ist wie eine faule Instanziierung. Wenn die Variable bereits definiert ist, wird dieser Wert übernommen, anstatt den Wert neu zu erstellen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X