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

New way of creating hashes in ruby 2.2.0

在 ruby 2.2.0 中你可以这样写哈希:

hash = { 'new_possible_style': :of_hashes }
hash[:new_possible_style]  #=> :of_hashes
hash['new_possible_style'] #=> nil 

我不明白实现这种风格的原因。如果我需要字符串作为键(例如,对于某些第三方库),我仍然必须使用旧式哈希。这个 'feature' 的用例是什么?为什么核心开发人员要添加这种样式?

提前致谢。

这不是一种新的哈希表示方式,而是在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 周围引号环绕的支持最有可能保持一致性。使用短散列键语法编写 Symbol 文字时的选项现在与在散列之外写入相同文字时的选项相同(除了放置冒号的位置)