一、if...else...语句
- 条件不需要(),Swift中没有C语言中的非零即真概念,在逻辑判断时必须指明具体的判断条件,必须为 bool 类型: true/false
- 语句必须要有{}:--也有很多公司的代码规范中,禁止不使用{}
//MARK: if...else 分支
func testIF(cet4:Int,Scard:Bool)
{
if cet4 >= 425 {
if Scard {
print("进入考场参加六级考试")
}else{
print("滚回去拿学生证")
}
}else{
print("没过四级,滚远一点")
}
}
testIF(cet4: 425, Scard: false)
二、guard 语句
- guard 语句是 Swift 语言中所特有的,与 if 语法有点相似;
- guard 语法的目的是提高程序的可读性;
- 必须使用在函数里面;
- 必须带有 else 语句;
- 当条件表达式为 true 时,跳过 else 语句中的内容,直接执行后面的语句;
- 当条件表达式为 false 时,执行 else 语句中的内容,需要跳转语句,跳转语句一般是 return、continue、break 和 throw。
//MARK : guard 分支
func testGuard(cet4:Int,Scard:Bool)
{
//如果条件满足就执行后面的语句
//如果条件不满足,就执行 else 里面的语句
guard cet4 >= 425 else {
print("四级没过,不允许参加六级考试")
return
}
guard Scard else {
print("回去拿学生证")
return
}
print("进入考场参加六级考试")
}
testGuard(cet4: 425, Scard: true)
三、switch 语句
- OC 中在 case 中定义变量要加 { };而 Swift 中不需要加 { }
//OC 中在 case 中定义变量要加 { }
int a = 13;
switch (a) {
default:
NSLog(@"默认");
break;
case 2:
NSLog(@"sdfa");
break;
case 10:
{ //在 case 中定义变量要加 { }
int c = 20;
NSLog(@"%d",c);
}
break;
}
- Swift 中 case 不要加小括号 (),而 OC 中需要;
- Swift 中 case 后面可以有多个判断条件,而 OC 后面只能有 1 个判断条件;
- Swift 中 每个 case 语句结束后不需要加 break,其默认是不穿透,如果需要穿透就加 fallthrough 语句;而 OC 默认穿透,每个 case 语句结束要加 break;
- Swift 中 switch 语句中必须要有 default,而且只能在 switch 语句的最后,而 OC 中可以不需要 default,而且对 default 的位置也没有要求;
- OC 判断条件只能判整数,而 Swift 可以判断任何类型。
//MARK : switch 语句
let a = 10.1
func testSwitch(x:Double)
{
switch x {
case 10.1:
print("参数为\\(x)")
fallthrough
case 5,10.1:
print("参数为5或者10.1")
default:
print("不知道")
}
}
testSwitch(x: a)
四、switch 语句的特殊使用方法
- 取值范围表示:
- var x in 1...10 表示为 1 <= x <= 10
- var x in 1..<10 表示为 1 <= x < 10
//MARK - switch 语句的特殊使用方法
func testSwitch01(score:Int)
{
switch score {
case 0..<425:
print("六级没过")
case 425..<700:
print("分数很高")
case 700:
let fallScore = 725
print("快接近满分啦,满分为\\(fallScore)")
default:
print("不知道")
}
}
testSwitch01(score: 700)
- switch 中元组的使用:
- Swift 语句中,区间可以为 double;
- 可以进行值绑定。
//元祖(以点坐标为例)
func testSwitch02(point:(x:Double,y:Double))
{
switch point {
case (0,0):
print("点在原点")
case (1...10.6,1...10):
print("点在第一象限")
case (_,0):
print("点在 X 轴上")
case (0,let y): //值绑定
print("在y轴上 \\(y) 位置")
case let(x,y) where x>y: //根据条件绑定
print("在 y=x 直线下方,具体点位置为(\\(x),\\(y))")
case let(x,y) where x<y:
print("点在 y=x 上方,具体点位置为(\\(x),\\(y))")
default:
print("不知道")
}
}
testSwitch02(point: (-40.1,-5))
网友评论