对数组的每个元素调用一次,将该元素作为参数传递

Pur*_*n.. 2 ruby methods

我在使用Ruby块时遇到一些困难,传入一个方法.

在下面的例子中,我想从Box实例中显示@array的每个元素(使用.each方法):

class Box
  def initialize
    @array = [:foo, :bar]
  end

  def each(&block)
    # well, hm..
  end
end

a = Box.new
a.each { |element| puts element }
Run Code Online (Sandbox Code Playgroud)

Pat*_*gan 6

您真的只需要委托@array上的每个方法并将其传递给块.此外,您可以包含Enumerable mix-in以获取对其提供的方法的访问权限(例如map,inject等...):

class Box
  include Enumerable

  def initialize
    @array = [:foo, :bar]
  end

  def each(&block)
    @array.each(&block)
  end
end
Run Code Online (Sandbox Code Playgroud)

有关Enumerable模块的更多信息,请参阅文档.