Swift

Swift基础-逻辑语句

2017-08-01  本文已影响12人  Mccc_

一. Guard

  1. 与if语句相同的是,guard也是基于一个表达式的布尔值去判断一段代码是否该被执行。与if语句不同的是,guard只有在条件不满足的时候才会执行这段代码,可以优雅的退出而非崩溃。
  2. 举例3个例子.当 入参<=0 的情况

(1)

func check1(x : Int?) {

    if x == nil || x! <= 0 {
        // 不符合条件
        print("不符合条件")
        return
    } else {
    // 符合条件的代码
        print(x!)
    }
}
check1(x: 1)

在检查一个不符合你期望的条件,而非检查你想要的值。如果你加了一堆像这样的条件判断,代码就变的不好理解。你在这里其实是等着你的条件通不过.如果前面条件判断的结果不符合了,你还得将你的变量强制拆包.
(2)

func check2(x : Int?) {
    if let y = x , y > 0 { // 多条件的判断用','分隔
        print(y)
    } else {
        print("不符合条件")
    }
}

这个函数没有了第一个函数的2个缺陷,但引入了一个新的。你把你要写的代码都放在了所有条件判断中,而不是之后。你可能不会马上意识到这个问题,但是你可以想象在你的代码被执行之前,如果嵌套了好多需要被匹配的条件判断,这会变的多难读懂。
(3)

func check3(x: Int?) {
    guard let x = x , x > 0 else {
        print("不符合条件")
        return
    }
}
check3(x: 3)

叫保镖模式(Bouncer Pattern),这个模式十分的合理。你要在坏情况进门之前把它们挡出去。这让你每次只考虑一种情况,而不用去搞清楚如何同时将所有的条件判断安排在一起。
是对你所期望的条件做检查,而非不符合你期望的。如果条件不符合,guard的else语句就运行,从而退出这个函数。
如果通过了条件判断,可选类型的变量在guard语句被调用的范围内会被自动的拆包 - 这个例子中该范围是check3函数内部。这是一个很重要,却有点奇怪的特性,但让guard语句十分实用。
对你所不期望的情况早做检查,使得你写的函数更易读,更易维护。

二. if

三. Switch

四. While

五. 循环控制语句

continue break return
continue 结束本次循环, break 结束整个循环

上一篇下一篇

猜你喜欢

热点阅读