Ruby和哈希之间的区别是什么?

时间:2012-09-19 21:51:56

标签: ruby syntax semantics

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

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

并在其他地方使用此:

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

这两种方法有什么区别?

3 个答案:

答案 0 :(得分:3)

""声明String:声明Symbol。如果您正在使用哈希,并且您不需要更改密钥的值或保留任何内容,请使用符号。

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

答案 1 :(得分:2)

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

大多数情况下,使用符号但两者都是正确的。一些人读到了这个主题:

What are symbols and how do we use them?

Why use symbols as hash keys in Ruby?

答案 2 :(得分:2)

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

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

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