【问题标题】:What is the difference between writing `:name => "String"` and `name: "String"`? [duplicate]写 `:name => "String"` 和 `name: "String"` 有什么区别? [复制]
【发布时间】:2013-03-14 03:57:25
【问题描述】:

写有区别吗

parameter: "String"

还有更长的

:parameter => "String"

【问题讨论】:

  • 没有区别。除了个人喜好。
  • @Sergio:如果你 'ha ha': 6$set: { p: 11 } 会发生什么?
  • @muistooshort:好吧,他问的是符号。带符号 - 没有区别:)
  • @Sergio: :'ha ha':$set 都是符号,在使用 MongoDB 时,:$set 之类的东西很常见......
  • @muistooshort:我知道。我应该给出更笼统的答案。这就是为什么我留下评论(我现在应该删除)。

标签: ruby hashrocket


【解决方案1】:

没有区别。

我更喜欢第二种语法,因为我认为在进行简要概述时更容易看到。

在 Ruby 1.9.x 和 2.0.0 中

【讨论】:

  • 不正确,有些符号只对 hashrocket 语法有效。如果您的 Hash 具有非符号键,您还必须使用 hashrocket。
【解决方案2】:

第一个在 Ruby 1.8 中不起作用

【讨论】:

    【解决方案3】:

    它们都构造了一个哈希键值对。在大多数情况下,它们是可以互换的。 parameter: "String" 语法是在 Ruby 1.9 中引入的,并以 JSON 为蓝本。

    存在一些差异/陷阱。最大的问题是较新的语法不处理带引号的键。在 1.8 样式的哈希中,您可以这样做:

    :"multi word key" => some_value
    

    在 1.9 样式的哈希中,这是一个语法错误:

    "multi word key": some_value
    

    【讨论】:

      【解决方案4】:

      这只是一个语法糖。

      如果你在 irb 中看到 Ruby 1.8.7

      1.8.7 :004 > {:name => 'String'}
       => {:name=>"String"}
      

      和 1.9.3

      1.9.3p392 :002 > {name: 'String'}
       => {:name=>"String"} 
      

      两者都返回相同的格式。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-03-31
        • 2011-01-28
        • 1970-01-01
        • 2023-02-02
        • 2014-03-04
        相关资源
        最近更新 更多