语法(三) – guard

温馨提示:本文最后更新于2024-07-25 18:30:41,某些文章具有时效性,若有错误或已失效,请在下方留言

guard 语句的主要用法有以下几种:

  1. 提前返回
  2. 减少缩进级别
  3. 高Happy Path可见性

提前返回

guard 用于提前返回,如果某些先决条件未满足,则退出函数。

func giveAward(to name: String) {
    guard name == "Taylor Swift" else {
        print("No way!")
        return
    }

    print("Congratulations, \(name)!")
}

giveAward(to: "Taylor Swift")

减少缩进级别

使用 guard 和提前返回可以减少缩进级别。下面的代码主题部分会增加额外的缩进。

func giveAward(to name: String) -> String {
    let message: String

    if name == "Taylor Swift" {
        message = "Congratulations, \(name)!"
    } else {
        message = "No way!"
    }

    return message
}

giveAward(to: "Taylor Swift")

使用 guard 时,您可以立即解决先决条件,并且不会出现额外的缩进。

提高Happy Path可见性

Happy Path 是软件设计和测试中的一个常见概念,指的是当没有异常或错误发生时,您的代码将采取的路径。

当您使用 guard 检查并解除可选值时,该可选值将保留在作用域中。

func giveAward(to name: String?) {
    guard let winner = name else {
        print("No one won the award")
        return
    }

    print("Congratulations, \(winner)!")
}

如果使用常规的 if-letwinner 常量只能在属于 guard 的大括号内使用。 但是, guard 将其可选的解包保持在作用域内,因此 winner 在第二个 print() 语句中仍然存在。

guard 可以在前提条件失败时退出任何作用域,而不仅仅是函数和方法。

for i in 1...100 {
    guard i % 8 == 0 else { continue }
    
    print(i)
}

— 《Pro Swift》
© 版权声明
THE END
喜欢就支持一下吧
点赞14 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容