Procとyield
code:ruby
def my_method(&block)
block.call
end
my_proc = Proc.new { puts "Hello World!" }
my_method(&my_proc) # Hello World!
code: ruby
def my_method
yield
end
my_proc = Proc.new { puts "Hello World!" }
my_method(&my_proc) # Hello World!
Procは、ブロックをオブジェクトとして扱えるようにするクラス
&を使うことで、my_procをブロックとして渡すことができる
yieldはブロックを呼び出す
公式から引用
code: ruby
# ブロック付きメソッドの定義、
# その働きは与えられたブロック(手続き)に引数1, 2を渡して実行すること
def foo
yield(1,2)
end
# fooに「2引数手続き、その働きは引数を配列に括ってpで印字する」というものを渡して実行させる
foo {|a,b|
# 今度は「2引数手続き、その働きは足し算をしてpで印字する」というものを渡して実行させる
foo {|a, b|
p a + b
} # => 3 (要するに p 1 + 2 を実行した)