在 Swift 函数中,为什么 'return' 必须在 for 循环之外,当函数包含 for 循环且循环内有 if 语句时?

In Swift functions, why 'return' must be outside for loop, when function includes a for loop with if statement inside the loop?

假设一个 returning 函数:

func check(scores: [Int]) -> Bool {
    for score in scores {
        if score < 80 {
            return false
        }
    }
    return true
}

以上代码完美运行。但是下面的代码没有。弹出一条错误消息:预期 return 'Bool' 的函数中缺少 return。我很清楚这个错误,但我不知道它为什么会出现在这里:

func check(scores: [Int]) -> Bool {
    for score in scores {
        if score < 80 {
            return false
        }
        else {
            return true
        }
    }
}

为什么'return false'可以在if条件{}里面,而'return true'不能在else{}里面,必须完全在for循环外面……?我特地问这个是因为下面的代码工作得很好而且 'return true' 在 else {}

里面
func isPassingGrade(for scores: [Int]) -> Bool {
    var total = 0
    
    for score in scores {
        total += score
    }
    
    if total >= 500 {
        return true
    } else {
        return false
    }
}

任何见解都非常感谢和亲切的问候。

这是因为如果scores此处为空

,for循环可能根本不执行的假设
func check(scores: [Int]) -> Bool {
    for score in scores {
        if score < 80 {
            return false
        }
        else {
            return true
        }
    }
}

所以函数需要知道它应该 return 在那种情况下,你的第一个和最后一个块没问题,因为可以保证某些 Bool 值将被 returned,以防万一for循环是否执行

In case you ask that the sent array will not be empty , yes but at compile time there is no way to know that , hence the error

如果scores为空,for循环体将不会执行,check函数也不会return任何东西。但是,它确实承诺 return 一个 Bool,这就是它出错的原因。