Menu
CoddyTech

Guard let 语句

本课属于 Coddy Swift 学习旅程的“基础知识”单元。第 13 课,共 86 课。

if let 会解包可选值,并在值存在时运行代码,而 guard let 则采取相反的做法。值缺失时,它会提前退出。这在函数中尤其有用,你可以先处理“不好”的情况,让主要逻辑保持简洁。

func greet(name: String?) {
    guard let unwrappedName = name else {
        print("No name provided")
        return
    }
    print("Hello, \(unwrappedName)!")
}

greet(name: "Taylor") // 你好,Taylor!
greet(name: nil)      // 未提供姓名

guard let 语句会检查 name 是否有值。如果没有,else 代码块就会运行,并通过 return 退出函数。如果可选值中包含一个值,它就会被解包到 unwrappedName 中。这里与 if let 的关键区别是:解包后的变量在函数的剩余部分仍然可用,而不只是在代码块内部可用。

这种“提前退出”模式会先处理错误情况,让代码更易读,主逻辑也不会嵌套在多个 if 语句中。

challenge icon

挑战

简单
编写一个函数 validateAge,它接收一个可选的 age 参数,并使用 guard let 安全地解包它。

如果年龄是 nil,则返回 "Invalid age"。否则,返回 "Age: [value]",其中 [value] 是解包后的年龄。

参数:

  • age (Int?):表示某人年龄的可选整数

返回值:一个字符串。如果输入为 nil,则返回 "Invalid age";否则,返回包含解包后值的 "Age: [value]"。

示例:如果 age 是 25,则返回 "Age: 25"。如果 age 是 nil,则返回 "Invalid age"。

亲手试试

func validateAge(age: Int?) -> String {
    // 在这里编写代码
}
quiz icon自我测试

这节课包含一个小测验。开始学习即可作答,并记录你的进度。

基础知识中的所有课

自己练习: Swift 在线编辑器