estoy tratando de definir de forma dinámica a través de funciones que llaman a otra función que toma un parámetro de opciones:¿Es posible definir un bloque con argumentos opcionales en 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
Me gustaría ser capaz de llamar a los diferentes métodos en MiClase en estas dos maneras (con y sin argumentos opcionales):
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)
en la segunda llamada a minuto, veo esta advertencia:
advertencia: varios valores para un parámetro de bloque (0 para 1)
- ¿Hay una manera de escribir el bloque para el método de "get_ *" para que esta advertencia no se van a plantear?
- ¿Estoy abusando de define_method?
¡Gracias por señalar eso! – Readonly