Hash Rocket被弃用了吗?

问题描述 投票:96回答:1

引用良好的RIP Hash rocket post似乎暗示Hash Rocket语法(:foo => "bar")不赞成使用新的Ruby JSON样式哈希(foo: "bar"),但我找不到任何明确的引用来说明Hash Rocket表单是从Ruby 1.9开始实际上已弃用/未经过修改。

ruby syntax hash ruby-1.9 hashrocket
1个回答
129
投票

该博客文章的作者过于戏剧性和愚蠢,=>still quite necessary。特别是:

  1. 您必须将火箭用于需要引用的符号::'where.is' => x有效但'where.is': x不是。 Ruby 2.2修复了这个问题所以你可以在Ruby 2.2+中说'where.is': x
  2. 您必须将火箭用于非有效标签的符号::$set => x有效但$set: x不是。在Ruby 2.2+中你可以用引号解决这个问题:'$set': x会做正确的事情。
  3. 如果你在哈希中使用不是符号的键,你必须使用火箭:'s' => x有效,但's': x是完全不同的。

当然,你可以用显而易见的方式克服上述问题:

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

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

没有摧毁Ruby的哈希,火箭不会去任何地方。

© www.soinside.com 2019 - 2024. All rights reserved.