Ich habe jetzt eine Zeit lang Rubin benutze, und ich halte dies sah:Was bedeutet || = tun in Ruby
foo ||= bar
Was ist das?
Ich habe jetzt eine Zeit lang Rubin benutze, und ich halte dies sah:Was bedeutet || = tun in Ruby
foo ||= bar
Was ist das?
wird diese bar
-foo
zuweisen, wenn (und nur dann) foo
nil
oder false
ist.
EDIT: oder falsch, danke @mopoke.
Assign bar
-foo
es sei denn foo
ist ein wahrer Wert (nicht false
oder nil
).
Sollte sein: wenn nicht "foo" truthy ist, wo truthy bedeutet: nicht "false" oder "nil". – yfeldblum
Operator || = ist eine Kurzform des Ausdrucks:
x = x || "Default"
Operator || = kann wie für die Code-Kurzschrift werden:
x = "(einige Fehlerwert)", wenn x.nil?
Von: http://en.wikibooks.org/wiki/Ruby_Programming/Syntax/Operators
Wenn Sie es für eine Instanz Variable verwenden, können Sie es vermeiden wollen. Das ist, weil
@foo ||= bar
Kann eine Warnung auslösen, wenn @foo
zuvor wurde nicht initialisiert. Sie können
@foo = bar unless defined?(@foo)
oder
@foo = bar unless (defined?(@foo) and @foo)
je nachdem, ob Sie lediglich überprüfen, ob @foo initialisiert wird, oder überprüfen Sie verwenden möchten, wenn @foo Truthiness hat (dh nicht nil
oder false
) .
Oder wenn foo falsch ist. – mopoke