guard与if

2017-03-14  本文已影响34人  sydie

事例:

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的使用
在可选项进行解包时,有三种常用方式。

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

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

上一篇 下一篇

猜你喜欢

热点阅读