写在前面:其实这部分非常非常的基础,也有很多完整的博客,记录学习过程罢了,同时也可以帮助自己充分理解。
顾名思义,guard是作为保卫作用而存在的,是 swift 2.0推出的新的判断语句的用法。guard语句和if语句类似,都是根据关键字之后的表达式的布尔值决定下一步执行什么。
👆图: 若满足,则执行下一步操作;若不满足要求,那么执行 else语句 。
1.guard语句只有一个代码块,而if语句可有多个代码块。(如 if 、else if、 else)
2.guard将不符合条件的处理事件前置,以免程序猿在开发中有遗漏的情况出现。
3.guard还可以减少条件语句中的嵌套数量「黄金大道」,提高代码可读性。
💁♀️补充一点点相关:在《禅与Objective-C编程艺术》一书中,有「黄金大道」一词的概念👇
最近在开发中发现,有些情况不使用嵌套 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 }
注意事项:
学习参考: