日記

日本語の勉強のためのブログ

【Ruby】eachメソッドを使うときの|n|←この棒って何の意味があるの?

ちょっと説明が難しいので例を挙げると、

list = [1, 1, 2, 3, 5, 8]
list.each do |n|
  puts n
end

5.times to |n|
  puts n
end

といったコードにおける|n|の部分が何を表しているのか知りたい。

解決

|で囲まれた変数のことをブロックパラメータと呼び、メソッドによって、何が格納されるかは異なる。

  • eachメソッドでは配列の中身が順に格納される。つまり1つ目のコード例では、listの中身[1, 1, 2, 3, 5, 8]が、順にブロックパラメータnに格納されることになる。
  • timesメソッドでは現在の繰り返し回数が格納される。C言語などでよく見るfor (int n = 0; n < 10; ++n)の変数nと同じようなものである。つまり2つ目のコード例では、ブロックパラメータnに繰り返し回数0, 1, 2, 3, 4が順に格納されることになる。

参考資料

www.buildinsider.net