Swift中如何正确获取指定泛型类型的泛型函数引用?
错误原因
Swift 语法不支持直接通过函数名<泛型参数>的格式获取特化后的泛型函数引用。你编写的messageResult<Dto.OpenResult>会被编译器误解析为「判断messageResult是否小于Dto.OpenResult」的比较表达式,后续的>缺少匹配的运算符对象,因此触发该语法报错。
正确实现方法
你可以通过显式声明变量的函数类型,让编译器自动完成泛型参数的特化推导,示例代码如下:
let dtoResult: (Dto.OpenResult?) -> Void = messageResult
如果是将该泛型函数作为参数传递给其他方法,只要接收方的入参类型明确,编译器也可以自动推导泛型参数,无需额外声明:
// 示例:接收参数类型为(Dto.OpenResult?) -> Void的方法 func processHandler(handler: (Dto.OpenResult?) -> Void) { // 业务逻辑 } // 直接传入泛型函数即可,编译器会自动完成特化匹配 processHandler(handler: messageResult)
内容的提问来源于stack exchange,提问作者EvGeniy Ilyin
相关产品推荐
相关产品推荐

