Swift的guard語句的用法

來源:互聯網
上載者:User
與if語句相同的是,guard也是基於一個運算式的布爾值去判斷一段代碼是否該被執行。
與if語句不同的是,guard只有在條件不滿足的時候才會執行這段代碼。
你可以把guard近似的看做是Assert,但是你可以優雅的退出而非崩潰。


func fooManualCheck(x: Int?) {
    if x == nil || x <= 0 {
        // 不符合值的要求時,寫點代碼
        return
    }


    // 使用x
    x!.description
}


//Swift的可選值可以把上面的代碼簡單些,不用判斷niu了
func fooBinding(x: Int?) {
    if let x = x where x > 0 {
        // 使用x
        x.description
    }


    // 如果值不符合條件判斷,就執行下面的代碼
}


//guard代碼,,也就是直接執行不符合情況的代碼
func fooGuard(x: Int?) {
    guard let x = x where x > 0 else {
        // 變數不符合條件判斷時,執行下面代碼
        return
    }


    // 使用x
    x.description
}


//對非Optional值也是可以的
func fooNonOptionalGood(x: Int) {
    guard x > 0 else {
        // 變數不符合條件判斷時,執行下面代碼
        return
    }


    // 使用x
}


func fooNonOptionalBad(x: Int) {
    if x <= 0 {
        // 變數不符合條件判斷時,執行下面代碼
        return
    }


    // 使用x

}


總結一句:用法和if差不多,不過是條件如果不通過,guard語句以外的排在後面的語句都不會執行,而if語句是後面的其他語句還是會執行的。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.