Intentando crear objetos y métodos de llamada dinámicamente por
Object.const_get(class_name).new.send(method_name,parameters_array)
que funciona bien cuando
Object.const_get(RandomClass).new.send(i_take_arguments,[10.0])
pero arrojando un número incorrecto de argumentos 1 por 2 para
Object.const_get(RandomClass).new.send(i_take_multiple_arguments,[25.0,26.0])
La clase aleatoria definida es
class RandomClass
def i_am_method_one
puts "I am method 1"
end
def i_take_arguments(a)
puts "the argument passed is #{a}"
end
def i_take_multiple_arguments(b,c)
puts "the arguments passed are #{b} and #{c}"
end
end
¿Alguien puede ayudarme a enviar dinámicamente múltiples parámetros a un método ruby?
*
en este contexto es el operador "splat".Alternativamente puede llamar
send
con su sinónimo__send__
:Por cierto * puede pasar hashes como parámetros separados por comas de la siguiente manera:
o nueva sintaxis hash:
Según Black,
__send__
es más seguro para el espacio de nombres.Negro también sugiere llamadas a envolver
__send__
enif respond_to?(method_name)
.Ref: Black, David A. El bien fundamentado Rubyist. Manning, 2009. P.171.
* Vine aquí buscando sintaxis hash
__send__
, por lo que puede ser útil para otros googlers. ;)fuente