著名的RIP Hash rocket post表明,Hash Rocket语法(:foo => "bar"
)已经被新的JSON风格哈希替代(foo: "bar"
)。然而,我找不到任何明确的参考资料表明自Ruby 1.9以来Hash Rocket形式实际上已经废弃/不建议使用。
著名的RIP Hash rocket post表明,Hash Rocket语法(:foo => "bar"
)已经被新的JSON风格哈希替代(foo: "bar"
)。然而,我找不到任何明确的参考资料表明自Ruby 1.9以来Hash Rocket形式实际上已经废弃/不建议使用。
那篇博客文章的作者过于夸张和愚蠢了,=>
符号仍然是相当 必要的。 特别是:
对于不是有效标签的符号,您必须使用火箭符号::$set => x
是有效的,但 $set: x
则不是。在 Ruby 2.2+ 中,您可以通过使用引号解决此问题:'$set': x
将做正确的事情。
如果您在哈希中使用键而不是符号(例如字符串、整数或常量),则必须使用火箭符号。例如,'s' => x
是有效的,但 's': x
则完全不同。
当然,您可以以明显的方式绕过上述问题:
h = { }
h[:'where.is'] = 'pancakes house?'
# etc.
但那只是丑陋而不必要的。
如果不破坏Ruby的哈希表,火箭将无法前进。
h[:s]
),所以JavaScript风格的语法对我来说只是无意义的复杂性。对我来说,它似乎是一个想当然的花哨点子,现在我们被困在了它和相关的混淆中。 - mu is too shorta = [0,1,4,9]
和 a = Array.new(4){ |i| i**2 }
,为什么有时候需要使用后者而不是前者?答案是因为它更加方便。TIMTOWTDI 确实让语言变得更加复杂,但这是一种权衡。Lua 在核心上非常优雅,因此易于学习,但实际编程时会很烦人。Ruby 有很多特殊情况和自定义功能,使其更难学习,但却是一种愉悦的编程体验。我个人认为,更简单易读的 Hash-with-symbol-keys 符号键值表示法对于常见情况来说是受欢迎的。 - Phrogzmy_hash = {a:1}
和myhash [:a] = 1
中用于表示键的实际字符之间缺乏一致性,至少相当令人恼火。我相信我不是唯一有这种感觉的人。 - Huliax