yieldとは
ブロック付きメソッドでブロックを呼び出すことができます。
ブロックとは
do~end や {} で囲まれた処理のかたまり
以下の処理だと「puts i」の部分をブロック
「|i|」をブロックパラメータと呼ぶ
(1..10).each do |i|
puts i
end
例1
ブロックを実行する
def hoge
yield
end
hoge do
puts "^o^"
end
=>^o^
def fuga
yield
end
fuga{
puts ";o;"
}
=>;o;
例2
yieldを複数回記述すると複数回実行される
def hogehoge
yield
yield
end
hogehoge do
puts "hoge"
end
=>hoge
hoge
例3
ブロックなしでyieldを利用した場合
def fugafuga
yield
end
fugafuga
=>LocalJumpError (no block given (yield))