【发布时间】:2018-10-01 20:32:52
【问题描述】:
我有一个功能如下:
func request<D: Decodable>(from urlString: String,
useToken: Bool = false,
requestType: RequestType = .get,
body: Data? = nil,
expecting type: D.Type? = nil,
completion: @escaping (Result<D?>) -> Void)
是否可以这样做:request(..., expecting: nil) 或 func request<D: Decodable>(... expecting type: D.Type? = nil)?
我认为我已经达到了使用泛型的限制,因为当我这样做时,我得到的编译错误与我正在处理的代码完全无关,所以我认为编译器可能会感到困惑.
当我使用函数时,如:request(from: "https:..", requestType: .post, body: body),编译器报错Enum element 'post' cannot be referenced as an instance member
我的一些 API 请求在正文中没有返回任何内容,因此我试图找到一种方法来使用我设置的这个通用函数来表达这一点
【问题讨论】:
-
func request<D: Decodable>(expecting type: D.Type? = nil) -
@LeoDabus 我也试过了,但是编译器会弄糊涂
-
并致电
request() -
如果你没有传递类型,你需要强制转换结果或显式设置结果类型
-
你必须帮助编译器推断
D类型