我有一个引用方法的变量,我用eval关键字
调用该方法a_test = "myvariable"
eval a_test
def myvariable
(...)
end
我想将变量传递给方法,例如
def myvariable(var1)
(...)
end
是否有人熟悉任何“成语”方式来实现这一目标。做点什么
eval a_test "string_test"
将自然失败,因为解释器将对名为“a_test”的函数进行查找
答案 0 :(得分:13)
这应该对你有用
def myvariable(foo)
return "hello #{foo}"
end
a_test = "myvariable"
eval "puts #{a_test}('world')"
#=> hello world
在红宝石中,做这样的事情更合适
def myvariable(foo)
return "hello #{foo}"
end
a_test = "myvariable"
puts send(a_test, 'world')
#=> hello world
详细了解send