gpt4 book ai didi

swift - 有没有办法让通用对象没有通用类型?

转载 作者:行者123 更新时间:2023-11-28 10:40:48 25 4
gpt4 key购买 nike

目前有没有办法让泛型类/结构没有数据类型?

比如我有这两组api结果。

结果 1

{
"status": 200,
"message": "Success"
}

结果 2

{
"status": 200,
"message": "Success",
"result": <Some Result Here>
}

这是我的示例数据模型

public struct APIResult<Result> {
public let status: Int
public let message: String
public let result: Result?

// I want some kind of init like this
// note: I do data parsing a different way this is just an example
init(status: Int, message: String, result: Result?) {
self.status = status
self.message = message
self.result = result
}
}

有没有办法让结果 1 拥有自己的自定义初始化程序,例如其他数据类型的制作方式

extension APIResult where Result: SomeClass {
init(...) {
...
}
}

extension APIResult where Result == SomeStruct {
init(...) {
...
}
}

注意:我知道通过为仅包含statusAPIResult 创建protocol 有一种不同的方法code> 和message,我只是想问问有没有不这样做的不同方式。

最佳答案

我刚刚记得实际上 Swift 实际上内置了 EmptyResult 类,它被称为 Void() (正确的 CS 名称是 Unit type )。

所以,你的扩展应该是这样的:

extension APIResult where Result == () {
init(status: Int, message: String) {
self.init(status: status, message: message, result: nil)
}
}

关于swift - 有没有办法让通用对象没有通用类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50490845/

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