我有一个字符串变量。我想用变量作为键创建一个散列在Ruby1.8中,我使用了hashrocket语法,如下所示:

my_key = 'arbitrary'
my_hash = {my_key => 'my_value'}

在Ruby1.9中,有一个新的语法,我可以这样做:
my_hash = {arbitrary: 'my_value'}

但是如何将变量转换为键呢我试过:
my_key = 'arbitrary'
my_hash = {:my_key 'my_value'}
my_hash = {my_key.to_sym: 'my_value'}
my_hash = {:my_key.to_sym 'my_value'}
my_hash = {my_key.to_sym 'my_value'}

我必须继续使用Ruby1.8语法吗?

最佳答案

让我给你介绍两种做你想做的事的方法如果您不想继续使用1.8语法和hashrockets,ruby-doc.org建议在ruby 1.9.3中这样做:

my_hash = Hash.new

my_key = "key000"
my_hash[my_key] = "my_value"

现场演示:http://ideone.com/yqIx2M
第二个(更类似于你想要达到的目标)是:
my_key = "key0"
my_hash = Hash[my_key, "value00"]

puts my_hash

现场演示:http://ideone.com/HHLyAi

08-19 05:56