Swift函数中for-in循环内return与循环后return的执行逻辑困惑
关于Swift函数
allTestsPassed的逻辑解释 先看你给出的代码:
func allTestsPassed(tests: [Bool]) -> Bool { for test in tests { if test == false { return false } } return true }
这里的核心是**return语句会直接终止函数执行**:
- 当你调用
allTestsPassed([false])时,循环拿到第一个元素false,满足if test == false的条件,立刻执行return false,函数到此就结束了,后面的循环步骤和最后的return true根本没机会运行,所以输出是false。 - 只有当数组里所有元素都是
true时,循环会完整遍历每一个元素,全程没触发过循环内的return false,循环结束后才会执行最后的return true,比如调用allTestsPassed([true, true])就会返回true。
这个函数的逻辑其实就是“只要有一个测试失败(false)就直接判定全部失败,所有测试都通过(true)才判定全部通过”,是很典型的短路判断逻辑。
内容的提问来源于stack exchange,提问作者Ryu Hiroyama
相关产品推荐
相关产品推荐

