Sobes.tech
Junior — Middle

რა ტიპის ობიექტები შეიძლება გამოყენებულ იქნას გასაღების ელემენტებად Set ტიპის კოლექციაში?

sobes.tech AI

პასუხი AI-სგან

iOS-ის ტიპის Set კოლექციაში (მაგალითად, 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-ის ელემენტი.