for文
「while」文や「until」文は指定した条件式によって繰り返しを継続するかどうかを判断していましたが、「for」文ではあらかじめ指定したオブジェクトから順に値を取り出しながら繰り返しを行います。
「for」文の書式は次のようになっています。
for 変数 in オブジェクト do 実行する処理1 実行する処理2 end
※「do」は省略可能です。
「for」文では繰り返しが1回行われるたびにオブジェクトに対して「each」メソッドが実行し取得した要素などを変数に代入します。よって「for」文で指定できるオブジェクトは「each」メソッドを持ったオブジェクトでなければなりません。例えば配列やハッシュ、範囲オブジェクトなどが該当します。
※配列やハッシュは別のページで詳しく見ていきます。範囲オブジェクトは次のページの「範囲オブジェクト」を参照して下さい。複数の要素を持つオブジェクトと考えて下さい。
例えば次のように使います。
for num in 1..3 do print("num = ", num, "¥n") end print("End")
ここで「1..3」は範囲オブジェクトと呼ばれるものです。「for」文の中で指定されると最初の値から最後の値までを順に要素として取り出します。
実際の実行される流れは次のようになります。
1) 範囲オブジェクトから「1」を取り出し変数「num」に代入 2) 変数「num」の値を出力 3) 「end」まで達したので再度「for」文の先頭へ移動 4) 範囲オブジェクトから「2」を取り出し変数「num」に代入 5) 変数「num」の値を出力 6) 「end」まで達したので再度「for」文の先頭へ移動 7) 範囲オブジェクトから「3」を取り出し変数「num」に代入 8) 変数「num」の値を出力 9) 「for」文が終了 10) 「End」を出力
このように「for」文ではあらかじめ指定したオブジェクトから要素を全て取り出すと繰り返しは終了します。その為、「while」文や「until」文のように条件式を変化させるような処理は必要ありません。
サンプルプログラム
では簡単なプログラムで確認して見ます。
#! ruby -Ku require "kconv" print(Kconv.tosjis("繰り返し開始¥n")) for num in 1..3 do print("num = ", num, "¥n") end print(Kconv.tosjis("繰り返し終了¥n"))
上記のプログラムを「test3-1.rb」として保存します。文字コードはUTF-8です。そして下記のように実行して下さい。
( Written by Tatsuo Ikura )