Кажется, что protocol
не поддерживает оператор ===
, а class
делает.
protocol P {
}
class A : P {
}
var a1 = A()
var a2 = A()
var p1:P = a1
var p2:P = a2
a1 === a2 // true
p1 === p2 // error: Type 'P' does not conform to protocol 'AnyObject'
Я думаю, что это может быть связано с тем, что конкретный тип, соответствующий протоколу, также может быть типом значения (например, struct
), который не поддерживает оператор ===
.
Мне просто интересно, что если я уверен, что настоящий тип является классом, как я могу сравнить ссылки на них, например, p1
и p2
здесь?