我想使用一个自定义类的组合方法。
如果我的课是这样的…
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/