Swift 中的 guard 语句是什么?
在本教程中,您将学习什么是 guard 语句以及如何在 Swift 语言中实现它。让我们开始学习。
什么是 guard 语句?
在 Swift 中,guard 是一个像 if-else 语句一样在代码之间转移控制的语句。guard 语句是 Swift 中最常用的语句之一。当某些条件不满足以允许流程继续时,guard 语句用于转移流程控制。
guard 语句类似于 if 语句,但有一个主要区别。if 语句在满足特定条件时运行。但是,guard 语句在不满足特定条件时运行。
语法
guard expression else { // other statements // control statement: return, break, continue or throw. }
在上面的语法中,表达式返回 true 或 false。如果表达式的值为
true − guard 不执行其代码块内的语句
false − guard 执行其代码块内的语句
注意 − 必须使用 return、break、continue 或 throw 来退出 guard 范围。
示例
var i = 2 while (i <= 10) { // check the even number guard i % 2 == 0 else { i = i + 1 continue } print(i) i = i + 1 }
输出
2 4 6 8 10
使用 guard 语句解包可选值
在 Swift 中,您可以像下面这样解包可选变量中的值:
示例
func doSomething() { let name: String? = "Amit Saxena" guard let nameString = name else { print("name is not found") return } print("Name found: \(nameString)") } doSomething()
输出
Name found: Amit Saxena
带有多个条件的 guard 语句
语法
guard condition1, condition2, conditionN else { // statements return }
guard 语句可用于检查多个条件。如果满足所有条件,则将执行进一步的代码;否则,将执行 guard 的主体并返回。
示例
class Student { var name: String? var age: Int? var address: String? func allDataValid() -> Bool { guard let nameString = name, let age = age, let address = address else { print("some data is not valid.") return false } print("Name: \(nameString), age: \(age), address: \(address)") return true } } let amit = Student() print(amit.allDataValid())
输出
some data is not valid. false
使用枚举情况的 Guard
也可以使用 guard 语句匹配枚举情况。您可以使用 guard 检查枚举对象是否匹配所需的情况。
示例
enum ErrorState { case noInternet case serverNotReachable case somethingWrong case none } func perform(state: ErrorState) { guard case state = ErrorState.none else { print("Some error found, cannot execute further code.") return } print("No error found") } perform(state: ErrorState.serverNotReachable)
输出
Some error found, cannot execute further code.
解释
在上面的示例中,我们为 ErrorState 创建了一个具有不同情况的枚举。现在在 perform() 函数中,我们使用枚举情况检查错误状态,如果发现任何非 none 情况的错误,则返回。您可以看到 guard 语句在检查不同条件方面有多么灵活。
在 Swift 中使用 Guard 语句的好处
guard 语句对于使您的代码更易读和更易维护非常有用。您应该使用 guard 语句的一些原因:
它使代码试图完成的任务变得清晰明了。与其告诉 guard 你不想要什么,不如直接告诉他你想要什么。
该函数应该能够检测无效参数。
通过使用 guard 解包可选值,使解包的值可用。
减少代码行数。
结论
向您解释了 Swift 中的 guard 语句。当出现某些情况时,guard 语句解决了代码可读性的问题。使用 guard,可以以干净的方式编写一段代码。此外,您可以学习其他语句,例如 if-else、switch 等。