引言:Swift 提供了多种流程控制结构,包括可以多次执行任务的 while 循环,基于特定条件选择执行不同代码分支的 if、guard 和 switch 语句,还有控制流程跳转到其他代码位置的 break 和 continue 语句。Swift 的 switch 语句比许多类 C 语言要更加强大
For-In循环
在之前数组、字典内均已提及过遍历,在此只是补充一下区间运算符
let list = ["1","2","3","4","5"]
1.闭区间运算符:闭区间运算符(a...b)定义一个包含从 a 到 b(包括 a 和 b)的所有值的区间。a 的值不能超过 b。如:
for string in list[0...2] {
print(string)
}
输出为:1 2 3
2.半区间运算符:半开区间运算符(a..<b)定义一个从 a 到 b 但不包括 b 的区间。 之所以称为半开区间,是因为该区间包含第一个值而不包括最后的值。如:
for string in list[0..<2] {
print(string)
}
输出为:1 2
3.单侧区间运算符:闭区间操作符的另一个表达形式,可以表达往一侧无限延伸的区间,如:
for string in list[2...] {
print(string)
}
输出为:3 4 5
单侧区间也可以添加 < 或 > 如:
for string in list[2<..] {
print(string)
}
输出为:4 5
While循环
while 循环会一直运行一段语句直到条件变成 false。这类循环适合使用在第一次迭代前,迭代次数未知的情况下。
Swift 提供两种 while 循环形式:
while 循环,每次在循环开始时计算条件是否符合; repeat-while 循环,每次在循环结束时计算条件是否符合。
定义
var index = 0
while index < 5 {
index+=1(注意+=必须紧靠属性后)
print(index)
}
print("完成")
输出为:1 2 3 4 5 完成
var index = 5
repeat{
index+=1
print(index)
}while index < 5
print("完成")
输出为:6 完成
枚举(仅描写枚举基础用法)
引言:枚举为一组相关的值定义了一个共同的类型,使你可以在你的代码中以类型安全的方式来使用这些值。
定义
enum NumberType{
// 枚举定义放在这里
}
代表为一个空枚举
enum NumberType:Int{
// 枚举定义放在这里
case OneType = 1
case TwoType
case ThreeType
}
代表该枚举的成员赋值为Int类型,还可将所有成员值放置在同一行,用","隔开
用法
let type = NumberType.OneType
let type:NumberType = .OneType
条件语句
引言:Swift 提供两种类型的条件语句:if 语句和 switch 语句。通常,当条件较为简单且可能的情况很少时,使用 if 语句。而 switch 语句更适用于条件较复杂、有更多排列组合的时候。并且 switch 在需要用到模式匹配(pattern-matching)的情况下会更有用。
**1.if **
if语句最简单的形式就是只包含一个条件,只有该条件为 true 时,才执行相关代码,如:
let num = 5
if num > 2 {
print("正确")
}else{
print("错误")
}
你可以把多个 if 语句链接在一起,来实现更多分支:如:
let num = 10
if num > 15 {
print("大于15")
}else if num > 5{
print("大于5")
}else{
print("错误")
}
输出为:大于5
guard语句
像 if 语句一样,guard 的执行取决于一个表达式的布尔值。我们可以使用 guard 语句来要求条件必须为真时,以执行 guard 语句后的代码。不同于 if 语句,一个 guard 语句总是有一个 else 从句,如果条件不为真则执行 else 从句中的代码。 定义:
let num:Int = 10
guard num > 10 else {
print("结束")
return
}
注意:1.当判断条件==false时,这个分支代码必须转移控制以退出 guard 语句出现的代码段。它可以用控制转移语句如 return、break、continue 或者 throw 做这件事,或者调用一个不返回的方法或函数,例如 fatalError()。
2.
2.Swich
switch 语句会尝试把某个值与若干个模式(pattern)进行匹配。根据第一个匹配成功的模式,switch 语句会执行对应的代码。当有可能的情况较多时,通常用 switch 语句替换 if 语句。如:
let type = NumberType.OneType
switch type {
case .OneType(在值已确定类型枚举时,可以直接用点语法):
print("我是one")
case .TwoType:
print("我是two")
case NumberType.ThreeType:
print("我是three")
default:
print("都没有")
}
输出为:我是one
注意:1.每个case下必须有内容处理
2.与 C 和 Objective-C 中的 switch 语句不同,在 Swift 中,当匹配的 case 分支中的代码执行完毕后,程序会终止 switch 语句,而不会继续执行下一个 case 分支。这也就是说,不需要在 case 分支中显式地使用 break 语句。
case 分支的模式可以使用 where 语句来判断额外的条件。如
let num:Int = 10
switch num {
case let number where number > 2:
print("大于2")
case let number where number > 5:
print("大于5")
}
输出为:大于2
3.控制转译语句
控制转移语句改变你代码的执行顺序,通过它可以实现代码的跳转。Swift 有五种控制转移语句:
continue、break、fallthrough、return、throw
我们将会在下面讨论 continue、break 和 fallthrough、return语句。
(1)continue:会立即结束本次循环开启下一轮循环,如:
var num = 5;
for index in 0..<10 {
if index == num {
num+=1
continue
}
}
它会在第一次index == 5时,num自增加一,结束本次循环,然后开启新一轮循环(第二次会在index == 6时开启下一轮,依次类推)
(2)beak:会立即结束本次循环,如:
var num = 5;
for index in 0..<10 {
if index == num {
num+=1
continue
}
}
它会在第一次index == 5时,结束本次循环
(3)fallthrough:仅限用于swich语句内,用于判断条件生效后,可接着判断下一条件,如:
let num:Int = 10
switch num {
case let number where number > 2:
print("大于2")
fallthrough
case let number where number > 5:
print("大于5")
fallthrough
default:
print("默认")
}
输出为:大于2 大于5 默认
(4)return:结束本次循环,并终止执行以下语句,如:
let num:Int = 10
if num > 5 {
print("结束")
return
}
print("你好")
输出为:结束