Próbuję dynamicznie definiować funkcje, które wywołują aż do innej funkcji, która przyjmuje parametr opcje:Czy można zdefiniować blok z opcjonalnymi argumentami w Ruby?
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
Chciałbym móc wywoływać różne metody na MojaKlasa w tych dwóch sposobów (zi bez argumentów opcjonalnych):
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)
na drugim wywołaniu minutę, widzę to ostrzeżenie:
ostrzeżenie: wiele wartości dla parametru bloku (0 do 1)
- Czy istnieje sposób, aby napisać bloku na metodzie „get_ *” tak, że to ostrzeżenie nie będzie wymyślić?
- Czy używam metody define_method?
Dzięki za wskazanie tego! – Readonly