У меня есть класс 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. Есть ли способ убедиться, что == для подкласса сначала вызван?