Search code examples
rubyirb

What is 'hash' used for in irb?


When I go into irb and enter hash, it returns some value such as 2601657421772335946, a Fixnum. What is hash used for?


Solution

  • Pretty much everything in Ruby responds to hash, including the self in irb. From the fine Object manual:

    hash()

    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 sql? 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.

    The Hash class uses the hash value internally to figure out how to arrange Hash keys.