1

我将如何使用字符串的值来引用哈希 - 即

#!/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 的哈希?谢谢!

4

3 回答 3

4
#!/usr/bin/env ruby
foo = Hash.new
bar = "foo"
instance_eval(bar)["key"]="value"

在这种情况下eval(bar)也有效

instance_eval 尝试执行(作为 ruby​​ 代码)您在当前上下文中在第一个参数中给出的字符串。

在您的示例中,Ruby 正在尝试调用 String#[]= 方法。你不想要那个:)

希望有帮助。

于 2010-05-26T14:29:11.540 回答
1

您可以按如下方式评估字符串:-

foo = Hash.new
bar = "foo"
eval "#{bar}[\"key\"]=\"value\""
puts foo   # {"key"=>"value"}
于 2010-05-26T14:29:36.657 回答
1

请记住,eval 是 evil,但它有效:

>> foo = Hash.new
{}
>> bar = "foo"
=> "foo"
>> eval(bar)["key"] = "value"
=> "value"
>> foo
=> {"key"=>"value"}
于 2010-05-26T14:30:28.373 回答