Mencoba membuat objek dan memanggil metode secara dinamis oleh
Object.const_get(class_name).new.send(method_name,parameters_array)
yang berfungsi dengan baik saat
Object.const_get(RandomClass).new.send(i_take_arguments,[10.0])
tetapi melemparkan jumlah argumen 1 untuk 2 yang salah untuk
Object.const_get(RandomClass).new.send(i_take_multiple_arguments,[25.0,26.0])
Kelas Acak yang didefinisikan adalah
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
Dapatkah seseorang membantu saya tentang cara mengirim parameter mutiple ke metode ruby secara dinamis
*
dalam konteks ini adalah operator "percikan".Anda dapat menelepon secara bergantian
send
dengan sinonimnya__send__
:Ngomong-ngomong * Anda dapat melewatkan hash saat param dipisahkan oleh koma seperti:
atau sintaks hash baru:
Menurut Black,
__send__
lebih aman untuk namespace.Black juga menyarankan untuk membungkus panggilan
__send__
masukif respond_to?(method_name)
.Ref: Black, David A. Rubyist yang beralasan. Manning, 2009. P.171.
* Saya datang ke sini untuk mencari sintaks hash
__send__
, jadi semoga bermanfaat untuk googler lain. ;)sumber