Sobes.tech
Junior — Middle

Milliseid objektitüüpe lubatakse kasutada võtmeelementidena Set-tüüpi kogumis?

sobes.tech AI

Vastus AI-lt

iOS-tüüpi Set kogumis võib võtmeelementideks olla objektid, mis vastavad järgmistele nõuetele:

  • Objective-C-s (NSSet): objektid peavad toetama meetodeid -hash ja -isEqual: õige võrdlemise ja hajutamise jaoks.
  • Swift-is (Set): elemendid peavad vastama protokollile Hashable, st neil peab olema hajuväärtus ja võime võrrelda ühtlust.

See on vajalik selleks, et kogumik saaks tõhusalt salvestada unikaalseid elemente ja kiiresti otsingutegevusi teha.

Näide Swift-is:

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

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

Seega võib iga objekt, mis rakendab Hashable (Swift-is) või sisaldab meetodeid hash ja isEqual: (Objective-C-s), olla Set-i element.