首页 > 解决方案 > 对于需要返回的函数,为什么不在 for 循环中的 if-else 语句中返回就足够了?

问题描述

运行此函数时,会引发错误。似乎是因为它假设 for 循环不能保证运行。

我尝试在 for 循环之外包含 return,Xcode 接受它。但是,我不明白为什么在 for 循环之外需要返回。运行for循环不是需要ages参数,因此肯定会运行for循环吗?因此,函数总是会返回一些东西。我错过了什么?

func isEveryoneAdult(ages: [Int]) -> Bool {
    for age in ages {
        if age < 18 {
            return false
        } else {
            return true
    }
    }
}

isEveryoneAdult(ages: [36, 17])

预期结果:输出为真(当然,即使此代码有效,这也是错误的方法,因为它会导致误导性结果)

实际错误:预期返回“布尔”的函数中缺少返回

标签: swiftfor-loopreturn

解决方案


由于数组可能为空,因此编译器需要确保所有路径都返回有效值

func isEveryoneAdult(ages: [Int]) -> Bool {
    for age in ages {
        if age < 18 {
            return false
        }
    }
   return true 
}

推荐阅读