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

前端之家收集整理的这篇文章主要介绍了是否可以在Ruby中定义带有可选参数的块?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试动态定义调用另一个带有options参数的函数函数
  1. class MyClass
  2. ["hour","minute","second"].each do |interval|
  3. define_method "get_#{interval}" do |args|
  4. some_helper(interval,args)
  5. end
  6. end
  7. def some_helper(interval,options={})
  8. # Do something,with arguments
  9. end
  10. end

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

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

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

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

>有没有办法为“get_ *”方法编写块,以便不会出现此警告?
>我是否滥用define_method?

解决方法

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

猜你在找的Ruby相关文章