我在irb或Rails控制台中键入hash
,我可以看到它包含一些随机值。我不知道它应该存在还是由某些宝石完成。
下面:
hash # => -943824087729528496
再试一次:
hash # => 3150408717325671348
这是正常的吗?如果是这样,有什么用?或者这个值意味着什么?
答案 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)