Ruby: 在 Ruby 中从变量创建散列键和值

我有一个变量 id,我想用它作为散列中的键,这样分配给变量的值就可以用作散列的键。

例如,如果我有一个变量 id = 1,那么所需的散列结果应该是 { 1: 'foo' }

我试过用,

{
id: 'foo'
}

但是这不起作用,而是产生一个符号 :id'foo'的散列。

我可以发誓我以前做过这个,但是我完全记不起来了。

74350 次浏览

如果您想用某些值填充一个新散列,您可以将它们传递给 Hash::[]:

Hash["a", 100, "b", 200]             #=> {"a"=>100, "b"=>200}
Hash[ [ ["a", 100], ["b", 200] ] ]   #=> {"a"=>100, "b"=>200}
Hash["a" => 100, "b" => 200]         #=> {"a"=>100, "b"=>200}

所以对你来说:

Hash[id, 'foo']
Hash[[[id, 'foo']]]
Hash[id => 'foo']

最后一种语法 id => 'foo'也可以与 {}一起使用:

{ id => 'foo' }

否则,如果散列已经存在,请使用 Hash#=[]:

h = {}
h[id] = 'foo'