Rubyのyieldが難しい。
手続き型オブジェクトがいまいちわからなかったので下記のサイトを見て
ようやく入口に立つことができた感じ。
Ruby の yield って結局なんなの?
http://d.hatena.ne.jp/yoshidaa/20090511/1241967137
Procは{}を引数としてメソッドに渡すことができるからやはりイテレーターと相性がよいわけです。
それで自作のイテレーターを作ってみたいと思う。
まずは単純な例として。
def foo yield yield yield end
これでyieldを3回呼び出すメソッドを作成できました。
yiled(ブロック)に引数を渡すにはyiled文の後ろに続けて書くことができます。
def foo(a,b,c) i = 0 while(i < a) yield i + b + c i += 1 end end foo(3,1,2){|x| puts x} 実行結果 =>3,4,5