foo ||= []
foo << :element
Fühlt sich etwas klobig an. Gibt es einen idiomatischeren Weg?
foo ||= []
foo << :element
Fühlt sich etwas klobig an. Gibt es einen idiomatischeren Weg?
Antworten:
(foo ||= []) << :element
Aber meh. Ist es wirklich so beschwerlich, es lesbar zu halten?
foosich um einen komplexeren Ausdruck handelt, z. B. einen (verschachtelten) Hash, in dem Sie nach Werten suchen, ist dies eine gute Möglichkeit, um zu vermeiden, dass die Werte mehrmals nachgeschlagen werden oder eine andere Variable für den nachgeschlagenen Array-Wert ausgegeben wird.
Sie können auch vom Kernel # Array profitieren , wie zum Beispiel:
# foo = nil
foo = Array(foo).push(:element)
# => [:element]
Dies hat den Vorteil, dass ein potenzielles Array abgeflacht wird, z.
# foo = [1]
foo = Array(foo).push(:element)
# => [1, :element]
foo = fooSätze foozu , nilwenn foonicht definiert ist. Auch Kernel#Arraynicht abflachen foo. Es wird nur zurückgegeben, foowenn es sich um ein Array handelt.
(foo ||= []) << :element, aber ich finde es hässlicher.