如何在 Ruby 1.9 中使用变量设置哈希键?

Dan*_*hoe 2 ruby

我有一个字符串变量。我想使用变量作为键创建一个哈希。在 Ruby 1.8 中,我使用了 hashrocket 语法,如下所示:

my_key = 'arbitrary'
my_hash = {my_key => 'my_value'}
Run Code Online (Sandbox Code Playgroud)

在 Ruby 1.9 中,有一种新语法,我可以这样做:

my_hash = {arbitrary: 'my_value'}
Run Code Online (Sandbox Code Playgroud)

但是如何将变量转换为键?我试过:

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'}
Run Code Online (Sandbox Code Playgroud)

我是否必须继续使用 Ruby 1.8 语法?

Mat*_*usz 5

让我向您介绍两种方法来做您真正想做的事情。如果您不想再继续使用 1.8 语法和 hashrockets,ruby-doc.org建议在 Ruby 1.9.3 中这样做:

my_hash = Hash.new

my_key = "key000"
my_hash[my_key] = "my_value"
Run Code Online (Sandbox Code Playgroud)

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

第二个(更类似于您要实现的目标)是:

my_key = "key0"
my_hash = Hash[my_key, "value00"]

puts my_hash
Run Code Online (Sandbox Code Playgroud)

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