被广泛引用的RIP Hash Rocket 帖子似乎暗示 Hash Rocket 语法 ( :foo => "bar"
) 已被弃用,取而代之的是新的 Ruby JSON 风格的散列 ( foo: "bar"
),但我找不到任何明确的参考说明 Hash Rocket 形式从 Ruby 1.9 开始,实际上已弃用/不建议使用。
问问题
33991 次
1 回答
138
那篇博文的作者过于戏剧化和愚蠢, =>
还是很有 必要的。尤其是:
您必须将火箭用于无效标签的符号:
:$set => x
有效但$set: x
无效。在 Ruby 2.2+ 中,您可以用引号解决这个问题:'$set': x
将做正确的事。如果您在哈希中使用不是符号的键,例如字符串、整数或常量,则必须使用火箭。例如,
's' => x
是有效的,但's': x
完全不同。
当然,您可以以明显的方式解决上述问题:
h = { }
h[:'where.is'] = 'pancakes house?'
# etc.
但这只是丑陋和不必要的。
如果不破坏 Ruby 的哈希,火箭就不会去任何地方。
于 2012-04-04T02:54:36.370 回答