當我在看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
}
}
啊哈!所以在第二個理由中,因爲它會被嵌套在擴展中,所以Swift不會看到它,因此會拋出一個Circle或Polygon不符合equatable的錯誤? – rb612