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 回答