这有什么区别:
method: :delete
这个?
:method => :delete
我猜它与Rails的不同版本有关,但不确定。我只在Rails 3.x中工作。
答案 0 :(得分:0)
它们是完全等效的,除了第一个只能用于ruby 1.9(当然还有更高版本)。
在ruby 1.8中,哈希语法使用了=>
,也称为hash rocket
。你可以把任何东西放在前面,任何东西都在后面,但前面的东西是你的关键,在价值背后。如果您有一个符号作为键,符号作为值,您可以写:
:method => :delete
但你也可以写
{ 1 => 'one', :2 => 'two', 'THREE' => 3 }
现在,对于ruby 1.9.x,引入了一种新的更短语法。由于大多数人使用符号作为键,现在可以写:
method: :delete
这只是一个更短/更清洁的版本。另请注意,可以混合使用两种样式,在某些情况下需要它们。
E.g。在ruby 1.8中你会写:
{ :class => 'smthg', :'data-type' => 'a type' }
这将转换为ruby 1.9中的以下内容
{ class: 'smthg', :'data-type' => 'a type' }
请注意,您仍然可以继续使用“旧”哈希语法。这是一个偏好的问题。对于仅使用符号作为键的哈希,我使用干净/短版本。我通常尽量不在单个哈希中混合哈希样式:)