Skip to content

End of Life Ruby 3.0 has reached end of life and gets no more fixes. Switch to Ruby 4.0 →

instance method

Object#hash

obj.hash → integer

Generates an Integer 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 an Integer 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.

Certain core classes such as Integer use built-in hash calculations and do not call the hash method when used as a hash key.

See also #freeze #inspect #extend #instance_of? also in 4.1 · 4.0 · 3.4 · 3.3 · 3.2 · 3.1