guard 的含义,与if 的区别
guard 和 if 语句有些类似,根据其后的表达式的BOOL值决定下一步执行什么。但是与if语句不同之处,guard语句后面只有一个代码块,不像if可以接多个if else 。
guard 语句当其后表达式为false 时,才会执行之后代码块内的代码,如果是TRUE,则跳过。这个和if 相反,if 后的表达式如果为TRUE 则执行其后的代码,否则跳过。
let name: String? = "老王"
guard name == "老王" else {
print("true ==" + name!)
return
} //无输出
guard name == "NIHAO" else{
print("false == " + name!)
return
} //输出 false == 老王
guard let 语句感觉更多的是解包判断其后表达式是否nil,暂时这么理解
func checkup(person: [String: String!]) {
// 检查身份证,如果身份证没带,则不能进入考场
guard let id = person["id"] else {
print("没有身份证,不能进入考场!")
return
}
// 检查准考证,如果准考证没带,则不能进入考场
guard let examNumber = person["examNumber"] else {
print("没有准考证,不能进入考场!")
return
}
// 身份证和准考证齐全,方可进入考场
print("您的身份证号为:\(id),准考证号为:\(examNumber)。请进入考场!")
}
checkup(["id": "123456"]) // 没有准考证,不能进入考场!
checkup(["examNumber": "654321"]) // 没有身份证,不能进入考场!
checkup(["id": "123456", "examNumber": "654321"]) // 您的身份证号为:123456,准考证号为:654321。请进入考场!
guard let/var 弥补了 if let/var 的缺陷,可以在 {} 以外的地方继续使用甚至修改(var)。
https://www.jianshu.com/p/f4f0c89103b9
https://www.cnblogs.com/Rinpe/p/5221817.html
网友评论