Sobes.tech
Junior

Cos'è Hashable in Swift?

sobes.tech AI

Risposta dell'AI

Il protocollo Hashable consente di utilizzare oggetti in collezioni hashabili come Set e Dictionary. Il tipo corrispondente deve fornire hashValue, che permette di generare l'hash dell'oggetto.

Punti principali:

  • I tipi conformi a Hashable generano un numero intero che rappresenta il loro valore.
  • Se due oggetti sono uguali (==), i loro valori hash devono essere uguali.
  • Se due oggetti hanno valori hash uguali, non è obbligatorio che siano uguali.
  • Swift genera automaticamente un'implementazione di Hashable per strutture ed enumerazioni se tutti i loro membri sono Hashable.
  • Per classi o strutture personalizzate con membri non Hashable, è necessario implementare hash(into:) manualmente.

Esempio di implementazione manuale:

struct MyStruct {
    let id: Int
    let name: String
}

extension MyStruct: Hashable {
    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
        hasher.combine(name)
    }
}