Junior — Middle
Milyen típusú objektumokat lehet kulcs-elemként használni egy Set típusú gyűjteményben?
sobes.tech MI
Válasz az MI-től
Az iOS-on lévő Set típusú gyűjteményben (például NSSet vagy Swift Set) a kulcs-elemként használható objektumoknak a következő követelményeknek kell megfelelniük:
- Objective-C-ben (NSSet): az objektumoknak támogatniuk kell a
-hashés-isEqual:metódusokat a helyes összehasonlítás és hash-elés érdekében. - Swift-ben (Set): az elemeknek meg kell felelniük a
Hashableprotokollnak, vagyis rendelkezniük kell egy hash értékkel és az egyenlőség szerinti összehasonlítás lehetőségével.
Ez szükséges ahhoz, hogy a gyűjtemény hatékonyan tárolhassa az egyedi elemeket és gyors keresési műveleteket hajthasson végre.
Swift példával:
struct Person: Hashable {
let id: Int
let name: String
}
var peopleSet = Set<Person>()
peopleSet.insert(Person(id: 1, name: "Иван"))
Így bármely Hashable-t megvalósító (Swift-ben) vagy hash és isEqual: metódusokat tartalmazó (Objective-C-ben) objektum lehet a Set eleme.