写在前面:其实这部分非常非常的基础,也有很多完整的博客,记录学习过程罢了,同时也可以帮助自己充分理解。
一、定义
顾名思义,guard是作为保卫作用而存在的,是 swift 2.0推出的新的判断语句的用法。guard语句和if语句类似,都是根据关键字之后的表达式的布尔值决定下一步执行什么。
👆图:?若满足,则执行下一步操作;若不满足要求,那么执行 else语句?。
二、作用(与 if 相比)
1.guard语句只有一个代码块,而if语句可有多个代码块。(如 if 、else if、 else)
2.guard将不符合条件的处理事件前置,以免程序猿在开发中有遗漏的情况出现。
3.guard还可以减少条件语句中的嵌套数量「黄金大道」,提高代码可读性。
💁?♀?补充一点点相关:在《禅与Objective-C编程艺术》一书中,有「黄金大道」一词的概念👇
最近在开发中发现,有些情况不使用嵌套 if 确实没有更好的办法,注释辅助提高代码可读性,优先满足需求其次追求代码优雅。具体使用:
三、使用场景
场景一:针对业务逻辑,减少if嵌套
// 电影院检票的例子:
struct Ticket
{
var movieName:String//该场电影名字
var TimeValid:Bool = true//电影票有效
}
func checkTicket(ticket:Ticket?,currentMovieName:String)
{
guard let _ = ticket,ticket?.movieName == currentMovieName else {
print("非此场电影")
return
}
guard ticket?.TimeValid else {
print("该票已过期")
return
}
//TODO:
print("可以看电影了")
}
场景二:一般用于强制解包
// 1.除数不能为0,所以我们必须保证model.bestScore!=0
guard model.bestScore != 0 else { return }
let Score = model.Score / model.bestScore
// 2.url不能为空
guard let url = URL(string: urlString) else { return } ?
注意事项:?
- 不要在 guard 的 else 语句中放入复杂代码
- 使用guard是为了提高代码可读性,如果嵌套的 if 更容易理解,则没必要使用 guard
学习参考:
Swift学习笔记:guard 和 if 的用法及区别
Swift guard 和 if的使用注意事项
|