-
目次(まとめ)
- ◾️ 繰り返し処理は "for" 文を使うのが基本
- ◾️ 配列が与えられているときには "each" メソッドや "each_index" メソッドを使用
Ruby初心者です。Rubyで繰り返し処理をしたいけど方法がわかりません。他のプログラミング言語と同じように "for" 文を使うことはできますか?
もちろんRubyでも "for" 文を使って繰り返し処理をすることができます。他にも "each" メソッドを使って繰り返し処理をすることが可能です。
今回の記事では、繰り返し処理を行うために基本となる "for" 文と、 "each" メソッド、"each_index" メソッドを紹介します。
繰り返し処理は "for" 文を使うのが基本
いろいろなプログラミング言語がありますが、繰り返し処理を行うときには "for" 文を使用するのが基本です。
例1:数字を使って繰り返す
繰り返し処理を何回行うかということを指定できるのであれば、以下のように実行することが可能です。
# example_1.rb for i in 1..10 do # 変数iに、1から10までの数字を入れていく (=for文の中の処理が10回繰り返される) print("Hello, World!\n") end
1から10までの数字が順番に保存される変数 "i" を準備して、"i = 1" から "i = 10" までの間、繰り返し文の中にある処理「"Hello, World!" と表示する」を行います。
実行すると、以下のように出力されます。
$ ruby example_1.rb
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
Hello, World!
例2:定義した配列の情報を使って繰り返す
すでに定義している配列があれば、その配列の情報(要素数など)を使って、配列の要素を順番にみていくような繰り返し処理をすることができます。
# example_2.rb arr = ["apple", "grape", "orange", "banana", "meron", "banana"] for i in 0..(arr.size-1) do # 変数iに、0から(配列arrの要素数-1)までの数字を入れていく (=for文の中の処理が配列の要素数回、繰り返される) print("#{arr[i]}\n") end
Rubyでは、配列の要素を "0" から数えます。
配列 "arr" には "6" 個の要素がありますが、"6" という数は "arr.size" で取得しています。
0から5 (= 6-1)までの数字が順番に保存される変数 "i" を準備して、"i = 0" から "i = 5" までの間、繰り返し文の中にある処理「"arr[i]" を表示する」を行います。例えば、"arr[0]" は "apple" に対応します。
実行すると、以下のように出力されます。
$ ruby example_2.rb
apple
grape
orange
banana
meron
banana
配列が与えられているときには "each" メソッドや "each_index" メソッドを使用
上の "example_2.rb" では、定義された配列の情報を使って "for" 文で繰り返し処理を行いましたが、同じ処理は "each" メソッドでも行うことができます。
# example_3.rb arr = ["apple", "grape", "orange", "banana", "meron", "banana"] arr.each do |s| #変数sに、配列の要素を順番に入れていく print("#{s}\n") end
また、"each_index" メソッドでも同じような処理を行うことができます。
# example_4.rb arr = ["apple", "grape", "orange", "banana", "meron", "banana"] arr.each_index do |i| #変数iに、配列の要素番号を順番に入れていく print("#{arr[i]}\n") end
"each" メソッドでは、"配列の要素" を順番にみていくことができますが、"each_index" メソッドでは、"配列の要素の番号" を順番にみていくことができます。
実行すると、以下のように出力されます。
$ ruby example_3.rb (ruby example_4.rb でも同じ結果が得られます)
apple
grape
orange
banana
meron
banana
今回の記事では、Rubyで繰り返し処理を行うときに使用する "each" と "each_index" メソッドを紹介しました。場合によって、うまく使い分けましょう。