Я пытаюсь динамически определить функции, которые обращаются к другой функции, которая принимает параметр параметров:
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)
При втором вызове минуты я вижу это предупреждение:
предупреждение: несколько значений для параметра блока (0 для 1)
- Есть ли способ написать блок для метода "get_ *", чтобы это предупреждение не появлялось?
- Я злоупотребляю define_method?