gpt4 book ai didi

ruby - 是否可以在 Ruby 中定义带有可选参数的 block ?

转载 作者:数据小太阳 更新时间:2023-10-29 06:55:57 26 4
gpt4 key购买 nike

我正在尝试动态定义调用另一个采用选项参数的函数的函数:

class MyClass
["hour", "minute", "second"].each do |interval|
define_method "get_#{interval}" do |args|
some_helper(interval, args)
end
end
def some_helper(interval, options={})
# Do something, with arguments
end
end

我希望能够以这两种方式调用 MyClass 的不同方法(有和没有可选参数):

mc = MyClass.new
mc.get_minute( :first_option => "foo", :second_option => "bar")
mc.get_minute # This fails with: warning: multiple values for a block parameter (0 for 1)

在第二次调用 minute 时,我看到了这个警告:

warning: multiple values for a block parameter (0 for 1)

  1. 有没有办法为“get_*”方法编写代码块,这样就不会出现此警告?
  2. 我是否在滥用 define_method?

最佳答案

您需要做的唯一更改是将 args 更改为 *args* 表示 args 将包含 block 的可选参数数组。

关于ruby - 是否可以在 Ruby 中定义带有可选参数的 block ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/451689/

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