逻辑分支的分类
- if语句
- switch语句
- 三目运算符 (相当于 If else)
if分支语句
- 注意:
- 在swift语言中必须标明是
真假(bool)
- 条件必须有
明确的Bool类型
- 不在有隐式转换(
关系非0即为真的说法不在存在
)
- Bool的取值:false/true
- 在Swift中 if语句格式,和OC中的不一样 ,
条件可以不加()
if 条件 { } ;
let a = 10;
//错误
// if a {
//
// print("进来咩有");
// }
//条件必须是 bool类型
//正确
if a > 2 {
print("进if语句了吗");
}
if a == 10 {
print("是不是为真");
}else {
print("不是真的");
}
三目运算符
三目运算符 其实就是 if else的另外一种形式
let a = 1;
a == 1 ? print("是1"):print("不是3");
guard的使用
- guard是Swift2.0新增的语法
- guard与if语句非常类似,它设计的目的是提高程序的可读性
- guard必须使用在函数里面
- guard语句必须带有else语句
- 当条件表达式为true的时候跳过else语句中的内容,执行语句组内容
- 条件表达式为false的时候执行else语句中的内容,跳转语句一般是return、break、continue和throw
- 表达形式
guard 条件表达式 else {
// 条换语句
return/break
}
语句组
var word = 10;
//定义一个函数
func test(word:Int)->Void {
guard word > 9 else {
print("是不是大鱼10");
return;
}
print("你看看对不");
}
//调用
test(word: word);
//打印结果:你看看对不
switch语句
- 在Swift中的switch 可以没有(),case后面也可以没有break.
- 添加 可以是 整行,浮点型,字符串型,区间判断(0~10)
-
fallthrough
关键字,可以贯穿语句
整型
//***************简单switch*****************
let sex = 1
switch sex {
case 0 :
print("男")
case 1 :
print("女")
default :
print("其他")
// fallthrough贯穿语句,执行完case 1 直接执行case2
let num = 1;
switch num {
case 1:
print("111");
fallthrough
case 2:
print("这是22")
default:
print("defaultdefaultdefault");
}
- 在一个case判断中,可以判断多个值,多个值用 , 隔开
//****************一个case可以判断多个值******************
let sex = 0
switch sex {
case 0, 1:
print("正常人")
default:
print("其他")
}
浮点型
let f = 3.14
switch f {
case 3.14:
print("π")
default:
print("not π")
}
字符型
let m = 5
let n = 10
var result = 0
let opration = "+"
switch opration {
case "+":
result = m + n
case "-":
result = m - n
case "*":
result = m * n
case "/":
result = m / n
default:
result = 0
}
print(result)
区间
- 区间
- 开区间: 0..< 5 表示是0-4 不包括5
- 闭区间:0...10 表示:0-10
- 单侧区间 0... 表示 0 到 无穷大
// ******************区间*****************
let score = 90;
switch score {
case 0..<60:
print("不及格");
case 60..<80:
print("及格");
case 80..<90:
print("良好");
default:
print("优秀");
}
元祖中的匹配
let point = (1,1);
switch point {
case (0,0):
//表示是不是在这个点
print("是不是这个点q1");
case (_,0):
// _忽略这个值,只要后面的值匹配上就成功
print("是不是在X轴");
case (-2...2,-2...2):
//表示 -2...2的区间是否包含这个 这个数
// 像是一个平面
print("是不是在这个平面上");
default:
print("跳出平面");
}
值绑定
let point = (1,1);
//值绑定
switch point {
//只要case中的1与point元祖里面的末尾匹配就会走这个方法
// 然后 point元祖中的 剩下的值 会赋值给 x这个常量
case (let x ,1):
print("走不走\(x)");
default:
print("没有匹配到");
}
where关键字
let point1 = (1,-1);
switch point1 {
case let(x,y) where x == y:
print("x===y");
case let(x,y) where x == -y:
print("x== -y");
case let(x,y):
print("\(x),打印 \(y)");
}