如何将字符串用作方法调用?
"Some Word".class #=> String
a = "class"
"Some World".a #=> undefined method 'a'
"Some World"."#{a}" #=> syntax error, unexpected tSTRING_BEG
答案 0 :(得分:16)
>> a = "class"
>> "foo".send(a)
=> String
>> a = "reverse"
>> "foo".send(a)
=> "oof"
>> a = "something"
>> "foo".send(a)
NoMethodError: undefined method `something' for "foo":String
答案 1 :(得分:1)
如果你想做一个链,也可以使用Object#eval
>> a = "foo"
=> "foo"
>> eval "a.reverse.upcase"
=> "OOF"
答案 2 :(得分:0)
如果您的字符串包含一段ruby代码,则可以使用eval
。当我降落在这里时,我正在寻找那个答案的问题。在开始工作之后(感谢 ProgrammingRuby ),我发布了这个,以防其他人来这里寻找我想要的东西。
考虑我有一行代码的情况。这是:
NAMESPACE::method(args)
现在考虑一下字符串变量
的情况myvar = "NAMESPACE::method(args)"
使用send(myvar)
不会执行该命令。这是你如何做到的:
eval(myvar)