hash(x[, h::UInt])

Compute an integer hash code such that isequal(x,y) implies hash(x)==hash(y). The optional second argument h is a hash code to be mixed with the result.

New types should implement the 2-argument form, typically by calling the 2-argument hash method recursively in order to mix hashes of the contents with each other (and with h). Typically, any type that implements hash should also implement its own == (hence isequal) to guarantee the property mentioned above.


  1. Calculate the hash code for an integer:

    julia> hash(42)

    This example calculates the hash code for the integer 42.

  2. Calculate the hash code for a string:

    julia> hash("Hello, Julia!")

    It calculates the hash code for the string "Hello, Julia!".

  3. Mix a custom hash code with the result:

    julia> hash(10, 20)

    In this example, the custom hash code 20 is mixed with the hash code of the integer 10.

  4. Implement a custom type with its own hash function:

    julia> struct Person
    julia> Base.hash(p::Person, h::UInt) = hash(p.name, p.age, h)
    julia> p = Person("Alice", 25)
    julia> hash(p)

    Here, a custom type Person is defined with its own hash function. The hash function is implemented by mixing hashes of the name and age fields along with the optional h argument.

When implementing the hash function for custom types, it is important to ensure that the == (equality) operator is also implemented to guarantee that equal objects have equal hash codes.

See Also

User Contributed Notes

Add a Note

The format of note supported is markdown, use triple backtick to start and end a code block.

*Required Field

Checking you are not a robot: