Sobes.tech
Junior — Middle

Ποιες ιδιότητες πρέπει να έχει ένα αντικείμενο που υλοποιεί το πρωτόκολλο Hashable ώστε να μπορεί να χρησιμοποιηθεί σε πίνακες κατακερματισμού;

sobes.tech AI

Απάντηση από AI

Ένα αντικείμενο που υλοποιεί το πρωτόκολλο Hashable στο iOS (Swift) πρέπει να διαθέτει τα ακόλουθα χαρακτηριστικά:

  1. Συμμόρφωση με το πρωτόκολλο Hashable — το αντικείμενο πρέπει να υλοποιεί τη μέθοδο hash(into:), η οποία προσθέτει όλες τις σημαντικές ιδιότητες για το hashing στη συνάρτηση hash.

  2. Ισοδυναμία (Equatable) — τα αντικείμενα που θεωρούνται ίσα (μέσω του τελεστή ==) πρέπει να έχουν το ίδιο hash.

Αυτό είναι απαραίτητο ώστε το αντικείμενο να μπορεί να χρησιμοποιηθεί σε πίνακες κατακερματισμού (π.χ., σε Set ή ως κλειδί σε Dictionary), όπου το hash καθορίζει τη θέση του στοιχείου και η ισοδυναμία την μοναδικότητα.

Παράδειγμα υλοποίησης:

struct User: Hashable {
    var id: Int
    var name: String

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }

    static func == (lhs: User, rhs: User) -> Bool {
        return lhs.id == rhs.id
    }
}

Εδώ, το id είναι ένας μοναδικός αναγνωριστικός δείκτης, μέσω του οποίου καθορίζεται το hash και η ισοδυναμία.