我将如何使用字符串的值来引用哈希 - 即
#!/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 的哈希?谢谢!
我将如何使用字符串的值来引用哈希 - 即
#!/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 的哈希?谢谢!
#!/usr/bin/env ruby
foo = Hash.new
bar = "foo"
instance_eval(bar)["key"]="value"
在这种情况下eval(bar)
也有效
instance_eval 尝试执行(作为 ruby 代码)您在当前上下文中在第一个参数中给出的字符串。
在您的示例中,Ruby 正在尝试调用 String#[]= 方法。你不想要那个:)
希望有帮助。
您可以按如下方式评估字符串:-
foo = Hash.new
bar = "foo"
eval "#{bar}[\"key\"]=\"value\""
puts foo # {"key"=>"value"}
请记住,eval 是 evil,但它有效:
>> foo = Hash.new
{}
>> bar = "foo"
=> "foo"
>> eval(bar)["key"] = "value"
=> "value"
>> foo
=> {"key"=>"value"}