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
Hashablegenerano 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
Hashableper strutture ed enumerazioni se tutti i loro membri sonoHashable. - Per classi o strutture personalizzate con membri non
Hashable, è necessario implementarehash(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)
}
}