我对下面的代码感到困惑。
func allTestsPassed(tests: [Bool]) -> Bool {
for test in tests {
if test == false {
return false
}
}
return true
}
如果if-else语句中的代码(在for-in循环中)执行,则返回false。
但是for-in循环之后的代码是:return true
.
一个函数返回两个不同的布尔值。
当我执行print(allTestsPassed([false]))
时,它会输出'false'。
它似乎忽略了循环后的'return true'。
我不明白。
3条答案
按热度按时间nfzehxib1#
return在那里停止进程,并且在它之后不执行任何操作。它只是在那里停止了这个过程。
要了解更多,让我们更新逻辑并查看结果。
案例一:所有输入均为真
现在让我们尝试
case 1
,其中所有输入都是true
结果是
案例二:其中一个输入为false
结果是
如果在第二种情况下看到,则不会看到
end of logic
,因为它在test=false时返回希望日志能让你明白…
gkl3eglg2#
让我们详细解释一下你发布的函数:
这个函数有一个for循环,它迭代一个方法,该方法接收一个布尔数组参数并返回一个布尔值。
for循环中的条件检查数组中的每个元素,并查看其值是否为false。如果是,方法
allTestsPassed
返回false,因为(我猜)其中一个测试失败了。如果数组中没有一个参数的值为false,那么这意味着(同样是猜测)所有的测试都通过了,这就是为什么for循环完成了它的迭代并返回true行。
**一般来说,当你在代码中放置一个return语句时,这意味着它下面的任何其他行都不会执行。因为在你的方法中,第一个return语句被一个条件包围着,所以只有当条件计算为true时,它才会执行。
希望这能澄清一些事情。
htrmnn0y3#
return
不只是指定函数应该返回什么值-它还将控件 * 返回 * 给调用者。当执行allTestsPassed
中的return
语句时,不会执行allTestsPassed
中的其他代码。执行将在您调用allTestsPassed
的位置继续。它类似于
break
或continue
,因为它会导致执行“跳转”到其他地方。请参阅Swift语言参考:
return
语句出现在函数或方法定义的主体中,并导致程序执行返回到调用函数或方法。程序执行在紧接函数或方法调用之后的点处继续。如果你这样称呼它:
传递
[false]
将导致if语句中的return
执行,因此allTestsPassed
的其余部分不会执行。执行返回到调用方。在这种情况下,print
被调用,无论返回什么值。