Hash Rocket被弃用了吗?

时间:2012-04-04 02:23:28

标签: ruby syntax hash ruby-1.9 hashrocket

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

1 个答案:

答案 0 :(得分: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完全不同。
  4. 当然,你可以用明显的方式解决上述问题:

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

    但这只是丑陋而且没必要。

    火箭不会在没有摧毁Ruby的哈希的情况下去任何地方。