2013-01-10 65 views
0

如何在新的ruby語法下創建一個以數字作爲鍵的散列?例如{abc: 123}創建與符號abc爲重點的哈希,但{123: 'abc' }拋出異常(一樣{123.to_sym: 'abc'}。我看到唯一的例外是syntax error, unexpected '}', expecting $end,我可以做hash[123] = 'abc'Hash[123, 200],並且可以在舊的語法下做{123 => 'abc'}但不看看如何將新的JSON風格的語法下創建{123: 'abc'}數字作爲紅寶石1.9.x語法的關鍵

+0

你不這樣做,AFAIK。新的語法是一個特定結構的語法糖,符號和數字不會轉入符號。 –

+0

JavaScript風格的表示法只適用於[some](http://stackoverflow.com/a/8675314/479863)[symbols](http://stackoverflow.com/a/10004344/479863),如果您的密鑰isn ''符號或者是符號而不是有效的標籤,那麼你必須使用hashrocket。 –

+0

可能重複[\':key =>「value」\'和\'key:「value」\'hash notations?](http://stackoverflow.com/questions/8675206/is - 鍵值和鍵值之間的任何區別 - 哈希 - 否) –

回答

1

你不能。語法針對的是Symbol S中的也是有效的Ruby標識符鑰匙。123Fixnum,不是Symbol,即使它分別是 a Symbol,它仍然不是有效的Ruby標識符。

+0

無賴,但感謝您花時間回答Jörg。似乎應該有一個簡單的方法來轉換,但我無法弄清楚。我打算保留這一點,看看其他人是否有不同的看法。如果沒有,我會給你信貸的答案,因爲我也傾向於它不可能。 –

0

你可以認爲123已經是一個符號,因爲123和符號一樣唯一。所以{123:「abc」}

是不可能的。