dreamedge.net

イテレータの定義

2009-01-01T08:36:00+0000

Arrayクラスのeachメソッドみたいなイテレータを書く方法.
”block_given?”と”yield”を使う.

class TestClass
  def initialize(arr)
    @arr = arr
  end

  def each_data
    # block_given? は、メソッドがブロックを渡されて
    # 呼ばれたかどうかを判定する組み込み関数
    if block_given?
      @arr.each do |data|
        yield(data)
      end
    end
  end
end