У меня есть класс A
, который соответствует протоколу Equatable
и реализует функцию ==
. В подклассе B
я переопределяю ==
с большим количеством проверок.
Однако, когда я делаю сравнение между двумя массивами экземпляров B
(которые имеют тип Array<A>
), вызывается ==
для A
. Конечно, если я изменяю тип обоих массивов на Array<B>
, вызывается ==
для B
.
Я придумал следующее решение:
A.swift:
internal func ==(lhs: A, rhs: A) -> Bool {
if lhs is B && rhs is B {
return lhs as! B == rhs as! B
}
return ...
}
Что выглядит действительно уродливо и должно быть расширено для каждого подкласса A
. Есть ли способ убедиться, что ==
для подкласса сначала вызван?