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 语句中。
挑战
简单编写一个函数 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 {
// 在这里编写代码
}
这节课包含一个小测验。开始学习即可作答,并记录你的进度。
基础知识中的所有课
自己练习: Swift 在线编辑器