Swift泛型语法

问题描述 投票:-1回答:1

我有以下功能:

func myFunc<T: MyProtocol>(param: ParamType, completion: @escaping (Result<T, NetworkError>) -> ())

然后我称之为:

    myFunc(param) { response in
 }

我得到“通用参数'T'无法推断”,我怎么能在我的通话中设置T类型?谢谢。

swift generics syntax
1个回答
1
投票

此代码应该有效:

protocol MyProtocol { }

    struct ParamType { }
    class My: MyProtocol { }
    enum Result<T, E> {
        case result(T)
        case fail(E)
    }
    class NetworkError: Error { }
    func myFunc<T: MyProtocol>(param: ParamType, completion: @escaping (Result<T, NetworkError>) -> Void) { }

    myFunc(param: ParamType()) { (res: Result<My, NetworkError>) -> Void in
        print(res)
    }
© www.soinside.com 2019 - 2024. All rights reserved.