我对下面的代码感到困惑.

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’.

它似乎忽略了循环之后的"返回真".

我什么都不了解.

推荐答案

返回,在那里停止进程,并且在它之后不执行任何东西.它只是在那里停止了这个过程.

为了了解更多,让我们更新逻辑并查看结果.

func allTestsPassed(tests: [Bool]) -> Bool {
    print("start of logic")
    var currentNumber : Int = 1
    for test in tests {
        print("currentNumber=\(currentNumber) with value==\(test)")
        if test == false {
            print("returning number because data is false")
            return false
        }
        currentNumber += 1
    }
    print("end of logic")
    return true
}

情况1:所有输入均为真

现在让我们try case 1,其中所有输入都将是true

allTestsPassed(tests: [true, true, true, true])

结果是

start of logic
currentNumber=1 with value==true
currentNumber=2 with value==true
currentNumber=3 with value==true
currentNumber=4 with value==true
end of logic

case 2:其中一个输入为假

allTestsPassed(tests: [true, true, false, true])

结果是

start of logic
currentNumber=1 with value==true
currentNumber=2 with value==true
currentNumber=3 with value==false
returning number because data is false

如果您在第二个例子中看到,您不会看到end of logic,因为它在测试=FALSE时返回

希望日志(log)能澄清你的理解……

Swift相关问答推荐

为表单部分赋予背景 colored颜色 /渐变

JSON如何解码空对象

SwiftData:线程1:&Quot;NSFetchRequest找不到实体名称';提醒&q;的NSEntityDescription

是否在字符串属性上搜索数组和子数组?

如何在SWIFT Memory中处理对VAR数组的更新(对COW感到困惑)

如何避免切换视图递归onChange调用SwiftUI

如何在 Vapor 中制作可选的查询过滤器

SwiftUI 组合问题:通过 AppEventsManager 在 ViewModel 之间共享数据

SwiftUI如何能够在Text中使用字符串字面量来创建LocalizedStringKey?

类型擦除`AsyncMapSequence, Element>`

Firebase removeObserver 在 Swift 5 中不起作用

ScreenCaptureKit/CVPixelBuffer 格式产生意外结果

Swift - 订阅视图之外的绑定值

对齐时如何避免图像尺寸缩小

来自数据的 SwiftUI 图像

如何在 SwiftUI 的 fileImporter 中为 allowedContentTypes 设置 xcodeproj 类型?

为什么 Swift Tuples 只能在元素个数小于等于 6 的情况下进行比较?

为什么swiftui中的导航视图栏那么大?

符合协议要求委托变量在 ios13 中可用

在 Swift 中指定 UITextField 的边框半径