Ruby 配列を反復処理する

Nurudeen Ibrahim 2023年1月30日
  1. each メソッドを使用して Ruby 配列を反復処理する
  2. for ループを使用して Ruby 配列を反復処理する
  3. reverse_each メソッドを使用して Ruby 配列を反復処理する
  4. each_with_index メソッドを使用して Ruby 配列を反復処理する
  5. map メソッドを使用して Ruby 配列を反復処理する
  6. select メソッドを使用して Ruby 配列を反復処理する
  7. reject メソッドを使用して Ruby 配列を反復処理する
Ruby 配列を反復処理する

Ruby の配列クラスには Enumerable ミックスインが含まれているため、いくつかのトランスバーサルメソッドがあります。このチュートリアルでは、これらの列挙可能なメソッドと、Ruby で配列を反復処理する他の方法を見ていきます。

each メソッドを使用して Ruby 配列を反復処理する

これは、Ruby で最も使用されているイテレーターです。

コード例:

fruits = ['Orange', 'Apple', 'Banana']

fruits.each do |fruit|
  puts fruit
end

出力:

Orange
Apple
Banana

for ループを使用して Ruby 配列を反復処理する

この方法は望ましくない副作用をもたらす可能性があるため、お勧めしません。

コード例:

fruits = ['Orange', 'Apple', 'Banana']

for fruit in fruits
  puts fruit
end

出力:

Orange
Apple
Banana

上記の例で fruit 変数が以前に定義されている場合、for ループはそれを fruits 配列の最後の要素で上書きします。これはスコープの問題であり、動作を以下に示します。

コード例:

fruit = 'Mango'
fruits = ['Orange', 'Apple', 'Banana']

for fruit in fruits
  puts fruit
end

puts fruit

出力:

Orange
Apple
Banana
Banana

reverse_each メソッドを使用して Ruby 配列を反復処理する

名前が示すように、これは each メソッドのように機能しますが、順序が逆になります。

コード例:

fruits = ['Orange', 'Apple', 'Banana']

fruits.reverse_each do |fruit|
  puts fruit
end

出力:

Banana
Apple
Orange

each_with_index メソッドを使用して Ruby 配列を反復処理する

このメソッドは、配列の各要素とインデックスを取得する必要がある状況で役立ちます。

コード例:

fruits = ['Orange', 'Apple', 'Banana']
fruits.each_with_index do |fruit|
  puts "#{index}. #{fruit}"
end

出力:

0. Orange
1. Apple
2. Banana

上記の例は、配列を反復処理する最も簡単な方法を示していますが、このメソッドは通常、配列をトラバースしてその各要素に対していくつかの操作を実行する必要がある場合に便利です。たとえば、電子メールアドレスのリストを反復処理したり、それらのそれぞれにメッセージを送信します。

このチュートリアルで説明する残りのメソッドは、配列を別の配列に変換するという意味で、上記のメソッドとは少し異なります。

map メソッドを使用して Ruby 配列を反復処理する

配列の各要素を変更して、それらを新しい配列として使用する場合に便利です。

コード例:

numbers = [2, 4, 6]

doubles = numbers.map do |n|
  n * 2
end

puts doubles

出力:

[4, 8, 12]

collect メソッド、map のエイリアスもあり、どちらも同じように動作することに注意してください。

select メソッドを使用して Ruby 配列を反復処理する

名前が示すように、select メソッドを使用すると、特定の論理条件を満たす配列の特定の要素のみを選択できます。また、新しい配列を生成します。

コード例:

numbers = [2, 3, 4, 5, 6, 7, 8, 9]

perfect_squares = numbers.select do |n|
  Math.sqrt(n) % 1 == 0
end

puts perfect_squares

出力:

[4, 9]

select のエイリアスである find_all メソッドもあり、どちらも同じように動作することに注意してください。

reject メソッドを使用して Ruby 配列を反復処理する

reject メソッドは select の反対であり、配列の特定の要素を拒否し、残りの要素を新しい配列として返す必要がある場合に便利です。

コード例:

numbers = [-2, -1, 0, 1, 2, 3]

positive_integers = numbers.reject do |n|
  n < 1
end

puts positive_integers

出力:

[1, 2, 3]

関連記事 - Ruby Array