Ruby 哈希中的 : 和 "" 有啥区别?
Posted
技术标签:
【中文标题】Ruby 哈希中的 : 和 "" 有啥区别?【英文标题】: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"
这两种方法有什么区别?
【问题讨论】:
【参考方案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 以获得更详细的解释。
【讨论】:
以上是关于Ruby 哈希中的 : 和 "" 有啥区别?的主要内容,如果未能解决你的问题,请参考以下文章