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 }
时间: 2024-12-26 15:00:14