带字符串键的ruby new hash冒号表示法

phi*_*lee 22 ruby

使用ruby 1.9.3,字符串键似乎不适用于Hash冒号表示法:

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

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

我想我正在运行正确版本的Ruby

1.9.3p194 :006 > RUBY_ENGINE
 => "ruby" 
1.9.3p194 :007 > RUBY_VERSION
 => "1.9.3" 
Run Code Online (Sandbox Code Playgroud)

Cho*_*ett 41

这是正确的 - 哈希的新冒号表示法仅在键是符号时才有效.

对不起,就是这样.

更新:通用符号所使用的新符号的红宝石2.2和更高版本支持(字符串作为键仍然没有):

irb
2.2.2 :001 > {'abc': 5}
=> {:abc=>5} 
Run Code Online (Sandbox Code Playgroud)

  • 仅当键是*某些*符号时才有效.例如,您不能将它与`:$ set`或`:'pan.cakes'`一起使用. (4认同)