Ruby哈希中":"和""有什么区别?

3

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

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

在其他地方使用以下内容:

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

这两种方法有何区别?
3个回答

3

"" 表示一个 字符串: 表示一个符号。如果你正在使用哈希表,并且不需要改变键的值或在其他地方保留它,请使用符号。

请查看这里以获取更详细的说明。


2

2

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

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接