对于一些可选值,一般最好经过判断之后确定其不为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。
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))
}
网友评论