哈希火箭已被弃用?
引用良好的RIP Hash火箭文章似乎暗示了Hash Rocket语法( :foo => "bar"
)已被弃用,以支持新到Ruby JSON风格的散列( foo: "bar"
),但是我找不到任何明确的引用,说明从Ruby 1.9开始,Hash Rocket表单实际上已被弃用/未被使用。
那篇博客的作者过于戏剧性和愚蠢,但仍然是非常 必要的 。 尤其是:
- 您必须使用火箭符号,需要引用::
:'where.is' => x
是有效的,但'where.is': x
不是。 Ruby 2.2已经解决了这个问题,所以你可以在Ruby 2.2中使用'where.is': x
。 - 你必须使用火箭的符号是无效的标签
:$set => x
是有效的,但是$set: x
不是。 在Ruby 2.2中,你可以用引号来解决这个问题:'$set': x
会做正确的事情。 - 如果你在Hashes中使用不是符号的键,你必须使用火箭:
's' => x
是有效的,但's': x
不是。
你当然可以用一种明显的方式来解决上述问题:
h = { } h[:'where.is'] = 'pancakes house?' # etc.
但这只是丑陋而不必要的。
火箭不会破坏Ruby的哈希。