Когда я смотрел 2 WWDC 2015 лекции, они отметили следующий код:Функции, определенные после расширения протокола?
func == (lhs: Polygon, rhs: Polygon) -> Bool {
return lhs.corners == rhs.corners
}
extension Polygon : Equatable {}
func == (lhs: Circle, rhs: Circle) -> Bool {
return lhs.center == rhs.center
&& lhs.radius == rhs.radius
}
extension Circle : Equatable {}
не Должен equatable объявления функций идет внутри расширений? Прямо сейчас, они снаружи и существуют где? Другими словами, разве это не должно выглядеть так?
extension Polygon : Equatable {
func == (lhs: Polygon, rhs: Polygon) -> Bool {
return lhs.corners == rhs.corners
}
}
extension Circle : Equatable {
func == (lhs: Circle, rhs: Circle) -> Bool {
return lhs.center == rhs.center
&& lhs.radius == rhs.radius
}
}
Aha! Итак, в причине 2, потому что он будет вложен внутри расширения, Swift не увидит его и, следовательно, будет вызывать ошибку, которая не соответствует окружности Circle или Polygon? – rb612