Ruby - 将变量传递给eval方法

时间:2011-11-24 19:13:49

标签: ruby function metaprogramming eval idioms

我有一个引用方法的变量,我用eval关键字

调用该方法
a_test = "myvariable"
eval a_test


def myvariable
(...)
end

我想将变量传递给方法,例如

def myvariable(var1)
(...)
end

是否有人熟悉任何“成语”方式来实现这一目标。做点什么

eval a_test "string_test" 

将自然失败,因为解释器将对名为“a_test”的函数进行查找

1 个答案:

答案 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