![](/img/trans.png)
[英]Swift: override associatedtype from protocol extension in protocol conformance
[英]Swift initialization of associatedtype inside protocol extension
我有以下通用协议:
protocol Store {
associatedtype Model
func fetch(byId id : Int) -> Model
func add(model: Model) -> Bool
}
如何初始化/创建关联类型模型的新实例? 例如
protocol RestStore: Store
extension RestStore {
func fetch(byId id : Int) -> Model {
let object = Model() // error here
// ...
return object
}
}
我收到以下错误:
Non-nominal type 'Self.Model' does not support explicit initialization
我还尝试过约束Model类型,如下所示:
protocol RestStore: Store where Model == AnyClass
但这都不起作用。 我想创建一个关联类型Model的实例,有什么想法吗?
由于编译器不知道Model将是哪种类型,因此它无法知道它将拥有什么样的初始化器,因此它无法知道Model()
是否为有效代码。
您可以约束Model,以便它必须符合包含要使用的初始化程序的协议。 然后,您应该能够创建它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.