在 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 文字时的选项现在与在散列之外写入相同文字时的选项相同(除了放置冒号的位置)
在 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 文字时的选项现在与在散列之外写入相同文字时的选项相同(除了放置冒号的位置)