【Swift】Equatableプロトコルの使い方!値の比較とComparableの違い

この記事からわかること
- SwiftのEquatableの使い方
- 独自クラスを比較できるようにする方法
- Comparableとの違い
\ アプリをリリースしました /
環境
- Xcode:15.0.1
- iOS:17.0
- watchOS:10.0
- Swift:5.9
- macOS:Sonoma 14.1
Equatableプロトコルとは?
SwiftのEquatableプロトコルはクラスや構造体を比較できるようにする機能を持たせる役割を持つプロトコルです。独自に定義したクラスや構造体は==
演算子などで比較しても期待通りに動作しません。
例えば構造体をインスタンス化した変数を2つ用意し、両者の値が同じかどうか識別しようとしてみます。
ですが上記のコードでは下記のような「'=='演算子に対応していないオペランドだよ」といったエラーが発生してしまいます。
これを解決するのがEquatable
プロトコルです。定義元の構造体をEquatable
プロトコルに準拠させることで比較可能になりエラーが発生しなくなります。
実装方法
Equatableプロトコルに準拠させると==関数
の実装が必須になります。==関数
の中に比較条件を自分で記述しておくことで一致しているかどうかを識別します。引数lhs
とrhs
から左右の値を取得できるので最終的な一致条件をBool
で返します。
大小を比較する:Comparable
クラスや構造体の大小を比較できるようにするためにはComparable
プロトコルを使用します。Comparable
プロトコル自体がEquatable
を継承しているため==
関数を必須になります。
Comparable
では
<
関数を実装します。
ちなみにEquatable
に準拠させることでfirstIndex(of :)
などが使用できるようになります。
まだまだ勉強中ですので間違っている点や至らぬ点がありましたら教えていただけると助かります。
ご覧いただきありがとうございました。