Swift guard 关键字

参考:https://www.cnblogs.com/edensyd/p/9566979.html

guard expression else { 
    //语句
    //必须包含一个控制语句:return,break,continue或throw。
}

这里,expression是一个布尔表达式(返回true或者false)。
如果对表达式求值false,guard则执行代码块内的语句。
如果对表达式求值true,guard则从执行中跳过代码块内的语句

 

 

为啥有if ... else ... 还要用guard ?

 

 
class CloseRange {

    let start: Int

    let end: Int

    init?(startValue: Int , endValue: Int) {

        guard startValue < endValue else {

            print("结束值\(endValue) 应大于 起始值\(startValue)")

            return nil

        }

        self.start = startValue

        self.end = endValue

    }

}

let customRange = CloseRange(startValue: 3, endValue: 5)
if let customRange = customRange {
    print("第一个对象的起始值是:\(customRange.start)")
}

let customRange2 = CloseRange (startValue: 5, endValue: 3)
if let customRange = customRange2 {
    print("第二个对象的起始值是:\(customRange.start)")
}else{
    print("第二个对象是空对象");
}

打印:
结束值3 应大于 起始值5

第二个对象是空对象

 

posted @ 2020-05-11 16:12  liuw_flexi  阅读(210)  评论(0编辑  收藏  举报