J'apprends toujours à travailler avec des tableaux d'objets implémentant des protocoles avec des types associés.Protocoles Swift et équitables
je les protocoles suivants:
public protocol Word : Equatable, Hashable { // compiles
associatedtype WordType : Equatable
var moreWords: [WordType] { get }
}
public protocol WordDataSource { // compiles
associatedtype SomeWord : Word
func findWord(spelling: String) -> SomeWord?
}
Je WordA
, WordB
et WordC
tout mettre en œuvre Word
et subclassing NSObject
Fondamentalement, je veux mettre en œuvre le protocole de source de données en utilisant différents types de classe mise en œuvre du Classe de mots C'est le genre de code que je voudrais écrire, mais évidemment il ne compile pas.
class MyDataSource : WordDataSource {
func findWord(spelling: String) -> SomeWord? {
if conditionA {
return WordA()
}
if conditionB {
return WordB()
}
if conditionA {
return WordC()
}
}
}
Est-ce encore possible dans Swift? Que dois-je écrire pour que cela fonctionne?
Merci beaucoup pour votre aide!