如何将字符串转换为方法调用?

如何使用字符串作为方法调用?

"Some Word".class #=> String a = "class" "Some World".a #=> undefined method 'a' "Some World"."#{a}" #=> syntax error, unexpected tSTRING_BEG 

对象#发送

 >> a = "class" >> "foo".send(a) => String >> a = "reverse" >> "foo".send(a) => "oof" >> a = "something" >> "foo".send(a) NoMethodError: undefined method `something' for "foo":String 

如果你想做一个链,也可以使用Object#eval

 >> a = "foo" => "foo" >> eval "a.reverse.upcase" => "OOF" 

如果您有一个包含ruby代码片段的字符串,则可以使用eval 。 当我降落在这里时,我正在寻找那个答案的问题。 在开始工作之后(感谢ProgrammingRuby ),我发布了这个,以防其他人来这里寻找我想要的东西。

考虑我有一行代码的场景。 这里是:

 NAMESPACE::method(args) 

现在考虑在字符串变量中的情况

 myvar = "NAMESPACE::method(args)" 

使用send(myvar)不执行命令。 这是你如何做到的:

 eval(myvar)