美文网首页
Swift guard let/var && if let/v

Swift guard let/var && if let/v

作者: 凛冬将至2002 | 来源:发表于2019-05-30 16:51 被阅读0次

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

相关文章

网友评论

      本文标题:Swift guard let/var && if let/v

      本文链接:https://www.haomeiwen.com/subject/hcivtctx.html