【发布时间】:2016-03-09 18:06:03
【问题描述】:
此函数接受Void -> T 函数并返回Void -> T 函数。
func future<T>(f: Void -> T) -> Void -> T {
let queue = dispatch_queue_create("com.test.lockQueue", nil)
var results: T?
dispatch_async(queue) {
results = f()
}
return {
dispatch_sync(queue) {}
return results!
}
}
如果我这样使用它:
let f = future<Int> {
NSThread.sleepForTimeInterval(2)
return 10
}
我收到错误“无法明确专门化泛型函数”。
如果我像这样将显式类型设置为Void -> Int:
let f: Void -> Int = future {
NSThread.sleepForTimeInterval(2)
return 10
}
它可以工作,但看起来不太好。 我可以更改函数以便在第一个示例中使用它吗?
【问题讨论】: