gpt4 book ai didi

ruby - 带有 block 的方法的包装器

转载 作者:数据小太阳 更新时间:2023-10-29 08:40:27 24 4
gpt4 key购买 nike

我想将组合方法与自定义类一起使用。

如果我的类看起来像这样......

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}" }

我尝试编写一个类方法来包装组合方法,传递 block 。但它不起作用。

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

此外,有谁知道为什么组合在 Array 类中而不是 Enumerable 中?我原以为它在那里会更有用。

最佳答案

该 block 是 Array#combination 的一种特殊类型的参数(就像您在自己的定义中得到它一样)。正确的调用是:

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

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com