Sobes.tech
Junior — Middle

¿Qué propiedades debe tener un objeto que implementa el protocolo Hashable para que pueda ser utilizado en tablas hash?

sobes.tech AI

Respuesta de la IA

Un objeto que implementa el protocolo Hashable en iOS (Swift) debe tener las siguientes propiedades:

  1. Conformidad al protocolo Hashable — el objeto debe implementar el método hash(into:), que añade todas las propiedades relevantes para el hash en la función hash.

  2. Equivalencia (Equatable) — los objetos considerados iguales (a través del operador ==) deben tener el mismo hash.

Esto es necesario para que el objeto pueda ser utilizado en tablas hash (por ejemplo, en Set o como clave en Dictionary), donde el hash determina la posición del elemento, y la igualdad determina la unicidad.

Ejemplo de implementación:

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

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

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

Aquí, id es un identificador único, por el cual se determina el hash y la igualdad.