Swift无法输入包含返回Bool的闭包的推断变量

时间:2015-12-16 09:33:12

标签: swift closures type-inference

我有一个方法,它包含以下内容:

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的作用吗?

1 个答案:

答案 0 :(得分:0)

Swift目前只推断单回程闭包。您可以将闭包重写为:

let downloadNextPagination = { 
    return current.integerValue < amount.integerValue && current.integerValue != amount.integerValue - 1 
}