對于一些可選值,一般最好經過判斷之后確定其不為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))
}