1 //
2 // ViewController.swift
3 // Swift-循环语句
4 //
5 // Created by luorende on 16/12/08.
6 // Copyright © 2016年 luorende. All rights reserved.
7 //
8
9 import UIKit
10
11 class ViewController: UIViewController {
12
13 override func viewDidLoad() {
14 super.viewDidLoad()
15 // Do any additional setup after loading the view, typically from a nib.
16
17
18 // 循环语句能够使程序代码重复执行。Swift编程语言支持4种循环构造类型:while、do while、for和for in。for和while循环是在执行循环体之前测试循环条件,而do while是在执行循环体之后测试循环条件。这就意味着for和while循环可能连一次循环体都未执行,而do while将至少执行一次循环体。for in是for循环的变形,它是专门为集合遍历而设计的。
19
20
21 // 一、 for 的用法
22 // 一般格式:for 变量;变量<某个值;变量++
23 // 例子 1
24 for i in 0 ..< 5 { //从0开始到小于5
25 print("i=\(i)")
26 }
27 // 例子 2 Swift3.0会报错,好像说是移除C的风格
28 // var j=0 //把变量写在外面
29 // for j=0; j<5 ; j += 1 {
30 // print("j=\(j)")
31 // }
32
33
34
35 // 二、for in 的用法
36 // 格式:for 变量或临时变量 in 集合
37 // 说明:当执行for in语句的时候,集合中所对应的值依次会赋给变量或临时变量
38 // 例子 1
39 // 字符串遍历:
40 var str = "ABCDEFG"
41 for temp in str.characters {//遍历字符串里面的字符
42 print(" temp=\(temp) ")
43 }
44
45
46
47
48 // 例子 2
49 // 遍历序列
50 let A = 1...5// ... 三个点表示序列 即 1到5的序列(1,2,3,4,5)也可以说是1-5的合集
51 for temp in A {
52 print("temp=\(temp)")
53 }
54 /**
55 运行结果:
56 temp=1
57 temp=2
58 temp=3
59 temp=4
60 temp=5
61 */
62
63
64
65 // for 循环遍历int整形数组的里的个数
66 let numbers = [1,2,3,4,5,6,7,8,9,10]
67 for i in 0 ..< numbers.count {
68 print("Count is: \(i)")
69 }
70
71
72
73
74 // for-in遍历一个数组所有元素:
75 let names = ["Anna","Alex","Brian","Jack"]
76 for name in names {
77 print("Hello, \(name)!")
78 }
79 /**
80 运行结果:
81 Hello,Anna!
82 Hello,Alex!
83 Hello,Brian!
84 Hello,Jack!
85 */
86
87
88 // 你也可以通过遍历一个字典来访问它的键值对(key-value pairs)。遍历字典时,字典的每项元素会以(key, value)元组的形式返回,你可以在for-in循环中使用显式的常量名称来解读(key, value)元组。下面的例子中,字典的键(key)解读为常量animalName,字典的值会被解读为常量legCount:
89 let numberOfLegs = ["spider":8,"ant":6,"cat":4]
90 for(animalName,legCount)in numberOfLegs {
91 print("\(animalName)s have \(legCount) legs")
92 }
93 /**
94 运行结果
95 spiders have 8legs
96 ants have 6legs
97 cats have 4legs
98 */
99
100
101
102 // 三、while 用法
103 // 格式:while 布尔值 {}
104 // 说明:只有当while后面的布尔值为false,才停止while语句,否则一直执行while语句
105 var i = 0 //只有满足条件(i<5)才跳出while语句
106 while (i<5) {
107 print("i=\(i)")
108 i += 1
109 }
110 /**
111 运行结果
112 i=0
113 i=1
114 i=2
115 i=3
116 i=4
117 */
118
119
120
121 // 四、do {} while 布尔值 do换了个写法,换成了repeat关键字
122 // 说明: 1.现在执行 do 语句
123 // 2.然后再执行while语句
124 // 3.如果while语句后面的布尔值为false就停止do while语句,否则就一直执行do while语句
125 // do while循环没有初始化语句,循环次数是不可知的,不管循环条件是否满足,都会先执行一次循环体,然后再判断循环条件。如果条件满足则执行循环体,不满足则停止循环。
126
127 var k=1
128 repeat {
129
130 print("k=\(k)")
131 k += 1
132
133 } while (k<=5)
134 //
135 /**
136 运行结果:
137 i=1
138 i=2
139 i=3
140 i=4
141 i=5
142 */
143
144
145 // switch 语句
146 // Swift里的switch循环语句里面可以省略了break;
147
148 // 例子
149 let l=1
150 switch (l) {
151 case 0: // case后面必须要跟一个变量,当i=0就执行case当前语句下面对应的方法
152 print("l=\(l)")
153
154 case 1,2: // case后面可以跟两个变量,多个变量可以用逗号隔开,当i=1或者2的时候就执行case语句下面对应的方法
155 print("l==\(l)")
156
157 default: // 如果i都不满足一下条件的时候就执行default语句下面对应的方法
158 print("default")
159
160 }
161 /**
162 运行结果:
163 i==1
164 */
165
166
167
168 // switch 序列匹配
169 /**
170 第一种用法:范围匹配
171 */
172 let a=75
173 switch (a) {
174 case 1...50://case后面跟一个序列,序列是一个集合变量,当i在1到50的范围下就执行case下面对应的方法或语句
175 print("1...50->a=\(a)")
176 case 50...100://case后面跟一个序列,序列是一个集合变量,当i在50到100的范围下就执行case下面对应的方法或语句
177 print("50...100->a=\(a)")
178 default://如果i的取值范围都不满足条件,就执行default下面对应的方法或者语句
179 print("default")
180 }
181 /**
182 运行结果:
183 50...100->i=75
184 */
185
186
187
188 /**
189 第二种用法:元组匹配
190 */
191
192 let string = (1,2) // str 是元组变量
193 switch (string) {
194 case (0...1,0...1):// 如果元组变量str的范围(0到1,0到1)
195 print("(0...1,0...1)-->str=\(str)")
196 case (1...2,1...2):// 如果元组变量str的范围(1到2,1到2)
197 print("(1...2,1...2)-->str=\(str)")
198 default:
199 print("default")
200 }
201 /**
202 运行结果:
203 (1...2,1...2)-->str=(1, 2)
204 */
205
206
207
208 }
209 override func didReceiveMemoryWarning() {
210 super.didReceiveMemoryWarning()
211 // Dispose of any resources that can be recreated.
212 }
213
214
215 }