Rubyには配列を結合する様々な方法があり、それぞれに特徴があります。このガイドでは、最も一般的で効率的なメソッドを解説し、動作を示す例を示します。
目次
concat
を使った配列の結合+
演算子を使った配列の結合push
メソッドとスプレッド演算子を使った配列の結合append
メソッドを使った配列の結合union
メソッドを使った配列の結合|
演算子を使った配列の結合- 結論
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コードを記述できます。