Swift-guard與let

Swift中類型中加入了?可選類型,因此在每次進(jìn)行參數(shù)判斷的時(shí)候都要加入是不是為nil的判斷,我們通過(guò)簡(jiǎn)單的字符串判空來(lái)看一下guard,if let之間的區(qū)別:

    func guardCase(data:String?) -> Void {
        // 正常判斷
        if data != nil && (data?.characters.count)! > 0 {
            print("guardCase--數(shù)據(jù):\(data)")
        } else {
            print("guardCase--data沒(méi)有數(shù)據(jù)")
        }
        
        // let 語(yǔ)句
        
        if let result = data, result.characters.count > 0 {
            print("let語(yǔ)句:\(result)")
        } else {
            print("result沒(méi)有數(shù)據(jù)")
        }
        
        // guard 語(yǔ)句
        
        guard let result = data, result.characters.count > 0 else {
            print("guard無(wú)數(shù)據(jù)")
            return
        }
        
        print("guard數(shù)據(jù)執(zhí)行")
        
    }

通過(guò)代碼我們發(fā)現(xiàn),沒(méi)有太明顯的區(qū)別if與if let 一樣,guard與 if let 很相似,guard和if都是基于一個(gè)表達(dá)式的布爾值去判斷一段代碼是否該被執(zhí)行,與if語(yǔ)句不同的是,guard只有在條件不滿足的時(shí)候才會(huì)執(zhí)行這段代碼,也可以說(shuō)是guard先進(jìn)行錯(cuò)誤處理,然后才進(jìn)行,邏輯執(zhí)行.

當(dāng)項(xiàng)目中參數(shù)if判斷增多,我們可以考慮通過(guò)guard來(lái)優(yōu)化一下代碼邏輯,方便代碼的后續(xù)維護(hù):

    func guardCaseMulti(name:String?,param:String?) -> Void {
        
        // 正常判斷
        if name != nil && (name?.characters.count)! > 0 {
            if  param != nil && (param?.characters.count)! > 0 {
                print("guardCaseMulti--數(shù)據(jù):\(param)")
            } else {
                
            }
        } else {
            print("guardCaseMulti--data沒(méi)有數(shù)據(jù)")
        }
        
        // let 語(yǔ)句
        
        if let result = name, result.characters.count > 0,let passWord = param, passWord.characters.count > 0 {
            print("let語(yǔ)句:\(result)---\(passWord)")
        } else {
            print("參數(shù)沒(méi)有數(shù)據(jù)")
        }
        
        // guard 語(yǔ)句
        
        guard let result = name, result.characters.count > 0,let passWord = param, passWord.characters.count > 0 else {
            print("guardCaseMulti無(wú)數(shù)據(jù)")
            return
        }
        
        print("guardCaseMultiguard語(yǔ)句--\(result)---\(passWord)")
      
    }
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容