gpt4 book ai didi

ruby - 如何在传递的 block 中引用对象的参数?

转载 作者:太空宇宙 更新时间:2023-11-03 16:42:06 24 4
gpt4 key购买 nike

我正在尝试引用随对象一起传递的 block 内对象的参数之一。

def command(attributes = {}, &block)
yield
end

command(attr_1: 'Open Mike Night',
attr_2: 2033392,
attr_3: [9.29, 10.08, 12.32]) do |event|

event.message.delete

puts "#{self.attributes[:attr_1]}" # <-- That didn't work.

end

这样的事情是否可能?如果可能,我将如何着手去做?我应该检查什么?

最佳答案

在我的脑海中,你可以做这样的事情。需要注意的是,我不知道这是否适合生产代码。

此代码通过遍历参数哈希的键为每个键创建实例变量。然后当我们调用 command 时,我们可以使用相应的 instance_variable 引用 block 中每个键的值:

def command(attributes = {}, &block)
attributes.each_key { |key|
instance_variable_set("@#{key}",attributes[key])
}
yield
end

command(attr_1: 'Open Mike Night',
attr_2: 2033392,
attr_3: [9.29, 10.08, 12.32]) do |event|

puts "#{@attr_1}"
end

打印:

Open Mike Night

关于ruby - 如何在传递的 block 中引用对象的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45338874/

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