Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

Ruby

【Ruby】for文の書き方と使い方の基本

Ruby for文

動画で解説を見る



開発環境

  • Ruby version: ruby 3.1.2

Rubyのfor文とは

Rubyのfor文とは、オブジェクトに対して繰り返し処理を行うことができる制御構文です。

指定したオブジェクトに含まれている要素を順番に取り出し、取り出した要素に対して繰り返し処理を行い、オブジェクトの要素が全て取り出されるまで処理が繰り返されます。

公式リファレンス:https://docs.ruby-lang.org/ja/3.1/doc/spec=2fcontrol.html#for

Rubyのfor文の書き方

Rubyのfor文の書き方を「for文の基本形」「for文の省略形」をご紹介します。

Rubyのfor文の基本形

「in」のあとに指定したオブジェクトの要素を順番に変数に代入し、「do」から「end」までの処理を実行します。

for文は、変数に代入するオブジェクトの要素が全て取り出されるまで処理が繰り返されます。

Rubyのfor文の省略形

Rubyのfor文はdoを省略することができます。

実際の開発ではdoを省略して書くことがほとんどなので、省略形で覚えるのがおすすめです。

Rubyのfor文の使い方

Rubyのfor文のよくあるパターンをサンプルコードを用いて使い方の解説をしていきます。

for文で範囲オブジェクトを繰り返し処理するパターン

まずはfor文のオブジェクトに範囲オブジェクトを指定して繰り返し処理をするパターンです。

範囲オブジェクトを指定することで、処理を決まった回数だけ繰り返すことができます。

上記は1から5までの範囲オブジェクトが順番に取り出されて変数numに代入され、範囲オブジェクトの値がなくなるまで処理を繰り返し行います。

for文で配列を繰り返し処理するパターン

次にfor文のオブジェクトに配列を指定して繰り返し処理をするパターンです。

上記は変数arrayに代入されている配列の要素に名前がまとめられています。

for文で1回目は山田、2回目は佐藤、3回目は鈴木、4回目は田中という順番に取り出されて変数nameに代入され、配列の要素がなくなるまで処理を繰り返し行います。

また、for文のオブジェクトに2次元配列を指定して繰り返し処理するパターンもあります。

上記は配列の中の配列がある状態ですが、1回目は['山田', 25, "男性"]、2回目は['佐藤', 24, "女性"]、3回目は['鈴木', 30, "男性"]、4回目は['田中', 28, "女性"]が順番に取り出されます。

そのため、1回目の配列のインデックス番号0を変数name、インデックス番号1を変数age、インデックス番号2を変数sexに代入するという形で入れ子になった要素をそれぞれ代入することができます。

for文でハッシュを繰り返し処理するパターン

次にfor文のオブジェクトにハッシュを指定して繰り返し処理をするパターンです。

上記はハッシュの要素を順番に取り出してキーと値をそれぞれループ変数key, valueに代入して処理を繰り返します。

また、for文のオブジェクトに連想配列の配列を指定して繰り返し処理するパターンもあります。

上記は2次元配列と同様ですが、ハッシュにはキーと値が割り当てられているため、変数personに代入されたハッシュにkeyを指定することでvalueを取り出しています。

Rubyのfor文とeachメソッドの違い

Rubyのfor文とeachメソッドはどちらもオブジェクトに対して繰り返し処理を行います。

そのなかでもfor文とeachメソッドの大きな違いとしては、変数が処理の中のみ有効か、それとも処理の外でも有効かという有効範囲(スコープ)が異なる点です。

for文:処理の外でも有効
eachメソッド:処理の中のみ有効

for文の場合は、以下のコードのようにfor文で定義した変数(i,total)をfor文の外からでも参照することができます。

しかしeachメソッドの場合は、変数(i,total)のスコープはブロック(do~end)内になるのでブロック外から参照しようとするとエラーが発生します。

このようにfor文とeachメソッドは同じように繰り返し処理ができますが、変数のスコープが違うということに気をつけてください。

おわりに

Rubyのeachメソッドの使い方を解説してきました。

どのようなプログラミング言語でも言えますが、どのようなパラーメータでデータが送られているかによって適切な処理が変わります。

Rubyには繰り返し処理を行うメソッドは複数用意されていますが、eachメソッドは使用頻度がかなり高いため、是非、参考にしてください。

Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

-Ruby