foo ||= []
foo << :element
Czuje się trochę niezdarnie. Czy jest bardziej idiomatyczny sposób?
foo ||= []
foo << :element
Czuje się trochę niezdarnie. Czy jest bardziej idiomatyczny sposób?
Odpowiedzi:
(foo ||= []) << :element
Ale ja. Czy to naprawdę takie uciążliwe, aby było to czytelne?
foosamo w sobie jest bardziej złożonym wyrażeniem, takim jak (zagnieżdżony) skrót, w którym wyszukujesz wartości, jest to dobry sposób na uniknięcie wielokrotnego wyszukiwania wartości lub wydawania innej zmiennej na wyszukaną wartość tablicy.
Możesz także skorzystać z Kernel # Array , na przykład:
# foo = nil
foo = Array(foo).push(:element)
# => [:element]
który ma tę zaletę, że spłaszcza potencjalną tablicę, na przykład:
# foo = [1]
foo = Array(foo).push(:element)
# => [1, :element]
foo = foozestawy foodo nilkiedy foojest niezdefiniowane. Ponadto Kernel#Arraynie spłaszcza się foo. Po prostu zwraca, foojeśli jest to Array.
(foo ||= []) << :element, ale uważam, że jest brzydsze.