1. 关于swift中的if
我们写一个最简单的if判断,比较两个值的最小值,我们发现和C 不一样
1.是条件语句没有小括号
2.在swift中执行语句必须用{}包起来,在C中如果只有一句我们可以直接写不用{},但是在swift中不行
3.在C中我们可以直接用 if (num){ ... }这样用来判断num非空,但是swift不存在非零即真
在swift中我们可以if let连用,来判断对象是否为空,避免强制解包
正常情况下有可选值我们需要这样写:判断是否为空再强制解包,
let name:String? = "张三"
let age: Int? = 10
if name != nil && age != nil {
print(name! + String(age!))
}
但是我们可以 if let连用:不用强制解包
if let name = oName,
let age = oAge{
print(name + String(age))
}else{
print("name or age is nil")
}
注:强制解包有风险,我们要尽量避免强制解包
2.关于swift中的guard
guard是在swift2.0之后推出来的,和if 一样判断作为判断语句,但是用法不太一样 如下:
guard let name = oName,let age = oAge else { print("名字或年龄为空") return } //在guard中else包着的内容为空
print(name + String(age)+"是真的")//和if相比,guard可以降低分支
3.关于swift中的switch
对于多分支的情况下我们会使用switch,减少冗余,但是有几点是和C不太一样的,如下面代码:
let num = 10
switch num {
case 10: print("right")
default: print("correct")
}
let name = "w"
switch name {
case "w","l":
print("yes")
default:
print("no")
}
1.switch中case的判断语句是整数,但是在swift中不局限于整数
2.swift 的switch 一般不用break
3.有多个值可以用“,”隔开
4.每个分支必须有一条指令
4.??
func demo1(a : Int?,b : Int?) {
print((x ?? 0) + (y ?? 0))
}
?? 是三目运算符,当前变量有值,使用值,没有,则用??后的代替
操作符优先级低,使用时最好加上小括号