我試圖這樣做:如何覆蓋子類中具有關聯類型參數的方法?
protocol HasElement {
associatedtype ItemType
func getElement() -> ItemType
func setElement(element: ItemType)
}
class Element {}
class BarElement: Element {}
class Foo: NSObject, HasElement {
typealias ItemType = Element
func getElement() -> Element { ... }
func setElement(element: Element) { ... }
}
class Bar: Foo {
typealias ItemType = BarElement
override func getElement() -> BarElement { ... } // This works.
override func setElement(element: BarElement) { ... } // This fails.
}
的錯誤是:
方法不會覆蓋任何方法,其超
如果我嘗試使用ItemType的,而不是:
override func setElement(element: ItemType) { ... } // Still fails.
錯誤是:
「的ItemType」不明確的類型查找在這方面
有沒有一種方法,使這項工作?
您是否嘗試將它設置爲Element?應該少一些「含糊」 –
然後我不得不將它用在子類中。這個練習的重點在於不必一直拋出困難的東西。 –
但是,這確實有效。 –