swift - 根据条件选择泛型
问题描述
我无法弄清楚如何根据给定条件动态选择泛型类型。例如:
let someCondition: Bool = ...
var model = someCondition ? SomeStruct.self : [SomeOtherStruct].self
doSomething(modelType: model) { result in
...
}
func doSomething <T: Codable>(modelType: T.Type, completion: @escaping (Result<T, Error>) -> Void) {
...
}
上面第 2 行中的三元运算导致以下错误:Result values in '? :' expression have mismatching types 'SomeStruct.Type' and '[SomeOtherStruct].Type'
知道解决方案或解决方法是什么吗?提前致谢。
[编辑]
更详细地说,这个想法是doSomething()
执行请求并接收 JSON 有效负载,该有效负载取决于 URL,返回给定结构(例如SomeStruct
或[SomeOtherStruct]
:
https://sandbox.somecompany.com/foo/chart/1d
返回一个可以映射到的有效载荷SomeStruct
。
https://sandbox.somecompany.com/foo/chart/5d
返回一个可以映射到的有效载荷[SomeOtherStruct]
。
网络请求是完全一样的,所有改变的只是 URL 中指定的参数(即1d
or 5d
)。我可以将这个函数分成两个——每种情况一个——,但我想知道这是否可以使用泛型统一到一个函数中。
解决方案
推荐阅读
- javascript - 在 mongoose schema.add 之后添加的属性不能完全工作
- ruby-on-rails - 处理 Rails 中的异常
- javascript - 我收到以下错误:错误类型错误:无法读取未定义的属性“无效”
- unity3d - Unity Photon Player 实例化
- python - CSV 写入从标签列开始
- java - 使用插入排序在java中对双向链表进行排序
- codeigniter - 从文件夹中删除音频文件
- android - wear OS - 来自智能手表的 http 帖子
- java - 在 HashMap 内的 Object 中的值后排序
- android - MapFragment 上的黑屏