在 Swift 中可以使用自定义的类型作为字典的 key , 但需要遵循 Hashable 协议,Hashable

这是一个例子:

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

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

struct Car {
    let brand: String
    let model: String
}

struct House {
    let location: String
    let price: Float
}

let cars: [Person: Car] = [
    Person(name: "Tom", id: "123"): Car(brand: "BMW", model: "3")
]

print(cars[Person(name: "Tom", id: "123")])

print(cars[Person(name: "Tom", id: "123x")])

hash(into:) 方法可以根据 id 生成一个唯一的 hash

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