我如何使用字符串的值来引用哈希 - 即
#!/usr/bin/env ruby
foo = Hash.new
bar = "foo"
"#{bar}"["key"] = "value"
结果
foo:5:in `[]=': string not matched (IndexError)
from foo:5
如何使用bar(foo)的值来引用名为foo的哈希?谢谢!
答案 0 :(得分:4)
#!/usr/bin/env ruby
foo = Hash.new
bar = "foo"
instance_eval(bar)["key"]="value"
在此背景下eval(bar)
也可以
instance_eval尝试执行(作为ruby代码)您在当前上下文中的第一个参数处给出的字符串。
在您的示例中,Ruby正在尝试调用String#[] =方法。你不希望这样:)
希望有所帮助。
答案 1 :(得分:1)
您可以按如下方式评估字符串: -
foo = Hash.new
bar = "foo"
eval "#{bar}[\"key\"]=\"value\""
puts foo # {"key"=>"value"}
答案 2 :(得分:1)
请记住, eval是邪恶的,但它有效:
>> foo = Hash.new
{}
>> bar = "foo"
=> "foo"
>> eval(bar)["key"] = "value"
=> "value"
>> foo
=> {"key"=>"value"}