有一个默认变量`hash`吗?

时间:2015-07-01 14:38:05

标签: ruby

我在irb或Rails控制台中键入hash,我可以看到它包含一些随机值。我不知道它应该存在还是由某些宝石完成。

下面:

hash # => -943824087729528496

再试一次:

hash # => 3150408717325671348 

这是正常的吗?如果是这样,有什么用?或者这个值意味着什么?

3 个答案:

答案 0 :(得分:6)

在Ruby中,所有顶级方法调用都发生在main对象上:

self
#=> main 

main是类Object的对象:

self.class
#=> Object

所以在顶级,hash调用main对象上的Object#hash方法:

  

hash→fixnum

     

为此对象生成Fixnum哈希值。这个功能必须有   a.eql?(b)隐含a.hash == b.hash的属性。

     

哈希值与eql一起使用?由Hash类来确定   如果两个对象引用相同的哈希键。任何哈希值   超过Fixnum的容量将在被使用前被截断。

     

对象的哈希值在调用之间可能不相同   或Ruby的实现。如果你需要一个稳定的标识符   您需要生成一个Ruby调用和实现   使用自定义方法。

有关Ruby顶级的更多信息,请参阅博客文章 What is the Ruby Top-Level?

答案 1 :(得分:1)

通过hash / pry来电irb,只需拨打Object#hash上的main即可。

答案 2 :(得分:1)

hash是对象(docs

上的方法

它是"顶级"的一部分more info

相关问题