【发布时间】:2018-02-08 09:50:27
【问题描述】:
假设我有一个通用方法来进行一些转换,它需要输入和输出,部分流程需要一个块(也需要通用 I 和 O)来处理它。
func run<I : Codable, O : Codable>(_ inputType: I, _ outputType: O, _ converter : (_ input: I)-> O) throws -> Void
{
// do something to input I
let output : O = converter(input)
// do something else to output O
}
问题是,我无法像示例一样调用此方法:
run(InputObj, OutputObj) { (input) -> Codable in
var outputObj = OutputObj( ... )
// do something here
return outputObj
}
它显示一个错误:
无法将 '() -> Codable' 类型的值转换为 预期参数类型 '() -> _'
我也尝试将块的返回类型“Codable”更改为“OutputObj”。
如果有人可以提供帮助,不胜感激。
【问题讨论】:
标签: swift generics higher-order-functions