Wie wollen Sie initialisieren die Variablen in Ruby?
Gibt es irgendwelche Unterschiede zwischen den folgenden Arten der Initialisierung von Variablen?
@var ||= []
@var = [] if @var.nil?
@var = @var || []
Teilen Sie bitte Ihre Weise die Initialisierung einer variable machen und die pros & cons.
Verwandte Frage: stackoverflow.com/questions/963868/...
InformationsquelleAutor PeterWong | 2010-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
@var ||= []
und@var = @var || []
gleich sind, wird esvar
zu[]
wenn esfalse
odernil
@var = [] if @var.nil?
spezifischer ist - wird re-setvar
zu[]
nur, wenn es gleichnil
@var
null, in der||
Fall? oder wird.nil?
einen kleinen overhead?Ja, alle diese Beispiele überprüft
nil
. 1. und 3. prüft auch, obfalse
InformationsquelleAutor fantactuka
Wenn Sie Warnhinweise, die auf (und sollten!),
@var ||= []
verhält sich anders zu@var = @var || []
:Wenn Sie möchten, um zu überprüfen, ob
@var
definiert ist oder nicht, und Sie sind glücklich, wenn esnil
oderfalse
, die Sie verwenden können,Dies funktioniert nicht mit lokalen Variablen, obwohl, wie erwähnt, in In Ruby, warum nicht
foo = true, es sei denn definiert?(foo)
die Zuordnung?Wenn Sie mit der version 1.9.2,
irb -w
oderirb -d
wird wiederum auf die Warnungen (ich weiß nicht, ob die ähnlichirb -v
funktionieren wird). Für frühere Versionen, müssen Sie die Einstellung$VERBOSE
selbst. (irb -d
arbeiten wurde das Ergebnis der mein bugfix, das eine Folge von einer anderen person, SO Frage)InformationsquelleAutor Andrew Grimm