Sobes.tech
Back to questions
Junior — Middle
66

Каким образом реализовать использование пользовательских объектов в качестве ключей при работе с словарями?

Companies where asked
VKVK

Answer from AI

sobes.tech AI

Чтобы использовать пользовательские объекты в качестве ключей в словарях (например, в Swift Dictionary), необходимо, чтобы эти объекты соответствовали протоколам Hashable и Equatable.

Это значит, что класс или структура должны реализовать методы для вычисления хэш-значения и проверки равенства объектов.

Пример на Swift:

struct User: Hashable {
    let id: Int
    let name: String

    func hash(into hasher: inout Hasher) {
        hasher.combine(id)
    }

    static func == (lhs: User, rhs: User) -> Bool {
        return lhs.id == rhs.id
    }
}

var dict: [User: String] = [:]
let user1 = User(id: 1, name: "Alice")
dict[user1] = "Admin"

В этом примере ключом словаря выступает объект User, уникально идентифицируемый по id. Реализация hash(into:) и == позволяет корректно хранить и искать объекты в словаре.