概要

Hashableとは、Swiftのプロトコルの一つです。Hashableプロトコルに準拠することで、オブジェクトをハッシュ値に変換することができます。これにより、オブジェクトをハッシュテーブルなどのデータ構造に格納したり、比較したりすることが容易になります。

Hashableプロトコルを準拠するためには、オブジェクトがユニークなハッシュ値を返すことが求められます。また、ハッシュ値が等しい場合には、オブジェクト同士が等しいと判断される必要があります。

Swiftでは、多くの組み込みのデータ型やカスタムの型が既にHashableプロトコルに準拠しています。また、独自のクラスや構造体をHashableにするためには、ハッシュ値を計算するためのプロパティやメソッドを実装する必要があります。


公式

Hashable | Apple Developer Documentation


IdentifiableプロトコルとHashableプロトコルの違い

Identifiable

一意を確保できるのはIdentifiableプロトコル

Identifiableは一意であることを絶対的に保証する

算出されたidは不変である

Hashable

検索の速度や簡易的な一意の確保はHashableプロトコルを用いる

ハッシュ関数を用いて導き出されたハッシュ値を使ってハッシュテーブルを作成し、高速な検索と追加、削除を実現する

ただし、ハッシュ値は固定値ではなく、アプリ起動毎に再計算される

よって一時的な一意性の確認には使えるが、永続的な一意性の確認には使えない


Hashableプロトコルに準拠している型