在Ruby中,如何在不创建额外嵌套层的情况下将嵌套数组添加到数组中?

时间:2012-11-07 02:51:53

标签: ruby arrays

我正在尝试做一些与此类似的事情

collection = []
pair_one = [[:ae1,:be1],[:ae2,:be2]]
collection << pair_one
pair_two = [[:ae3,:be3],[:ae4,:be4]]
collection << pair_two

问题在于collection是这样的:

[[[:ae1, :be1], [:ae2, :be2]], [[:ae3, :be3], [:ae4, :be4]]] 

我希望它是这样的:

[[:ae1, :be1], [:ae2, :be2], [:ae3, :be3], [:ae4, :be4]]

我应该使用哪种方法代替<<

基本上我想将pair_onepair_two内容添加到collection,而不是数组本身。什么数组方法逃避了我的记忆?

1 个答案:

答案 0 :(得分:2)

您可以使用concat+=|=

·concat以避免不必要的对象创建 ·|=消除重复。

collection = []
#=> []
pair_one = [[:ae1,:be1],[:ae2,:be2]]
collection += pair_one
#=> [[:ae1, :be1], [:ae2, :be2]]
pair_two = [[:ae3,:be3],[:ae4,:be4]]
collection += pair_two
#=> [[:ae1, :be1], [:ae2, :be2], [:ae3, :be3], [:ae4, :be4]]