== vs === — в чём разница?
Суть
==сравнивает значения. Определён протоколомEquatable; для своих типов вы решаете, что значит «равны» (все поля, толькоid, без учёта регистра).===сравнивает идентичность: указывают ли две ссылки на один и тот же объект в памяти. Определён только дляAnyObject, то есть для классов (и class-bound протоколов). Для структур, enum и кортежей===не существует.
final class Node: Equatable {
let value: Int
init(_ value: Int) { self.value = value }
static func == (l: Node, r: Node) -> Bool { l.value == r.value }
}
let a = Node(1), b = Node(1), c = a
print(a == b, a === b, a === c) // true false true
Продолжение ответа с кодом и уточняющими вопросами интервьюера — в приложении DevPrep.
Полный ответ — в DevPrep