Junior — Middle
Ποιοι τύποι αντικειμένων επιτρέπεται να χρησιμοποιούνται ως στοιχεία-κλειδιά σε μια συλλογή τύπου Set;
sobes.tech AI
Απάντηση από AI
Στη συλλογή τύπου Set στο iOS (π.χ., NSSet ή Swift Set), τα στοιχεία-κλειδιά μπορούν να είναι αντικείμενα που πληρούν τις ακόλουθες απαιτήσεις:
- Στην Objective-C (NSSet): τα αντικείμενα πρέπει να υποστηρίζουν τις μεθόδους
-hashκαι-isEqual:για σωστή σύγκριση και κατακερματισμό. - Στο Swift (Set): τα στοιχεία πρέπει να συμμορφώνονται με το πρωτόκολλο
Hashable, δηλαδή να έχουν μια τιμή κατακερματισμού και τη δυνατότητα σύγκρισης για ισότητα.
Αυτό είναι απαραίτητο ώστε η συλλογή να μπορεί να αποθηκεύει αποτελεσματικά μοναδικά στοιχεία και να εκτελεί γρήγορες λειτουργίες αναζήτησης.
Παράδειγμα σε Swift:
struct Person: Hashable {
let id: Int
let name: String
}
var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))
Επομένως, οποιοδήποτε αντικείμενο που υλοποιεί το Hashable (στο Swift) ή τις μεθόδους hash και isEqual: (στην Objective-C) μπορεί να είναι στοιχεία του Set.