Essayer de créer des objets et d'appeler des méthodes dynamiquement en
Object.const_get(class_name).new.send(method_name,parameters_array)
qui fonctionne bien quand
Object.const_get(RandomClass).new.send(i_take_arguments,[10.0])
mais lancer un nombre incorrect d'arguments 1 pour 2 pour
Object.const_get(RandomClass).new.send(i_take_multiple_arguments,[25.0,26.0])
La classe aléatoire définie est
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
Quelqu'un peut-il m'aider sur la façon d'envoyer dynamiquement plusieurs paramètres à une méthode ruby
*
dans ce contexte, il s'agit de l'opérateur "splat".Vous pouvez alternativement appeler
send
avec son synonyme__send__
:Au fait * vous pouvez passer des hachages en tant que paramètres séparés par des virgules comme ceci:
ou nouvelle syntaxe de hachage:
Selon Black,
__send__
est plus sûr pour l'espace de noms.Noir suggère également des appels d'emballage à
__send__
enif respond_to?(method_name)
.Réf: Black, David A. Le Rubyiste bien fondé. Manning, 2009. P.171.
* Je suis venu ici à la recherche d'une syntaxe de hachage pour
__send__
, donc cela peut être utile pour d'autres googleurs. ;)la source