我有一个方法,它包含以下内容:
let downloadNextPagination = {
if current.integerValue < amount.integerValue {
if current.integerValue != amount.integerValue - 1 {
return true
}
}
return false
}
if downloadNextPagination() {
// Do something
}
此代码无法编译:无法在当前上下文中推断闭包返回类型
将downloadNextPagination的定义更改为
let downloadNextPagination: () -> Bool
解决了这个问题。问题是:为什么Swift不能在这里找出正确的闭合类型?所有代码路径返回Bool,但这不能解决?这是一个基本的限制吗?我在这里的理解中遗漏了一些东西,或者这只是一个提高编译器类型推理能力的问题,这样的事情可能会起到Swift 3的作用吗?
答案 0 :(得分:0)
Swift目前只推断单回程闭包。您可以将闭包重写为:
let downloadNextPagination = {
return current.integerValue < amount.integerValue && current.integerValue != amount.integerValue - 1
}