Sobes.tech
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.