Sobes.tech
Junior — Middle

¿Qué condiciones y características deben tener los objetos para que puedan usarse como claves en un diccionario?

sobes.tech AI

Respuesta de la IA

Para que un objeto pueda ser utilizado como clave en un diccionario (por ejemplo, en NSDictionary o Swift Dictionary), debe cumplir con las siguientes condiciones:

  • Hashabilidad: el objeto debe tener un método de cálculo de hash correctamente implementado (hash en Swift, hashValue o hash(into:)), para que el diccionario pueda encontrar la clave rápidamente.
  • Comparabilidad por igualdad: el objeto debe implementar correctamente el método de comparación de igualdad (isEqual en Objective-C, Equatable en Swift), para que el diccionario pueda distinguir diferentes claves.

Por ejemplo, en Swift, para usar un tipo personalizado como clave, es necesario implementar los protocolos Hashable y Equatable:

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

var dict: [Person: String] = [:]
dict[Person(id: 1, name: "Alice")] = "Developer"

De esta manera, los objetos deben ser inmutables en los campos que participan en el cálculo del hash y la comparación, para que las claves permanezcan estables en el diccionario.