Menu
Coddy logo textTech

ブロックとは?

CoddyのRubyジャーニー「ロジックとフロー」セクションの一部 — レッスン 15/56。

あなたはすでにブロックを書いてきました。each do |x| ... end と書くたびに、doend の間の部分はブロック(メソッドに渡されるコードの塊)でした。

[1, 2, 3].each do |n|
  puts n * 2
end

ここで、eachは配列のメソッドであり、do |n| ... endがブロックです。eachは各要素に対してブロックを一度ずつ実行し、その要素をnとして渡します。

ブロックは変数に格納する独立したオブジェクトではなく、メソッド呼び出しに直接結びついています。メソッドはブロックを受け取るか受け取らないかのどちらかであり、ほとんどのイテレーションメソッド(eachmapselecttimes)は、ブロックを1つ受け取るように設計されています。

3.times do |i|
  puts "hi #{i}"
end

ブロックなしでメソッドを呼び出すと、その動作が変わります。ブロックを指定しない [1,2,3].map は、変換された配列ではなくエニュメレータを返します。そのため、ブロックはそのメソッドが何を意味するかの一部なのです。

challenge icon

チャレンジ

初心者

入力から整数 n を読み込みます。0 から n - 1 までの i の各値に対して、times メソッドとブロックを使用してメッセージ Iteration <i> を出力してください。

入力が 3 の場合、出力は以下のようになります:

Iteration 0
Iteration 1
Iteration 2

チートシート

ブロックは、do |param| ... end の間に記述され、メソッドに渡されるコードの塊です:

[1, 2, 3].each do |n|
  puts n * 2
end

times を使用してブロックを n 回繰り返します。このとき i0 から n - 1 まで変化します:

3.times do |i|
  puts "hi #{i}"
end

自分で試してみよう

n = gets.to_i

# TODO: 各反復を出力するために、ブロック付きの n.times を使用してください
quiz icon腕試し

このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。

ロジックとフローのすべてのレッスン