Могу ли я добавить соответствие протокола протоколу через быстрое расширение?
//Plain old protocol here
protocol MyData {
var myDataID: Int { get }
}
Я хочу сделать MyData
протокол равным по умолчанию (просто сравните ID)
extension MyData : Equatable { }
Но я получаю эту прекрасную ошибку:
"Расширение протокола" MyData "не может иметь условие наследования"
Поведение, которое я ищу, - это BananaData, соответствующая Equatable (протокол), поскольку он реализует протокол MyData, который может обеспечить стандартную реализацию Equatable
//This is the method to implement Equatable
func ==(lhs: MyData, rhs: MyData) -> Bool {
return lhs.myDataID == rhs.myDataID
}
struct BananaData: MyData {
var myDataID: Int = 1
}
func checkEquatable(bananaOne: BananaData, bananaTwo: BananaData) {
//This compiles, verifying that BananaData can be compared
if bananaOne == bananaTwo { }
//But BananaData is not convertible to Equatable, which is what I want
let equatableBanana = bananaOne as Equatable
//I don't get the additional operations added to Equatable (!=)
if bananaOne != bananaTwo { } //Error
}