我可以有一个带有可变数量参数的通用枚举?

时间:2017-10-27 03:16:29

标签: swift generics enums

我正在写一个网络层,并且我写了一个enum来封装请求的结果:

enum RequestResult<T> {
    case success(T)
    case error(RequestError)
}

对于每个请求,我只能成功或失败。然后,我可以这样使用:

class PostsRequest {
...
    static func fetch(completion: @escaping (RequestResult<[Post]>) -> Void) {

但是,我如何在没有成功结果的请求中使用我的通用RequestResult,或者在成功时获得很多结果?我可以在一个案例中写一个带有可变数量的通用枚举吗?

1 个答案:

答案 0 :(得分:0)

对于没有结果的请求,您只需使用Void类型:

let request: RequestResult<Void> = .success()

对于有多个结果的请求,我不太了解您的问题,因为在您提供的示例中,您已经将多个结果建模为数组:

RequestResult<[Post]>

如果您想要的是多个结果,每个具有不同的类型,您应该将它们放在struct / class中,并将该类型作为通用传递给ResquestResult枚举。