我有以下结构代表的点或线:迅速 - 比较结构符合协议
public struct Point{
let x : Double
let y : Double
init (x : Double, y : Double)
{
self.x = x
self.y = y
}
}
extension Point : Equatable{}
public func ==(lhs: Point, rhs: Point) -> Bool
{
return lhs.x == rhs.x && lhs.y == rhs.y
}
而且
public struct Line {
let points : [Point]
init(points : [Point])
{
self.points = points
}
}
extension Line : Equatable {}
public func ==(lhs: Line, rhs: Line) -> Bool
{
return lhs.points == rhs.points
}
我希望能够有一个形状协议或结构,我可以使用有点和线,然后我可以比较它们之间。 我试图用符合协议形状,但Swift编译器给我一个错误,当我想比较一个点与一个线,即使他们是形状。
我必须从结构转移到班?
我想我可能不得不使用泛型,但不知道如何解决这个问题。 在此先感谢您的任何指导。
EDIT1:
我的方法来塑造协议真的只是想的东西,但没有奏效。我试过如下:
protocol MapShape : Equatable
{
func == (lhs: MapShape, rhs: MapShape) -> Bool
}
我也改变了代码给出的建议
如果我没有记错,在“雨燕协议的程序设计”的WWDC 2015年视频介绍这个问题。 (在任何情况下,每个Swift程序员都应该看到!) –
你在shape结构体中做了什么?请分享 – Kametrixom
共享我试图使用和编辑我的代码给你的建议@Kametrixom – Franklin