美文网首页Swift
Swift基础-逻辑语句

Swift基础-逻辑语句

作者: Mccc_ | 来源:发表于2017-08-01 19:37 被阅读12次

    一. 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 结束整个循环

    相关文章

      网友评论

        本文标题:Swift基础-逻辑语句

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