gpt4 book ai didi

swift - 仅用一个函数返回多种类型

转载 作者:搜寻专家 更新时间:2023-11-01 07:12:48 25 4
gpt4 key购买 nike

我搜索,如何只用一个函数返回多种类型。

型号:

//MARK: - MODEL -
class ModelA: NSObject, Model{
var name: String
init(name: String) {
self.name = name
super.init()
}

func build()-> ModelA{
return self
}
}

class ModelB: NSObject, Model{

var pseudo: String
init(pseudo: String) {
self.pseudo = pseudo
super.init()
}

func build()-> ModelB{
return self
}
}

我的协议(protocol):

protocol Model{
associatedtype T
func build()-> T
}

和我的枚举:

enum Api{

case a
case b

func request()->Model{
switch self {
case .a: return ModelA(name: "Test")
case .b: return ModelB(pseudo: "Ok")
}
}
}

但是当我构建时,我有这个错误:

Playground execution failed: error: MyPlayground.playground:52:21: error: protocol 'Model' can only be used as a generic constraint because it has Self or associated type requirements
func request()->Model{

最佳答案

基于此answer ,您必须使用具有关联类型的协议(protocol)作为通用约束。

func request<T: Model>() -> T {
switch self {
case .a:
return ModelA(name: "") as! T
case .b:
return ModelB(pseudo: "") as! T
}
}

关于swift - 仅用一个函数返回多种类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44066480/

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