yieldを覚えたい

Rubyのyieldについて調べたことをメモ。


メソッドをブロックつきで呼び出すと
呼ばれたメソッド内のyieldの箇所でブロックの処理が実行される

そのとき、yieldの引数がブロックの引数に

ブロックからメソッドに値を返すこともできる
ブロック内で最後に評価された式の値がyieldの戻り値(?)として帰ってくる。

def find
  @ary = [1, 3, 5, 7, 9]
  for i in 0...@ary.size
    value = @ary[i]
    return value if yield(value)
  end
  return nil
end

puts find{|v| v*v > 30 } #=> 7