Menu
Coddy logo textTech

ブロックとは?

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

すでに block を書いています。each do |x| ... end と書くたびに、doend の間の部分は、メソッドに渡されるコードのまとまりである block でした。

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

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

ブロックは変数に保存する独立したオブジェクトではなく、メソッド呼び出しに直接結び付いています。メソッドはブロックを受け取るか、受け取りません。また、ほとんどの反復メソッド(eachmapselecttimes)はブロックを1つ受け取るように設計されています。

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

ブロックを指定せずにメソッドを呼び出すと、その動作が変わります。ブロックなしの [1,2,3].map は、変換された配列ではなく Enumerator を返すため、ブロックはそのメソッドの意味そのものの一部です。

challenge icon

チャレンジ

初心者

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

入力が 3 の場合、出力は次のとおりです。

Iteration 0
Iteration 1
Iteration 2

自分で試してみよう

n = gets.to_i

# TODO: n.times をブロック付きで使って各イテレーションを出力する
quiz icon腕試し

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

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

自分で練習してみよう: Rubyオンラインコンパイラ