我获取两个数组的列表并将它们连接成一个数组然后返回它。是否可以将我的.each do语句简化为一行?另外,写一个更简单的方法是什么?
def array_concat(array_1, array_2)
array_2.each do |x|
array_1.push x
end
return array_1
end
Ruby 2.1.1p76
答案 0 :(得分:4)
array_1.concat(array_2)
................................
答案 1 :(得分:4)
你可以在ruby中以各种方式实现它:
最简单的方法:
[ 1, 2, 3 ] + [ 4, 5 ]
#=> [1, 2, 3, 4, 5]
或强>
使用concat:您可以将other_array的元素追加到self
[ "a", "b" ].concat( ["c", "d"] ) #=> [ "a", "b", "c", "d" ]
Woow,两者的作用相同,那么+
和concat
之间的差异是什么。
+
会创建一个新的数组对象,而concat
会改变原始对象。
让我举例说明:
a = [1,2]
a.object_id # => 19388760
a += [3]
a.object_id # => 18971360
b = [1,2]
b.object_id # => 18937180
b.concat [3]
b.object_id # => 18937180
注意:在上面示例object_id
a
已更改,而b
未更改。 ;)我希望这可以帮助你理解。