foo ||= []
foo << :element
感觉有点笨拙。还有更惯用的方法吗?
Answers:
(foo ||= []) << :element
但是。保持可读性真的很麻烦吗?
foo它本身是一个更复杂的表达式,例如在其中查找值的(嵌套)哈希,这是避免多次查找值或为查找的数组值花费另一个变量的一种好方法。
您还可以从Kernel#Array中受益,例如:
# foo = nil
foo = Array(foo).push(:element)
# => [:element]
它的优点是可以平整潜在的数组,例如:
# foo = [1]
foo = Array(foo).push(:element)
# => [1, :element]
foo = foo设置foo为nilwhen的Ruby中是否总能保证它foo。而且,Kernel#Array不会变平foo。它只是返回foo一个数组。
(foo ||= []) << :element,但我发现它比较难看。