Ruby - 将变量传递给 eval 方法

标签 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”的函数

最佳答案

这应该适合你

def myvariable(foo)
  return "hello #{foo}"
end
a_test = "myvariable"

eval "puts #{a_test}('world')"

#=> hello world

虽然在 ruby​​ 中,做这样的事情会更合适

def myvariable(foo)
  return "hello #{foo}"
end
a_test = "myvariable"

puts send(a_test, 'world')

#=> hello world

阅读更多关于 send 的信息

关于Ruby - 将变量传递给 eval 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8261588/

相关文章:

ruby-on-rails - 更改 Carrierwave 上传路径以适应 Cloud 66 的配置

c - 分配编写一个程序,让用户在两个选项之间进行选择 - C

Objective-C 在类方法中访问类

c++ - 枚举 C++ 中的枚举

ruby - 重构多个 if 语句以使用子域进行用户身份验证

ruby-on-rails - 这个 Ruby 函数在做什么?

ruby - 如何使用 Ruby twitter gem 获取给定 ID/句柄的关注者列表?

javascript - Azure 函数 blob 输出绑定(bind)路径参数 (javascript)

c++ - 如何删除二维 vector 网格中的部分路径?

c++ - 模板特化问题