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.