foo ||= []
foo << :element
少し不格好な感じ。もっと慣用的な方法はありますか?
(foo ||= []) << :element
しかし、まあ。読みやすくするのは本当に面倒ですか?
どの配列でもpushメソッドをいつでも使用できます。私はそれがもっと好きです。
(a ||= []).push(:element)
次のように、 Kernel#Arrayの恩恵を受けることもできます。
# foo = nil
foo = Array(foo).push(:element)
# => [:element]
これには、次のような潜在的なアレイをフラット化するという利点があります。
# foo = [1]
foo = Array(foo).push(:element)
# => [1, :element]
また、読みやすさのために、条件なしでもう少し冗長になります。
foo = Array(foo) << :element