在ruby 2.2.0中创建哈希的新方法

在ruby 2.2.0中创建哈希的新方法,ruby,hash,Ruby,Hash,在ruby 2.2.0中,您可以编写如下哈希: hash = { 'new_possible_style': :of_hashes } hash[:new_possible_style] #=> :of_hashes hash['new_possible_style'] #=> nil sym = :'a-symbol-with-dashes' 我不明白实施这种风格的原因。如果我需要字符串作为键(例如,对于某些第三方库),我仍然必须使用旧式散列。此“功能”的用例是什么?为什么

在ruby 2.2.0中,您可以编写如下哈希:

hash = { 'new_possible_style': :of_hashes }
hash[:new_possible_style]  #=> :of_hashes
hash['new_possible_style'] #=> nil 
sym = :'a-symbol-with-dashes'
我不明白实施这种风格的原因。如果我需要字符串作为键(例如,对于某些第三方库),我仍然必须使用旧式散列。此“功能”的用例是什么?为什么核心开发人员添加了这种风格


提前感谢。

这不是一种新的哈希表示样式,而是以一致的方式在1.9中添加的现有样式的扩展

在1.9中,您可以这样做

hash = { symbol_key: 'value' }
您还可以使用以下语法使用其他受限字符定义
符号
s:

hash = { 'new_possible_style': :of_hashes }
hash[:new_possible_style]  #=> :of_hashes
hash['new_possible_style'] #=> nil 
sym = :'a-symbol-with-dashes'
但是在版本1.9到2.1中,代码

hash = { 'a-symbol-with-dashes': 'value' }
未被识别为有效语法,而是出现异常
SyntaxError:(irb):4:语法错误,意外“:”,预期=>


在散列语法中添加对
符号
的引号环绕的支持最有可能实现一致性。使用短哈希键语法写入符号文字时的选项现在与在哈希之外写入相同文字时的选项相同(冒号所在的位置除外)

谢谢您的回答!