我们试图在Swift中创建一个函数,它返回一个闭包 . 返回类型如下:
func completionBlock() -> (Response) -> ()
其中Response本身是一个带有2个泛型的结构 . 第二个将始终是NSError,但第一个取决于开关 .
答复声明:
public struct Response { ...
我们想要实现的是一个函数,它将返回一个闭包,其类型取决于变量的值 . 根据此值和交换机,它指定一种或另一种类型,泛型参数的唯一要求是它必须符合特定协议,但我们找不到解决方案 .
到目前为止我们得到的是:
class BaseClass {
var endpoint: Int
...
func completionBlock() -> (Response) -> () {
switch endpoint
{
case 1:
return getHandleResponseClosure(Car.self)
case 2:
return getHandleResponseClosure(Truck.self)
}
}
func getHandleResponseClosure(_: T.Type) -> (Response) -> () {
let closure = { (_: Response) -> () in
// ...
}
return closure
}
}
但这不编译:"Use of undeclared Type T"在 func completionBlock() ,此时的类型是通用的,它只需要符合协议Mappable,但我们不知道如何指定它 .
谢谢!!,问候