92
foo ||= []
foo << :element

少し不格好な感じ。もっと慣用的な方法はありますか?

4

4 に答える 4

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

しかし、まあ。読みやすくするのは本当に面倒ですか?

于 2012-08-28T16:32:47.670 に答える
65

どの配列でもpushメソッドをいつでも使用できます。私はそれがもっと好きです。

(a ||= []).push(:element)
于 2012-08-28T16:36:49.407 に答える
11

次のように、 Kernel#Arrayの恩恵を受けることもできます。

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

これには、次のような潜在的なアレイをフラット化するという利点があります。

# foo = [1]
foo = Array(foo).push(:element)
# => [1, :element]
于 2018-01-09T16:39:30.787 に答える
0

また、読みやすさのために、条件なしでもう少し冗長になります。

foo = Array(foo) << :element
于 2021-11-17T01:12:05.210 に答える