Swift无法推断类型的变量包含返回布尔值的闭包。

3

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

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中得以实现?

仅对于“单表达式闭包”(或从上下文中)自动推断返回类型。请参阅https://dev59.com/BJHea4cB1Zd3GeqPtsWk以获取类似的问题。 - Martin R
1个回答

0

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接