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 は悪ですが、動作します:

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