我试图将变量传递给动态声明的方法,如:
eval(def test(name)
puts name
end
test 'joe')
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
有没有办法做到这一点?
Bri*_*nna 10
eval期待一个字符串.以下应该工作正常:
eval "def test(name)
puts name
end
test 'joe'"
Run Code Online (Sandbox Code Playgroud)
如果你想动态声明一个方法,那么更好的方法是使用define_method而不是eval,就像这样
define_method(:test) do |name|
name
end
test 'joe'
#=> joe
Run Code Online (Sandbox Code Playgroud)
除非绝对必要,否则不要使用eval,并且120%确定它是安全的.即使您确信它是安全的120%,仍然会尝试寻找其他选项,如果找到一个,那么使用它而不是eval.
| 归档时间: |
|
| 查看次数: |
1609 次 |
| 最近记录: |