swift之if let和guard let

源码 2024-9-18 06:21:50 7 0 来自 中国
对于一些可选值,一般最好颠末判断之后确定其不为nil的情况下,再去用!欺压解包,这是可以通过if来举行判断。但是过多利用if判断会让代码看起来很缭乱。Swift中提供了if let和guard let办理这个题目。
if let
func demo() {        let name: String? = "老王"        let age: Int? = 10        //if let 连用,判断对象的值是否为nil,假如不为nil,直接实行if中的代码        if let nName = name,            let nAge = age {            //这里的name和age肯定有值            print(nName + String(nAge))            //留意:这里的nName和nAge仅在作用域内有用        }else{            print("name或age有一个为空")        }    }guard let:guard let和if let刚好相反,guard let保卫肯定有值。假如没有,直接返回
func demo() {       let name: String? = "老王"       let age: Int? = 10       guard let nName = name, let nAge = age else{            print("name或age有一个为空")            return        }        //代码到此,nName和nAge肯定有值。        //假如只是直接利用if let会凭空多了一个分支,guard let可以低落分支的层次。一般在解包的时间guard let用的相对比力频仍。        print(nName + String(nAge))    }关于if let和guard let的明白,可以参考guard和if的用法中的解释:根据关键字之后的表达式的布尔值决定下一步实行什么!
//eg:此处对于if let就不能团体明白,if反面跟了三个条件,let data = FileManager.default.contents(atPath: filePath)为条件一,persionAge > 18为条件二,persionAge < 60位条件三。因此按照guard和if关键字在官方文档的解释区明白才是精确的。        if let data = FileManager.default.contents(atPath: filePath), persionAge > 18, persionAge < 60 {            return User.user(data)        }        return nil延伸:if 和if let
1.假如常量是可选项(Optional),if判断后仍旧必要解包(!)
let name: String? = "老王"let age: Int? = 10if name != nil && age != nil {    print(name! + String(age!))     // 输出:老王10}2.假如常量是可选项(Optional),if let判断后不必要解包(!),{ }内肯定有值
let name: String? = "老王"let age: Int? = 10// if let 连用,判断对象的值是否为'nil'if let nameNew = name,    let ageNew = age {        // 进入分支后,nameNew 和 ageNew 肯定有值    print(nameNew + String(ageNew)) // 输出:老王10}
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 22:35, Processed in 0.156860 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表