如何将函数的参数强制转换为作为方法参数的函数中的任何参数?
struct InitializationStaticData: Decodable {} func method1(responseListener: @escaping (_ status:Int, _ data: InitializationStaticData?) -> Void) { let dsa = responseListener as! (Int, Any?) -> Void // EXC_BREAKPOINT let asd = responseListener as! (Int, Decodable?) -> Void // EXC_BREAKPOINT method2(responseListener: sdd) }
我试着这样做:
func method2<T>(responseListener: @escaping (_ status: Int, _ data: Any?) -> Void) { }
基本上,一般方法是正确的。
更改的类型 data 到 T 并将泛型约束为 Decodable
data
T
Decodable
func method2<T : Decodable>(responseListener: @escaping (Int, T) -> Void) { }
下划线字符和参数标签是Swift 2遗留的,在Swift 3中不使用它们。+