当我在观看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
}
}
答案 0 :(得分:2)
没有。运算符函数始终位于全局空间中,而不是在类或扩展中。
答案 1 :(得分:2)
尝试第二个版本时有两个问题:
换句话说,不,你不能根据运营商声明的范围来做。