写':name =>有什么区别? “String”`和`name:“String”`?

时间:2013-03-24 17:37:36

标签: ruby hashrocket

写作之间是否有区别

parameter: "String"

和更长的

:parameter => "String"

4 个答案:

答案 0 :(得分:4)

第一个在Ruby 1.8中不起作用

答案 1 :(得分:2)

它们都构造了一个散列键值对。在大多数情况下,它们是可以互换的。 {1.9}中引入了parameter: "String"语法,并以JSON

为模型

存在一些差异/陷阱。最大的一个是较新的语法不处理引用的键。在1.8样式的哈希中,您可以这样做:

:"multi word key" => some_value

在1.9样式的哈希中,这是语法错误:

"multi word key": some_value

答案 2 :(得分:0)

没有区别。

我更喜欢第二种语法,因为我认为在进行简要概述时更容易看到。

在Ruby 1.9.x和2.0.0

答案 3 :(得分:0)

这只是一个语法糖。

如果你在irb中看到Ruby 1.8.7

1.8.7 :004 > {:name => 'String'}
 => {:name=>"String"}

和1.9.3

1.9.3p392 :002 > {name: 'String'}
 => {:name=>"String"} 

两者都返回相同的格式。