【发布时间】:2013-01-16 23:11:32
【问题描述】:
在 Ruby 1.9+ 中是否有使用 => 或 : 的约定?喜欢:
:param => "foo"
或
param: "foo"
编辑:感谢您的反馈,我编辑了问题以使其更清楚。
【问题讨论】:
-
仅供参考:这与 Rails 无关。这是 Ruby 1.9 的变化。
标签: ruby coding-style
在 Ruby 1.9+ 中是否有使用 => 或 : 的约定?喜欢:
:param => "foo"
或
param: "foo"
编辑:感谢您的反馈,我编辑了问题以使其更清楚。
【问题讨论】:
标签: ruby coding-style
有区别;较新的“JSON”哈希创建样式只能与符号键一起使用。如下所示。
{ param: "foo" }
等价于
{ :param => "foo" }
所以你不能用它来创建这个哈希:
{ "foo" => "bar" }
或者这个:
{ 0 => "One" }
这很有意义,因为最好的做法是尽可能使用符号键。
编辑:
同样在您的示例中,{ param => "foo" } 变量 param 的值将用作键。
所以
param = :foo
{ param => "bar" }
等价于
{ :foo => "bar" }
【讨论】:
{param: "foo"} 与{param => "foo"} 不同。前者使用符号:param键,后者使用变量的值作为键。
:$set => { ... }和$set: { ... },这是使用MongoDB时相当常见的事情。
我在 codeschool.com 的教程中听说它完全一样。 params: 与 params => 一样直观,但您可以节省三个字符...(=> 和一个字符之间的两个空格)
【讨论】:
{'params'=>'foo'} # => { "params" => "foo" } 和{params:'foo'} # => { :params => "foo" } 之外完全一样。一个是键的字符串,另一个是符号。由于内存使用效率和查找速度的提高,与这一点的差异进一步扩大。