我试图这样做:如何覆盖子类中具有关联类型参数的方法?
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?应该少一些“含糊” –
然后我不得不将它用在子类中。这个练习的重点在于不必一直抛出困难的东西。 –
但是,这确实有效。 –