1) for -in 循环, 对于数据范围,序列,集合等中的每一个元素,都执行一次
for a in 0...5{} //循环迭代,从a=0到a=5,执行{}里的代码
注意:a只循环中存在,也就是出了{}a就不存在了或者遍历数组
- let a = [1,2,3]
- for b in a{} //循环迭代,从b=1到b=3
如果你不需要序列中的每一个值,可以使用_来忽略它,仅仅只是使用循环体本身:
for _ in 0 ... 5 {} // 循环执行{}里的代码 , 执行 6 次
2) For-Condition-Increment条件循环。和c语言中的一样
for var a = 0 ; a< 3 ; a++ {} // 循环,从 a=0 到 a=2
2. while循环
while循环执行一系列代码块,直到某个条件为false为止。这种循环最长用于循环的次数不确定的情况
1) while循环
var a = 1
while a < 5 { println ( a ++) } // 输出 1 2 3 4
2) do-while循环
var a = 1
do { println ( a ++) } while a < 5 // 输出 1 2 3 4
while和do-while的区别就是do-while是先执行再判断,也就是说do-while至少执行一次,while可能一次都不执行
二、条件语句
1. if 语句
如果条件为true时,执行if语句块中的语句
var a = 1
if a > 0 { println ( a ) } // 输出 1
注意:和C语言以及Objective-C不一样,if或者else后面必须带有括号,否则编译器会报错
2. switch 语句
1)switch语句考察一个值的多种可能性,将它与多个case相比较,从而决定执行哪一个分支的代码
- var a = 1
- switch a{
- case 0:
- println("0")
- case 1:
- println("1")
- default:
- println("other")
- } //输出1
2)如果两个分支执行的是相同的代码。可以直接写在一个case里面,用逗号,隔开
- var a = 1
- switch a{
- case 0, 1:
- println("0")
- default:
- println("other")
- } //输出0
3)switch语句的case中可以匹配一个数值范围
- var a = 1
- switch a{
- case 0..3:
- println("0")
- default:
- println("other")
- } //输出0
4)case还可以匹配元组,_代表着任何值
- var a = (1,2)
- switch a{
- case (1,1):
- println("0")
- case (_,2):
- println(1)
- default:
- println("other")
- } //输出1
5)数值绑定:
在case匹配的同时,可以将switch语句中的值绑定给一个特定的常量或者变量,以便在case的语句中使用。比如:
- var a = (1,2)
- switch a{
- case (let x,1):
- println("x:\(x)")
- case (let y,2):
- println("y:\(y)")
- default:
- println("other")
- } //输出y:1
6)while 关键字:
switch语句可以使用where关键词来增加判断的条件
- var a = (1,2)
- switch a{
- case let (x,y) where x>y:
- println("x>y")
- case let (x,y) where x<y:
- println("x<y")
- default:
- println("other")
- } //输出x<y
3.控制跳转语句
continue , break , fallthrough, return
1) continue
continue语句告诉一个循环停止现在在执行的语句,开始下一次循环。
- for a in 0...3 {
- if a == 2 { continue }
- println(a)
- } //输出 0 1 3
2)break
break语句将终止整个循环的执行,可以用在循环语句中,也可以用在switch语句中。
- for a in 0...3 {
- if a == 2 { break }
- println(a)
- } //输出 0 1
3) fallthrough
由于Swift中的switch语句不会自动的因为没有break而跳转到下一个case,因此如果需要想C语言中那样,依次执行每个case的时候,就需要用到fallthrough关键词。
- let a = 2
- switch a {
- case 1:
- println("1")
- case 2:
- println("2")
- fallthrough case 3:
- println("3")
- default:
- println("other")
- } //输出2 3.如果a=1,则只输出1
4) 标签语句
switch和循环可以互相嵌套,循环之间也可以互相嵌套,因此在使用break或者continue的时候,需要知道到底是对哪个语句起作用。这就需要用到标签语句。标签语句的一般形式如下:
- firstLoop: for a in 0..2{
- switch a{
- case 0:
- break
- default:
- println("default")
- }
- println(a)
- } //什么都不会输出,当a=0时,已经直接将for循环break了。如果去掉firstLoop,则只会break switch,输出 0 default 1
标签语句同样适用于多重循环
- firstLoop: for a in 0..2{
- for b in 0..2
- {
- if b == 1
- {
- break firstLoop
- }
- println("a:\(a),b:\(b)")
- }
- } //仅输出a:0,b:0