foo ||= []
foo << :element
Відчувається трохи незграбно. Чи є більш ідіоматичний спосіб?
foo ||= []
foo << :element
Відчувається трохи незграбно. Чи є більш ідіоматичний спосіб?
Відповіді:
(foo ||= []) << :element
Але я. Невже так важко тримати його читабельним?
fooсаме по собі є більш складним виразом, як (вкладений) хеш, в якому ви шукаєте значення, це хороший спосіб уникнути перегляду значень багаторазово або витратити іншу змінну для шуканого значення масиву.
Ви також можете отримати вигоду з масиву ядра # , наприклад:
# foo = nil
foo = Array(foo).push(:element)
# => [:element]
що має перевагу згладжування потенційного масиву, наприклад:
# foo = [1]
foo = Array(foo).push(:element)
# => [1, :element]
foo = fooвстановлює fooв nilколи fooне визначений. Крім того, Kernel#Arrayне сплющується foo. Він просто повертається, fooякщо це масив.
(foo ||= []) << :element, але я вважаю це потворнішим.