繁体   English   中英

在协议扩展中快速初始化关联类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM