为了账号安全,请及时绑定邮箱和手机立即绑定

哈希火箭已弃用吗?

/ 猿问

哈希火箭已弃用吗?

天天世纪 2019-12-25 11:00:01

引人注目的RIP哈希火箭帖子似乎暗示,:foo => "bar"不赞成使用Hash Rocket语法()来支持新的Ruby JSON样式的哈希(foo: "bar"),但是我找不到任何明确的引用来说明哈希火箭的形式从Ruby 1.9开始实际上已弃用/不建议使用。


查看完整描述

3 回答

?
潇潇雨雨

该博客文章的作者过于戏剧化和愚蠢,这 仍然=>是非常必要的。尤其是:


您必须将火箭用于需要引号的符号::'where.is' => x有效但'where.is': x无效。Ruby 2.2解决了这个问题,因此您可以'where.is': x在Ruby 2.2+中说。

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

如果您在哈希中使用的不是符号的密钥,则必须使用火箭:'s' => x有效但's': x完全不同。

当然,您可以通过明显的方式来绕过以上内容:


h = { }

h[:'where.is'] = 'pancakes house?'

# etc.

但这是丑陋且不必要的。


如果不破坏Ruby的哈希,火箭将无处可去。


查看完整回答
反对 回复 2019-12-25
?
郎朗坤

考虑a = [0,1,4,9]a = Array.new(4){ |i| i**2 }。为什么有时需要使用前者时为什么要使用前者?答:因为它更方便。TIMTOWTDI确实使语言复杂化,但这是一个折衷方案。Lua的核心真的很优雅,因此很容易学习,但实际上编写代码很烦人。Ruby有很多特殊情况和自定义功能,使学习起来更困难,但编程起来却很愉快。通常情况下,类型更简单,更易于阅读的带符号哈希键表示法。

查看完整回答
反对 回复 2019-12-25
?
ABOUTYOU

虽然键入的乐趣较少,但我绝对更喜欢哈希火箭。为什么?因为它意味着我每次在符号上使用符号时,都可以通过搜索以冒号开头的字符串来在项目中的任何位置搜索它。对我来说,用来表示键的实际字符之间缺乏一致性,my_hash = {a:1}并且myhash[:a] = 1至少令人讨厌。我敢肯定,我不是唯一这样的人。

查看完整回答
反对 回复 2019-12-25

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信