A type that provides an integer hash value.
- Xcode 6.0.1+
- Swift Standard Library
You can use any type that conforms to the
Hashable protocol in a set or as a dictionary key. Many types in the standard library conform to
Hashable: strings, integers, floating-point and Boolean values, and even sets provide a hash value by default. Your own custom types can be hashable as well. When you define an enumeration without associated values, it gains
Hashable conformance automatically, and you can add
Hashable conformance to your other custom types by adding a single
A hash value, provided by a type’s
hash property, is an integer that is the same for any two instances that compare equally. That is, for two instances
b of the same type, if
a == b then
a. The reverse is not true: Two instances with equal hash values are not necessarily equal to each other.
Conforming to the Hashable Protocol
To use your own custom type in a set or as the key type of a dictionary, add
Hashable conformance to your type by providing a
hash property. The
Hashable protocol inherits from the
Equatable protocol, so you must also add an equal-to operator (
==) function for your custom type.
As an example, consider a
Grid type that describes a location in a grid of buttons. Here’s the initial declaration of the
You’d like to create a set of the grid points where a user has already tapped. Because the
Grid type is not hashable yet, it can’t be used as the
Element type for a set. To add
Hashable conformance, provide an
== operator function and a
hash property in this example combines the hash value of a grid point’s
x property with the hash value of its
y property multiplied by a prime constant.
Grid conforms to the
Hashable protocol, you can create a set of previously tapped grid points.