我有以下結構代表的點或線:迅速 - 比較結構符合協議
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