相关疑难解决方法(0)

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

我正在尝试动态定义调用另一个带有options参数的函数的函数:

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
Run Code Online (Sandbox Code Playgroud)

我希望能够以这两种方式在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)
Run Code Online (Sandbox Code Playgroud)

在第二次拨打分钟时,我看到了这个警告:

警告:块参数的多个值(0表示1)

  1. 有没有办法为"get_*"方法编写块,以便不会出现此警告?
  2. 我在滥用define_method吗?

ruby

7
推荐指数
2
解决办法
5338
查看次数

标签 统计

ruby ×1