代码之家  ›  专栏  ›  技术社区  ›  Zonily Jame

有没有一种方法让一个泛型对象没有泛型类型?

  •  0
  • Zonily Jame  · 技术社区  · 6 年前

    当前是否有方法使泛型类/结构没有数据类型?

    例如,我有这两组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(...) {
            ...
        }
    }
    

    注释 :我知道通过创建一个 protocol 对于 APIResult 它只包含 status message 我只是在问,如果不这样做,是否有不同的方法。

    1 回复  |  直到 6 年前
        1
  •  3
  •   user28434'mstep    6 年前

    事实上,我只记得 Swift 实际上是内置的 EmptyResult 课程,它被称为 Void () (正确的CS名称为 Unit type )

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

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