什么是ruby中的`hash`?
发布时间:2020-12-16 23:33:29 所属栏目:百科 来源:网络整理
导读:因为我忘记了一个赋值,所以在写它之前我会读取未定义的局部变量哈希.惊喜:没有得到一个NameError,而是读取的值很好:它是一些FixNum,程序崩溃得很晚. 调查问题,我做了以下事情: 打开irb 键入hash并按Enter键 惊喜!答案是-1831075300640432498(令人惊讶的
因为我忘记了一个赋值,所以在写它之前我会读取未定义的局部变量哈希.惊喜:没有得到一个NameError,而是读取的值很好:它是一些FixNum,程序崩溃得很晚.
调查问题,我做了以下事情: >打开irb 这是为什么?这是一个错误还是一个功能?我在这读什么? 解决方法
TL; DR – 它是
Ruby的
top-level对象的
hash 值,相当于self.hash.
这是一个小调试帮助: irb(main):001:0> hash #=> 3220857809431415791 irb(main):002:0> defined? hash #=> "method" irb(main):003:0> method(:hash) #=> #<Method: Object(Kernel)#hash> 您现在可以在线查找Object#hash1: http://ruby-doc.org/core-2.3.1/Object.html#method-i-hash 或者在IRB: irb(main):004:0> help "Object#hash" = Object#hash (from ruby core) ------------------------------------------------------------------------------ obj.hash -> fixnum ------------------------------------------------------------------------------ Generates a Fixnum hash value for this object. This function must have the property that a.eql?(b) implies a.hash == b.hash. The hash value is used along with #eql? by the Hash class to determine if two objects reference the same hash key. Any hash value that exceeds the capacity of a Fixnum will be truncated before being used. The hash value for an object may not be identical across invocations or implementations of Ruby. If you need a stable identifier across Ruby invocations and implementations you will need to generate one with a custom method. #=> nil irb(main):005:0> 1对象(内核)#hash实际上意味着哈希是在内核中定义的,但是如Object的文档中所述:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |