Ruby Fundamentals

Ruby配列のマージをマスターする

Spread the love

Rubyには配列を結合する様々な方法があり、それぞれに特徴があります。このガイドでは、最も一般的で効率的なメソッドを解説し、動作を示す例を示します。

目次

  1. concatを使った配列の結合
  2. +演算子を使った配列の結合
  3. pushメソッドとスプレッド演算子を使った配列の結合
  4. appendメソッドを使った配列の結合
  5. unionメソッドを使った配列の結合
  6. |演算子を使った配列の結合
  7. 結論

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メソッドは一般的に可読性が優れています。concatpushは配列を直接変更するのに効率的です。これらの違いを理解することで、明確で効率的なRubyコードを記述できます。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です