Rubyのブロック(Block)とは?繰り返しやコールバック処理に使える便利な仕組み
Rubyのブロック(Block)は、メソッドに処理のかたまりを渡すことができる、非常に便利な機能です。
特に繰り返し処理や、コールバック的な使い方で多用されます。
Rubyでは、ブロックを使うことで簡潔で柔軟なコードを書くことができます。
ブロックとは?
ブロックは、メソッドの呼び出しに付ける処理のまとまりです。
{}
または do ... end
を使って記述します。
ブロックの基本的な書き方
3.times do
puts "こんにちは!"
end
# または
3.times { puts "こんにちは!" }
上記は「3回繰り返す」メソッドにブロックを渡して処理しています。
ブロックに引数を渡す
5.times do |i|
puts "#{i} 回目"
end
|i|
はブロックの引数で、メソッドから渡された値を受け取ることができます。
yield を使ってブロックを呼び出す
自分で定義したメソッドの中で yield
を使えば、ブロックを呼び出すことができます。
def greeting
puts "こんにちは!"
yield
puts "また会いましょう!"
end
greeting do
puts "ブロックの中です。"
end
出力結果:
こんにちは!
ブロックの中です。
また会いましょう!
ブロックに引数を渡す(yield版)
def twice
yield(1)
yield(2)
end
twice do |n|
puts "呼び出し #{n} 回目"
end
ブロックを使うメリット
- コードが簡潔になる
- 柔軟な処理を渡せる
- 繰り返し処理やコールバックに最適
do...end と {} の違い
do...end
は複数行の処理に向いている
{}
は1行の処理に向いている
ブロックのないときの処理
def maybe
if block_given?
yield
else
puts "ブロックがありません"
end
end
maybe # → ブロックがありません
maybe { puts "ありました!" } # → ありました!
まとめ
Rubyのブロック(Block)は、メソッドに処理の一部を渡すための柔軟で強力な仕組みです。
yield
を使えば、自作メソッドにもブロックを活用できるようになります。
まずは times
や each
など、標準メソッドのブロックを使いながら、自分でもブロックを受け取るメソッドを作ってみましょう!