Пытаться динамически создавать объекты и вызывать методы с помощью
Object.const_get(class_name).new.send(method_name,parameters_array)
который работает нормально, когда
Object.const_get(RandomClass).new.send(i_take_arguments,[10.0])
но выбрасывает неправильное количество аргументов 1 для 2 для
Object.const_get(RandomClass).new.send(i_take_multiple_arguments,[25.0,26.0])
Определенный случайный класс:
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
Может ли кто-нибудь помочь мне в том, как динамически отправлять несколько параметров методу ruby
*
в данном контексте оператор splat.Вы можете поочередно называть
send
его синонимом__send__
:Кстати, * вы можете передавать хеши как параметры, разделенные запятыми:
или новый синтаксис хеша:
По словам Блэка,
__send__
безопаснее использовать пространство имен.Черные также предлагают заключить вызовы
__send__
вif respond_to?(method_name)
.Ссылка: Блэк, Дэвид А. Хорошо обоснованный рубист. Manning, 2009. P.171.
* Я пришел сюда в поисках синтаксиса хэша для
__send__
, поэтому может быть полезным для других гуглеров. ;)источник