2013-03-24 109 views
-1

是否有写作之间编写`:name =>“String”`和`name:“String”`有什么区别?

parameter: "String" 

和更长

:parameter => "String" 
+1

没有区别。除了个人喜好。 – 2013-03-24 17:38:14

+1

@Sergio:如果你'哈哈':6'或'$ set:{p:11}'会发生什么? – 2013-03-24 18:01:33

+0

@ muistooshort:好的,他问了一些符号。使用符号 - 没有区别:) – 2013-03-25 01:07:37

回答

0

无差异的差异。

我更喜欢2nd语法,因为我认为在做简要概述时更容易看清楚。

在Ruby 1.9.x的和2.0.0

+1

不正确,有些符号只对hashrocket语法有效。如果你的Hash有非符号键,你也**必须使用hashrocket。 – 2013-03-24 17:59:51

4

第一个不红宝石1.8

2

工作,他们都建立一个哈希键 - 值对。大多数情况下它们是可以互换的。 parameter: "String"语法是在Ruby 1.9中引入的,并且是在JSON之后建模的。

有一些差异/陷阱。最大的一个是新的语法不处理带引号的键。在1.8风格的哈希值,你可以这样做:

:"multi word key" => some_value 

在1.9风格的哈希值,这是一个语法错误:

"multi word key": some_value 
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"} 

都返回相同的格式。

相关问题