gpt4 book ai didi

协议(protocol)扩展内关联类型的快速初始化

转载 作者:行者123 更新时间:2023-11-28 12:18:27 24 4
gpt4 key购买 nike

我有以下通用协议(protocol):

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
}
}

我收到以下错误:

非标称类型“Self.Model”不支持显式初始化

我也尝试过限制 Model 类型,像这样:

protocol RestStore: Store where Model == AnyClass

但这都行不通。我想创建关联类型 Model 的实例,有什么想法吗?

最佳答案

由于编译器不知道 Model 将是什么类型,它无法知道它将具有哪些初始化器,因此它无法知道 Model() 是否是是否有效代码。

您可以约束模型,使其必须符合包含您要使用的初始化器的协议(protocol)。然后,您应该能够创建它。

关于协议(protocol)扩展内关联类型的快速初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45650936/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com