【问题标题】:Hash syntax strangeness [duplicate]哈希语法奇怪[重复]
【发布时间】:2014-08-29 23:58:05
【问题描述】:

可能重复:
Is there any difference between the :key => “value” and key: “value” hash notations?

这有什么区别:

method: :delete

还有这个?

:method => :delete

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

【问题讨论】:

标签: ruby


【解决方案1】:

它们是完全等价的,除了第一个只能在 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' }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 2011-06-01
    • 2012-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多