101

被广泛引用的RIP Hash Rocket 帖子似乎暗示 Hash Rocket 语法 ( :foo => "bar") 已被弃用,取而代之的是新的 Ruby JSON 风格的散列 ( foo: "bar"),但我找不到任何明确的参考说明 Hash Rocket 形式从 Ruby 1.9 开始,实际上已弃用/不建议使用。

4

1 回答 1

138

那篇博文的作者过于戏剧化和愚蠢, =>还是很有 必要的。尤其是:

  1. 您必须将火箭用于无效标签的符号::$set => x有效但$set: x无效。在 Ruby 2.2+ 中,您可以用引号解决这个问题:'$set': x将做正确的事。

  2. 如果您在哈希中使用不是符号的键,例如字符串、整数或常量,则必须使用火箭。例如,'s' => x是有效的,但's': x完全不同。

当然,您可以以明显的方式解决上述问题:

h = { }
h[:'where.is'] = 'pancakes house?'
# etc.

但这只是丑陋和不必要的。

如果不破坏 Ruby 的哈希,火箭就不会去任何地方。

于 2012-04-04T02:54:36.370 回答