我有一个变量id
,我想将它用作散列中的一个键,以便将分配给该变量的值用作散列的键。例如,如果我有变量id = 1
,那么所需的结果散列值将为{ 1: 'foo' }
。从Ruby中的变量创建一个哈希键?
我试图创建一个与哈希,
{
id: 'foo'
}
但是,这并不工作,而不是导致哈希与符号:id
到'foo'
。
我可以发誓我以前做过这件事,但我完全画空白。
我有一个变量id
,我想将它用作散列中的一个键,以便将分配给该变量的值用作散列的键。例如,如果我有变量id = 1
,那么所需的结果散列值将为{ 1: 'foo' }
。从Ruby中的变量创建一个哈希键?
我试图创建一个与哈希,
{
id: 'foo'
}
但是,这并不工作,而不是导致哈希与符号:id
到'foo'
。
我可以发誓我以前做过这件事,但我完全画空白。
如果要填充具有一定值的新哈希值,你可以将它们传递到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'
我被困惑的问题本身,现在这个答案让我感到困惑。 (你可以告诉我什么是OP询问? –
@ArupRakshit OP希望使用'id'的值作为key。'{id:'foo'}'不工作,因为'id:'foo''是等价的到':id =>'foo''。 – Gumbo
啊,所以旧式散列语法可以工作,但不是新式样。谢谢。 –
'H = {}; h [id] ='foo''或'Hash [id,'foo']' – Gumbo
@Gumbo,你可以将你的评论转换为答案,这样我可以将它标记为正确吗? –
@ muistooshort,即访问,而不是创建,这是一个不同的操作。 Gumbo的评论也表明语法不同。 –