我想使用一个自定义类的组合方法。
如果我的课是这样的…

class MyClass
  def initialize
    @data = []
  end
  def to_a
    @data
  end
end

我可以叫这个…
myobj = MyClass.new
myobj.to_a.combination(2) {|a,b| puts "#{a} #{b}" }

但我更希望有这个…
myobj.combination {|a,b| puts "#{a} #{b}" }

我试图编写一个类方法来包装组合方法,传递块。但没用。
def combination(&block)
  @data.to_a.combination(2) block.call
end

另外,有人知道为什么组合在数组类中而不是可枚举的吗?我本以为在那里会更有用。

最佳答案

块是数组组合的一种特殊类型的参数(很像您自己定义的那样)。正确的调用是:

def combination(&block)
  @data.to_a.combination(2, &block)
end

关于ruby - 带有块的方法的包装,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8093203/

10-11 08:34