Ce que j'ai essayé de faire:Comment remplacer les méthodes qui ont des paramètres de type associés dans les sous-classes?
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.
}
L'erreur est:
méthode ne l'emportait pas sur toute méthode de sa superclasse
Si je tente de ItemType utiliser à la place:
L'erreur est:« ItemType » est ambigu pour le type recherche dans ce contexte
est-il un moyen de faire ce travail?
Avez-vous essayé de le définir en tant qu'élément? Devrait être moins "ambigu" –
Ensuite, je devrais le mouler pour l'utiliser dans les sous-classes. Tout le but de cet exercice est de ne pas avoir à lancer la chose sacrée tout le temps. –
Mais oui, ça marche. –