当我在看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