Создание или добавление к массиву в Ruby


foo ||= []
foo << :element

чувствует себя немного неуклюжим. Есть ли более идиоматические способ?

3 69

3 ответа:

(foo ||= []) << :element

но meh. Это действительно так обременительно, чтобы держать его читаемым?

вы всегда можете использовать метод push на любом массиве. Мне это нравится больше.

(a ||= []).push(:element)

вы также можете извлечь выгоду из Ядра#Массив, например:

# foo = nil
foo = Array(foo).push(:element)
# => [:element]

который имеет преимущество сглаживания потенциального массива, например:

# foo = [1]
foo = Array(foo).push(:element)
# => [1, :element]