/ɡɑrd/ 警卫,保卫
func demo () -> () {
let oName: String? = "老王"
let oAge: Int? = 10
// guard let 和 if let 刚好相反
// 守护一定有值,如果 没有直接返回
guard let name = oName, let age = oAge else {
print("姓名或者年龄为 nil ")
return
}
//代码执行至此, name 和 age 一定有值
//通常判断是否有值之后,会做具体的逻辑实现,通常代码多
//如果用的是 if let 凭空多了一层分支 guard降低分支层次的办法,在Swift 2.0时候推出
print(name + String(age)) //输出 老王 10岁
}
如果其中有值 为nil
func demo1 () -> () {
let oName: String? = "老王"
let oAge: Int? = nil
// 如果 没有值 直接返回
guard let name = oName, let age = oAge else {
print("姓名或者年龄为 nil ") //输出 姓名或者年龄为 nil
return
}
print(name + String(age)) // 不会输出
print("测试测试") // 不会输出
}
demo(name: "laowang", age: 18)
func demo (name:String? , age:Int?) -> () {
if let name = name,let age = age {
print(name + String(age) + "哈哈") //laowang18哈哈
//在这里打印 name 快捷提示会有两个
}
//在这里打印 name 快捷提示只有一个
//使用同名的变量接受,在后续使用的都是非空的值,不需要解包
//好处,可以避免起名的烦恼
guard let name = name ,let age = age else {
print("姓名年龄为 nil")
return
}
print(name + String (age)) //laowang18
}