事例:
- 假设有身份证并且成年的就可以上网。
1.用if进行判断
func surf(age: Int, hasCard: Bool)
{
if age>=18 {
if hasCard {
print("老板,给我充两个小时")
}else{
print("没带身份证,回家拿去")
}
}else{
print("没成年,回家吃奶去")
}
}
- 调用函数
surf(age: 17, hasCard: false)
surf(age: 29, hasCard: true)
surf(age: 20, hasCard: false)
- 打印结果
没成年,回家吃奶去
老板,给我充两个小时
没带身份证,回家拿去
2.用guard进行判断
func guardCard(age: Int,hasCard: Bool)
{
guard age >= 18 else {
print("没成年,回家吃奶去")
return
}
guard hasCard else {
print("没带身份证,回家拿去")
return
}
print("老板,给我充两个小时")
}
- 调用函数
guardCard(age: 17, hasCard: false)
guardCard(age: 29, hasCard: true)
guardCard(age: 20, hasCard: false)
- 打印结果
没成年,回家吃奶去
老板,给我充两个小时
没带身份证,回家拿去
3.guard let 和 if let的使用
在可选项进行解包时,有三种常用方式。
- 名称! 强行解包 如果为常量,值为nil,强行解包运行会奔溃。如果为变量,值为nil,强行解包值为空
- 名称 ?? value 简单三目运算,如果有值就直接赋值,如果没值就用后面value替换
- guard let 或者 if let
var test: Int? = 9
if let result = test
{
print(result)
}
func demo(test : Int?) {
guard let result1 = test else{
// 如果没值
return
}
// 如果有值
print(result1)
}
4.总结
guard有守卫的意思,就如防护门一样,一道道防护,第一道门走不通的时候就被拦截在外了。所以guard的判断是:
如果条件满足,继续往下走,
如果条件不满足,走else分支。
guard不支持直接在外使用,if可以直接使用。
-
例如
写在函数方法外.png
报错:必须要有return或者break。所以guard不能直接写。
网友评论