TL; DR - đó là giá trị hash
cho đối tượng top-level Ruby, tương đương với self.hash
.
Dưới đây là một chút gỡ rối giúp đỡ:
irb(main):001:0> hash
#=> 3220857809431415791
irb(main):002:0> defined? hash
#=> "method"
irb(main):003:0> method(:hash)
#=> #<Method: Object(Kernel)#hash>
Bây giờ bạn có thể tra cứu Object#hash
trực tuyến:
http://ruby-doc.org/core-2.3.1/Object.html#method-i-hash
Hoặc trong 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>
Object(Kernel)#hash
thực sự có nghĩa là hash
được định nghĩa trong Kernel
, nhưng như đã nêu trong tài liệu hướng dẫn cho Object
:
Mặc dù các phương pháp thể hiện của đối tượng được định nghĩa bởi các mô-đun hạt nhân, chúng tôi đã lựa chọn tìm hiểu về chúng ở đây cho rõ ràng.
http://ruby-doc.org/core-2.0.0/Object.html#method-i-hash – mudasobwa