Avatar ·

Qual a diferença entre os operadores == e === em Swift? Explicação detalhada para iniciantes

Olá a todos! Acabei de começar a estudar Swift e me deparei com uma confusão. No código, vejo dois operadores: == e ===. À primeira vista, eles fazem a mesma coisa — comparam valores. Mas notei que o compilador às vezes reclama quando tento usá-los incorretamente. Aqui está um exemplo que me deixa confuso: ```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) // Erro: o operador binário '==' não pode ser aplicado a operandos do tipo 'Person' print(person1 === person2) // false print(person1 === person3) // true ``` Por que `==` simplesmente não funciona para minha classe, enquanto `===` funciona, mas dá resultados diferentes? Qual é a diferença entre eles? Quando usar cada um? Ouvi dizer que isso está relacionado a reference types e value types, mas gostaria de uma explicação clara com exemplos. Desde já, obrigado pela ajuda.