0

可能重复: thehash 表示法
之间有什么区别吗?:key => “value”key: “value”

这有什么区别:

method: :delete

和这个?

:method => :delete

我猜它与不同版本的 Rails 有关,但不确定。我只在 Rails 3.x 中工作过。

4

1 回答 1

0

它们是完全等价的,除了第一个只能从 ruby​​ 1.9(当然更高)开始使用。

在 ruby​​ 1.8 中,哈希语法使用=>,也称为hash rocket. 你可以把任何东西放在前面,也可以放在后面,但前面的东西是你的关键,在价值的后面。如果你有一个符号作为键,一个符号作为值,你会写:

:method => :delete

但你也可以写

{ 1 => 'one', :2 => 'two', 'THREE' => 3 }

现在,对于 ruby​​ 1.9.x,引入了一种新的更短的语法。由于大多数人使用符号作为键,您现在可以编写:

method: :delete

这只是一个更短/更清洁的版本。另请注意,可以混合两种样式,这在某些情况下是必需的。

例如,在 ruby​​ 1.8 中,你会写:

{ :class => 'smthg', :'data-type' => 'a type' }

这将在 ruby​​ 1.9 中转换为以下内容

{ class: 'smthg', :'data-type' => 'a type' }

请注意,您仍然可以继续使用“旧”哈希语法。这是一个偏好问题。对于只有符号作为键的哈希,我个人使用干净/短版本。我通常尽量不要在单个哈希中混合哈希样式:)

于 2012-08-05T20:22:49.053 回答