Ruby преобразовать строку в имя метода - PullRequest
34 голосов
/ 07 ноября 2011

В моем файле ruby ​​определены два метода.

def is_mandatory(string)
      puts xyz
end
def is_alphabets(string)
      puts abc 
end 

Массив, содержащий имена методов.

    methods = ["is_mandatory", "is_alphabets"]

Когда я делаю следующее

    methods.each do |method| puts method.concat("(\"abc\")") end 

Он просто отображает is_mandatory ("abc") is_alphabets ("abc") вместо фактического вызова метода.

Как я могу преобразовать строку в имя метода?Любая помощь очень ценится.

Ура !!

Ответы [ 3 ]

53 голосов
/ 07 ноября 2011

Вероятно, лучший способ:

methods.each { |meth| send(meth, 'abc') }

См. Объект # отправить

12 голосов
/ 07 ноября 2011

Попробуйте использовать "отправить".

methods.each do |method| 
  self.send(method, "abc")
end 
0 голосов
/ 16 февраля 2019

Вы также можете добавить хеш для отправки параметров в метод.

send("method_name", "abc", {add more parameters in this hash})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...