Ruby将字符串转换为方法名

Ruby将字符串转换为方法名,ruby,methods,Ruby,Methods,我在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 它只是显示,是强

我在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 
它只是显示,是强制性的(“abc”)是字母表(“abc”),而不是实际调用该方法

如何将字符串转换为方法名? 非常感谢您的帮助

干杯

最好的方法可能是:

methods.each { |methodName| send(methodName, 'abc') }
请参见尝试使用“发送”


还可以添加散列以向方法发送参数

send("method_name", "abc", {add more parameters in this hash})

以前使用
send
的所有解决方案都可以,但建议改用(否则您可以调用私有方法)

例如:

'string'.public_send(:size)
=> 6

另一方面,Ruby的方法是使用问号而不是前缀“is”,即
mandatory?
alphabets?
。如果这些方法属于某个类,那么您需要这样的方法:
obj=OwningClass.new;methods.each{meth}obj.send(meth,'abc')}
或者如果我们谈论的是类方法,那么
方法.each{method}class.send(meth,argument)}
'string'.public_send(:size)
=> 6