В Swift == и === служат разным целям и применяются к разным типам.
==Оператор == проверяет, равны ли два значения по содержимому. Он работает с любым типом, который соответствует протоколу Equatable, включая как value types (structs, enums), так и reference types (classes).
"hello" == "hello" // true — одинаковое содержимое
Логика сравнения определяется реализацией обязательного метода протокола Equatable:
static func == (lhs: MyType, rhs: MyType) -> Bool
===Оператор === проверяет, указывают ли две переменные на один и тот же объект в памяти. Он исключительно доступен для reference types (classes).
let a = MyClass()
let b = a
let c = MyClass()
a === b // true — один и тот же экземпляр
a === c // false — разные экземпляры, даже если содержимое равно
== сравнивает значения или содержимое; работает с value и reference types=== сравнивает идентичность в памяти; работает только с экземплярами классов== без ===, если у них одинаковое содержимое, но это разные экземпляры==, когда тебе важно, представляют ли два элемента одинаковое значение===, когда нужно убедиться, что две ссылки указывают на один и тот же объект, например при проверке владельца делегата или управлении общим состояниемОператор === можно использовать со структурами, чтобы определить, занимают ли две instances структуры одно и то же место в памяти.
Новый — ещё не проверен сообществом
Вы