swift的guard关键字

  guard语句

guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么。但与if语句不同的是,guard语句只会有一个代码块,不像if语句可以if else多个代码块。

那么guard语句的作用到底是什么呢?顾名思义,就是守护。guard语句判断其后的表达式布尔值为false时,才会执行之后代码块里的代码,如果为true,则跳过整个guard语句,我们举例来看看。

我们以今年高考为例,在进入考场时一般都会检查身份证和准考证,我们写这样一个方法:

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语句用于检查身份证,如果检查到身份证没带,也就是表达式为false时,执行大括号里的代码,并返回。第二个guard语句则检查准考证。

如果两证齐全,则执行最后一个打印语句,上面的两个guard语句大括号内的代码都不会执行,因为他们表达式的布尔值都是true。

这里值得注意的是,id和examNumber可以在guard语句之外使用,也就是说当guard对其表达式进行验证后,id和examNumber可在整个方法的作用域中使用,并且是解包后的。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 转眼间,Swift已经一岁多了,这门新鲜、语法时尚、类型安全、执行速度更快的语言已经渐渐的深入广大开发者的心。我同...
    透支未来阅读 179评论 0 0
  • guard语句 guard语句和if语句有点类似,都是根据其关键字之后的表达式的布尔值决定下一步执行什么。但与if...
    GoGooGooo阅读 209评论 0 0
  • 转眼间,Swift已经一岁多了,这门新鲜、语法时尚、类型安全、执行速度更快的语言已经渐渐的深入广大开发者的心。我同...
    DevTalking阅读 1,926评论 1 17
  • 转眼间,Swift已经一岁半多了,这门新的编程语言确实是值得称赞的。guard语句guard语句,顾名思义,就是守...
    城市之光阅读 344评论 0 0
  • 第十二章 荒屋男尸 出口就在头顶,由一块石板顶着.出口并不大,最多也就半平方米.但是那块石板看起来好像很厚很沉,方...
    笑君杀手阅读 254评论 0 0