我在使用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)
您真的只需要委托@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模块的更多信息,请参阅文档.