美文网首页
guard与if

guard与if

作者: sydie | 来源:发表于2017-03-14 13:01 被阅读34次

    事例:

    • 假设有身份证并且成年的就可以上网。
      1.用if进行判断
    func surf(age: Int, hasCard: Bool)
    {
        if age>=18 {
            if hasCard {
                print("老板,给我充两个小时")
            }else{
                print("没带身份证,回家拿去")
            }
        }else{
            print("没成年,回家吃奶去")
        }   
    }
    
    • 调用函数
    surf(age: 17, hasCard: false)
    surf(age: 29, hasCard: true)
    surf(age: 20, hasCard: false)
    
    • 打印结果
    没成年,回家吃奶去
    老板,给我充两个小时
    没带身份证,回家拿去
    

    2.用guard进行判断

    func guardCard(age: Int,hasCard: Bool)
    {
        guard age >= 18 else {
            print("没成年,回家吃奶去")
            return
        }
        
        guard hasCard else {
            print("没带身份证,回家拿去")
            return
        }
        
        print("老板,给我充两个小时")
    }
    
    • 调用函数
    guardCard(age: 17, hasCard: false)
    guardCard(age: 29, hasCard: true)
    guardCard(age: 20, hasCard: false)
    
    • 打印结果
    没成年,回家吃奶去
    老板,给我充两个小时
    没带身份证,回家拿去
    

    3.guard let 和 if let的使用
    在可选项进行解包时,有三种常用方式。

    • 名称! 强行解包 如果为常量,值为nil,强行解包运行会奔溃。如果为变量,值为nil,强行解包值为空
    • 名称 ?? value 简单三目运算,如果有值就直接赋值,如果没值就用后面value替换
    • guard let 或者 if let
    var test: Int? = 9
    if let result = test
    {
        print(result)
    }
    
    func demo(test : Int?) {
        
        guard let result1 = test else{
          // 如果没值
            return
        }
        // 如果有值
        print(result1)
        
    }
    

    4.总结
    guard有守卫的意思,就如防护门一样,一道道防护,第一道门走不通的时候就被拦截在外了。所以guard的判断是:

    如果条件满足,继续往下走,
    如果条件不满足,走else分支。
    

    guard不支持直接在外使用,if可以直接使用。

    • 例如


      写在函数方法外.png
    报错内容.png

    报错:必须要有return或者break。所以guard不能直接写。

    相关文章

      网友评论

          本文标题:guard与if

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