iOSエンジニアのつぶやき

毎朝8:30に iOS 関連の技術について1つぶやいています。まれに釣りについてつぶやく可能性があります。

【Swift】手動でHashableに準拠させる

UIEdgeInsetsHashableに準拠させる実装を手動で行なった時のメモ。

手動でhashvalueを取得

手動でhashvalueを取得したい場合、SwiftではHasher構造体を使用できます。combine()メソッドでデータをキャプチャし、finalize()メソッドでhashvalueを生成します。

var hasher = Hasher()
hasher.combine(23)
hasher.combine("Hello")
let hashValue = hasher.finalize()

UIEdgeInsetsをHashableに準拠させてみる

上記の内容を踏まえて、UIEdgeInsetsを下記のようにしてHashableに準拠させることができます。今回に限らず、他の場面でも使えるので覚えておくと良さそうですね🍜

extension UIEdgeInsets: Hashable {
    public func hash(into hasher: inout Hasher) {
        hasher.combine(left)
        hasher.combine(right)
        hasher.combine(top)
        hasher.combine(bottom)
    }
}

てな感じで本日も以上となります🏃‍♂️

参考

developer.apple.com

その他の記事

yamatooo.blog

yamatooo.blog

yamatooo.blog