swift - 有没有办法让泛型对象没有泛型类型?
问题描述
目前有没有办法让泛型类/结构没有数据类型?
比如我有这两组 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(...) {
...
}
}
注意:我知道通过创建一个只包含andprotocol
的方法来解决这个问题,我只是问是否有不同的方法而不这样做。APIResult
status
message
解决方案
我刚刚记得实际上实际上Swift
有内置EmptyResult
类,它被称为Void
or ()
(正确的 CS 名称是Unit type
)。
所以,你的扩展应该是这样的:
extension APIResult where Result == () {
init(status: Int, message: String) {
self.init(status: status, message: message, result: nil)
}
}
推荐阅读
- unit-testing - 为每个函数编写单元测试与只为服务编写 API 测试相比有什么优势
- sql - Oracle表中基于条件的随机记录
- c# - 有没有办法使用 [FromBody] 属性进行嵌套模型绑定?
- r - 理解 R 中的马尔可夫链源代码
- mysql - 视图是否需要更新任何操作,甚至需要一些时间来更新?
- java - 带有Java Play Eclipse项目的VSCode中的“类路径不完整。只会报告语法错误”
- html - 将 Slim 转换为 HTML
- node.js - Mongoose findOneAndUpdate 不会更新多个嵌套字段
- java - 如何动态地继续从 EditText 字段添加项目?
- function - 如何在 F# 中使用带有两个参数的函数,它们是二维整数数组