Der Versuch, Objekte zu erstellen und Methoden dynamisch von aufzurufen
Object.const_get(class_name).new.send(method_name,parameters_array)
Das funktioniert gut, wenn
Object.const_get(RandomClass).new.send(i_take_arguments,[10.0])
aber falsche Anzahl von Argumenten 1 für 2 für werfen
Object.const_get(RandomClass).new.send(i_take_multiple_arguments,[25.0,26.0])
Die definierte Zufallsklasse ist
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
Kann mir jemand helfen, wie man mehrere Parameter dynamisch an eine Ruby-Methode sendet
*
in diesem Zusammenhang der "Splat" -Operator ist.Sie können alternativ
send
mit dem Synonym anrufen__send__
:Übrigens * können Sie Hashes als durch Kommas getrennte Parameter übergeben:
oder neue Hash-Syntax:
Laut Black
__send__
ist der Namespace sicherer.Schwarz schlägt auch Wickel Anrufe
__send__
inif respond_to?(method_name)
.Ref: Black, David A. Der fundierte Rubyist. Manning, 2009. S.171.
* Ich bin hierher gekommen, um nach Hash-Syntax zu suchen
__send__
, daher kann dies für andere Googler nützlich sein. ;)quelle