Ruby将字符串转换为方法名称

时间:2011-11-07 12:23:38

标签: 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 

它只是显示,is_mandatory(“abc”)is_alphabets(“abc”)而不是实际调用该方法。

如何将字符串转换为方法名称? 任何帮助是极大的赞赏。

干杯!!

4 个答案:

答案 0 :(得分:53)

最好的办法可能是:

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

请参阅Object#send

答案 1 :(得分:12)

尝试使用“发送”。

methods.each do |method| 
  self.send(method, "abc")
end 

答案 2 :(得分:0)

您还可以添加哈希以将参数发送到方法。

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

答案 3 :(得分:0)

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

示例:

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