[英]Swift 4 protocol extension - convenience initializer default implementation
我試圖弄清楚如何在實現類型可以繼承的協議擴展中創建默認協議初始值設定項實現。
它看起來像這樣:
protocol Initializable {
associatedtype EntityType: ConcreteClass
var container: Container<EntityType> { get set }
init()
}
class Container<T: ConcreteClass> {
typealias EntityType = T
let configuration : Configuration
init(config: Configuration) {
configuration = config
}
func getAll() -> [EntityType] {
return [EntityType()]
}
}
extension Initializable {
init(config: Configuration) {
self.init()
self.container = Container<EntityType>(config: config)
}
}
final class Repo: Initializable {
typealias EntityType = String
var container: Container<String>
}
我最終得到以下編譯器錯誤:
“Repo”類型不符合“Initializable”協議。 候選人具有不匹配的類型 'init(type: EntityType.Type)'
您在協議和擴展中使用不同的 init。
init(type: EntityType)
您必須在擴展或類中實現方法 init()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.