2012-09-06 72 views
21

使用Ruby 1.9.3哈希冒號表示,字符串鍵似乎不與哈希冒號表示工作:紅寶石與新字符串鍵

1.9.3p194 :005 > {abc: 5} 
=> {:abc=>5} 

1.9.3p194 :004 > {'abc': 5} 
SyntaxError: (irb):4: syntax error, unexpected ':', expecting tASSOC 
{'abc': 5} 
    ^

我想我跑紅寶石

的正確版本
1.9.3p194 :006 > RUBY_ENGINE 
=> "ruby" 
1.9.3p194 :007 > RUBY_VERSION 
=> "1.9.3" 
+2

還有一個特點,要求開放此 - HTTP: //bugs.ruby-lang.org/issues/4801 –

回答

38

這是正確的 - 只有當鍵是符號時,散列的新冒號符號纔有效。

對不起,就是這樣。

更新:通用符號使用在紅寶石2.2新的符號和更高版本支持(字符串鍵仍然沒有):

irb 
2.2.2 :001 > {'abc': 5} 
=> {:abc=>5} 
+4

只有當鍵是* some *符號時纔有效。例如,你不能用':$ set'或':'pan.cakes''來使用它。 –

+0

@ muistooshort - 公平點。我同樣懷疑,但在鎬頭找不到證據。你有引用嗎? – Chowlett

+1

感謝您的快速響應。人們如何處理這個問題?當你有一個字符串時只使用火箭散列符號? – phillee