ruby新的带字符串键的哈希冒号表示法
使用ruby 1.9.3,字符串键似乎无法与哈希冒号符号配合使用:ruby新的带字符串键的哈希冒号表示法,ruby,Ruby,使用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} ^ 我想我运行的是正确版本的Ruby 1.9.3p194 :006 > RUBY_EN
1.9.3p194 :005 > {abc: 5}
=> {:abc=>5}
1.9.3p194 :004 > {'abc': 5}
SyntaxError: (irb):4: syntax error, unexpected ':', expecting tASSOC
{'abc': 5}
^
我想我运行的是正确版本的Ruby
1.9.3p194 :006 > RUBY_ENGINE
=> "ruby"
1.9.3p194 :007 > RUBY_VERSION
=> "1.9.3"
这是正确的-哈希的新冒号表示法只有在键是符号时才有效 对不起,事情就是这样 更新:在ruby 2.2及更高版本中,使用新的表示法支持通用符号(作为键的字符串仍然不受支持):
为此打开了一个功能请求-仅当键是一些符号时有效。例如,您不能将其与
:$set
或:'pan.cakes'
@muistooshort-Fair point一起使用。我也这么怀疑,但在鹤嘴锄上找不到证据。你收到传票了吗?谢谢你的快速回复。人们是如何处理这件事的?当你有一个字符串时,仅仅使用火箭散列符号?我没有引用,我阅读了C源代码来找出什么是允许的,因为我找不到权威的定义。我认为或多或少是这样的,^[a-zA-Z_u2;]\w*
@phillie:是的,除了一组特定的符号之外,你必须使用hashrocket。我们已经讨论过几次了:,还有一些我现在找不到的。
irb
2.2.2 :001 > {'abc': 5}
=> {:abc=>5}