【问题标题】:What is the difference between : and "" in Ruby hashes?Ruby 哈希中的 : 和 "" 有什么区别?
【发布时间】:2012-09-12 06:39:42
【问题描述】:

我看到有些人像这样使用哈希:

end_points = { "dev" => "http://example.com"}

在其他地方使用这个:

 end_points = { :dev => "http://example.com"}

这两种方法有什么区别?

【问题讨论】:

    标签: ruby syntax semantics


    【解决方案1】:

    在第一种情况下,您使用字符串,在第二种情况下,您使用符号。符号是 Ruby 中的特定类型。在整个程序中只有一个符号实例,但字符串可以有很多。即

    > :sym.__id__
    => 321608
    > :sym.__id__
    => 321608
    > "sym".__id__
    => 17029680
    > "sym".__id__
    => 17130280
    

    正如您所见,符号始终具有相同的 ID,这意味着它始终是同一个对象,但字符串每次都是新字符串在新的内存位置。这就是为什么符号作为哈希键更常见的原因,它只是更快。

    【讨论】:

      【解决方案2】:

      :dev 是一个符号,'dev' 是一个字符串。

      大多数时候,使用符号但两者都是正确的。一些关于这个主题的阅读:

      What are symbols and how do we use them?

      Why use symbols as hash keys in Ruby?

      【讨论】:

        【解决方案3】:

        "" 声明一个String: 声明一个 Symbol。如果您使用的是散列,并且您不需要更改键的值或保留它的任何内容,请使用符号。

        查看this 以获得更详细的解释。

        【讨论】:

          猜你喜欢
          • 2015-05-14
          • 2016-03-20
          • 2023-03-04
          • 2011-08-31
          • 2012-04-03
          • 2016-01-24
          • 1970-01-01
          • 2010-10-02
          • 1970-01-01
          相关资源
          最近更新 更多