Sobes.tech
Junior — Middle

Quali tipi di oggetti sono ammessi come elementi-chiave in una collezione di tipo Set?

sobes.tech AI

Risposta dell'AI

In una collezione di tipo Set su iOS (ad esempio, NSSet o Swift Set), gli elementi-chiave possono essere oggetti che soddisfano i seguenti requisiti:

  • In Objective-C (NSSet): gli oggetti devono supportare i metodi -hash e -isEqual: per un confronto e un hashing corretti.
  • In Swift (Set): gli elementi devono conformarsi al protocollo Hashable, cioè avere un valore hash e la capacità di confrontarsi per uguaglianza.

Ciò è necessario affinché la collezione possa memorizzare in modo efficiente elementi unici e eseguire operazioni di ricerca rapidamente.

Esempio in Swift:

struct Person: Hashable {
    let id: Int
    let name: String
}

var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))

Pertanto, qualsiasi oggetto che implementi Hashable (in Swift) o i metodi hash e isEqual: (in Objective-C) può essere un elemento di Set.