在ruby 2.2.0中你可以编写这样的哈希:
hash = { 'new_possible_style': :of_hashes }
hash[:new_possible_style] #=> :of_hashes
hash['new_possible_style'] #=> nil
我无法实现这种风格的原因。如果我需要字符串作为键(例如,对于某些第三方库),我仍然需要使用旧式哈希。这个功能的用例是什么'?核心开发人员为什么要添加这种风格?
提前致谢。
答案 0 :(得分:10)
这不是一种新的哈希表示形式,而是以一致的方式在1.9中添加的现有样式的扩展。
在1.9中,你可以这样做
hash = { symbol_key: 'value' }
您还可以使用以下语法定义Symbol
和其他限制字符:
sym = :'a-symbol-with-dashes'
但是在版本1.9到2.1中,代码
hash = { 'a-symbol-with-dashes': 'value' }
未被识别为有效语法,而是您获得异常SyntaxError: (irb):4: syntax error, unexpected ':', expecting =>
在哈希语法中添加对Symbol
的引用包装的支持最有可能是一致的。使用短散列键语法编写符号文字时的选项现在与在散列之外写入相同文字时的选项相同(除了放置冒号的位置之外)