Ruby 提供了几种合并数组的方法,每种方法都有其自身的特点。本指南将探讨最常用和最高效的方法,并提供示例来说明它们的行为。
目录
1. 使用concat
合并数组
concat
方法通过将另一个数组的元素添加到其末尾来修改原始数组。这是一个就地操作,直接改变它被调用的数组。
array1 = [1, 2, 3]
array2 = [4, 5, 6]
array1.concat(array2)
puts array1 # 输出: [1, 2, 3, 4, 5, 6]
puts array2 # 输出: [4, 5, 6] (array2 保持不变)
2. 使用+
运算符合并数组
+
运算符创建一个包含两个数组所有元素的新数组。原始数组保持不变。
array1 = [1, 2, 3]
array2 = [4, 5, 6]
merged_array = array1 + array2
puts merged_array # 输出: [1, 2, 3, 4, 5, 6]
puts array1 # 输出: [1, 2, 3] (array1 保持不变)
puts array2 # 输出: [4, 5, 6] (array2 保持不变)
3. 使用push
和展开运算符合并数组
push
方法将元素添加到数组的末尾。展开运算符 (*
) 解包另一个数组,允许你一次添加所有元素。这与concat
一样,会修改原始数组。
array1 = [1, 2, 3]
array2 = [4, 5, 6]
array1.push(*array2)
puts array1 # 输出: [1, 2, 3, 4, 5, 6]
puts array2 # 输出: [4, 5, 6] (array2 保持不变)
4. 使用append
合并数组
append
方法是push
的同义词;它们的功能相同。
array1 = [1, 2, 3]
array2 = [4, 5, 6]
array1.append(*array2)
puts array1 # 输出: [1, 2, 3, 4, 5, 6]
puts array2 # 输出: [4, 5, 6] (array2 保持不变)
5. 使用union
合并数组
union
方法(或其别名|
运算符)返回一个新数组,其中只包含两个输入数组中的唯一元素。重复元素将被消除。
array1 = [1, 2, 3, 3]
array2 = [3, 4, 5]
merged_array = array1.union(array2)
puts merged_array # 输出: [1, 2, 3, 4, 5]
puts array1 # 输出: [1, 2, 3, 3] (array1 保持不变)
puts array2 # 输出: [3, 4, 5] (array2 保持不变)
6. 使用|
运算符合并数组
这是union
方法的简写,产生相同的结果。
array1 = [1, 2, 3, 3]
array2 = [3, 4, 5]
merged_array = array1 | array2
puts merged_array # 输出: [1, 2, 3, 4, 5]
puts array1 # 输出: [1, 2, 3, 3] (array1 保持不变)
puts array2 # 输出: [3, 4, 5] (array2 保持不变)
7. 结论
Ruby 提供了多种数组合并方法,允许你根据具体需求选择最佳方法。考虑是否需要就地修改或新数组,以及是否应保留重复元素。对于创建新数组,+
运算符和union
方法通常具有更好的可读性。concat
和push
对于直接修改数组非常高效。理解这些细微差别有助于编写清晰高效的 Ruby 代码。