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

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

解决问题。问题是:为什么斯威夫特不能得出正确的关闭类型在这里?所有的代码路径都返回bool,但这不能解决?这是一个基本的限制吗/我是否在理解中遗漏了一些东西,或者这只是一个提高编译器类型推理能力的问题,像这样的问题很可能很快就能解决3?

最佳答案

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

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

关于swift - Swift无法输入包含返回Bool的闭包的推断变量,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34308352/

10-10 17:08