Avatar ·

¿Cuál es la diferencia entre los operadores == y === en Swift? Explicación detallada para principiantes

¡Hola a todos! Acabo de empezar a aprender Swift y me encontré con una confusión. En el código veo dos operadores: == y ===. A primera vista hacen lo mismo: comparan valores. Pero noté que el compilador a veces se queja cuando intento usarlos incorrectamente. Aquí hay un ejemplo que me confunde: ```swift class Person { var name: String init(name: String) { self.name = name } } let person1 = Person(name: "Alice") let person2 = Person(name: "Alice") let person3 = person1 print(person1 == person2) // Error: el operador binario '==' no se puede aplicar a operandos de tipo 'Person' print(person1 === person2) // false print(person1 === person3) // true ``` ¿Por qué `==` no funciona en absoluto para mi clase, mientras que `===` funciona pero da resultados diferentes? ¿Cuál es la diferencia entre ellos? ¿Cuándo usar cada uno? He oído que esto está relacionado con tipos por referencia y tipos por valor, pero me gustaría obtener una explicación clara con ejemplos. Gracias de antemano por la respuesta.