我仍在学习如何使用实现具有关联类型的协议的对象数组。
我有以下协议:
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?
}
我有WordA
,所有的实现WordB
和子类化WordC
Word
NSObject
基本上,我想使用实现 Word 类的不同类来实现数据源协议。这是我想写的那种代码,但显然它不能编译。
class MyDataSource : WordDataSource {
func findWord(spelling: String) -> SomeWord? {
if conditionA {
return WordA()
}
if conditionB {
return WordB()
}
if conditionA {
return WordC()
}
}
}
这在 Swift 中是否可行?我应该写什么来完成这项工作?
非常感谢你的帮助!