可能重复: the和hash 表示法
之间有什么区别吗?:key => “value”
key: “value”
这有什么区别:
method: :delete
和这个?
:method => :delete
我猜它与不同版本的 Rails 有关,但不确定。我只在 Rails 3.x 中工作过。
可能重复: the和hash 表示法
之间有什么区别吗?:key => “value”
key: “value”
这有什么区别:
method: :delete
和这个?
:method => :delete
我猜它与不同版本的 Rails 有关,但不确定。我只在 Rails 3.x 中工作过。
它们是完全等价的,除了第一个只能从 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' }
请注意,您仍然可以继续使用“旧”哈希语法。这是一个偏好问题。对于只有符号作为键的哈希,我个人使用干净/短版本。我通常尽量不要在单个哈希中混合哈希样式:)