5-3-3 配列・ハッシュのeachメソッドの書式

配列のeachメソッドの書式

配列オブジェクトにドット(.)を記述し、その後eachメソッドを記述します。

半角スペースの後、ブロックを記述し直後にブロックに渡す値を|変数|で定義します。

繰り返し実行する処理をブロックの中に記述するのはtimesメソッド同様です。
配列のeachメソッドの書式をまとめると以下の通りです。

配列.each do |変数|
  # 配列の数分、処理を繰り返す
end

ハッシュのeachメソッドの書式

ハッシュのeachメソッドの基本的な書式は配列の場合と似ています。

違うのは、変数の数によって挙動が異なる点です。変数が1つの場合は、ハッシュに定義されたうちの1つのキーと値のペアの配列が代入されます。

ここではキーと値のペアのハッシュではなく、配列である点に注意が必要です。

変数が2つの場合は、ハッシュに定義されたうちの1つのキーが1番目に定義された変数に代入され、値が2番目に定義された変数に代入されます。

ハッシュのeachメソッドの書式をまとめると以下の通りです。

# 変数が1つの場合
ハッシュ.each do |変数(キーと値の配列)|
  # ハッシュの数分、処理を繰り返す
end

# 変数が2つの場合
ハッシュ.each do |キー, 値|
  # ハッシュの数分、処理を繰り返す
end

Rubyの改行とセミコロン(;

改行はプログラムの区切りとして用いられます。Rubyにおいて、改行の代用として、セミコロン(;)を使用することができます。

前ページ「5-3-2 eachメソッドを使ってみよう」で記述したプログラムでは、eachのブロックでp key; p valueと記述しましたが、これは改行で書き換えると以下です。

p key
p value

eachメソッドの書式のまとめ

  • 配列やハッシュに対して繰り返し処理を行うにはeachメソッドを使う
  • eachメソッドの繰り返し処理ブロックに配列やハッシュの要素を変数に代入して利用できる
  • eachメソッドは配列とハッシュで動作が異なる