1、swift语句中的控制流和其他语言大致相同,使用if和switch作为条件控制。使用 for-in、for、while、do-while作为循环。
2、区别之处:小括号不是必须的,但是主体的大括号还是必需的,,,,
3、在if语句中,条件必须是布尔表达式,这意味着if score{...}是错误的,不能隐含的与0比较
4、可以一起使用if和let来防止值的丢失。这些值是可选的。可选的值包含一个值或者包含一个nil来指定值还存不存在。写一个问号"?"在类型后表示值是可选的。
5、在switch-case语句中,switch可以接收任何类型的变量或语句作为条件,不再限制于字符类型、整型等,在一条语句结束后,不需要再写上break,但是最后的defalut不能省略。switch的每一个case至少有一条语句,不允许后面跟一个空语句。
6、可以在循环中保持一个索引,通过".."来表示索引范围或明确一个初始值、条件、增量。用"..<"表示不算上边界,用"..."表示算上边界
7、在控制流中有一个新的类型元组,它可以同时存放很多的值,可以通过"元组名.索引"来获取其中值,也可以遍历获取。当然也可以通过键或者函数获取。
具体举例如下:
类型后面带一个?代表前面如果是nil就执行后面的部分,如果不是nil,后面就不执行,表示后面的数据是可选的
var name:String? = "Tom"name == nil //false
在if中使用let temp = name,如果temp是nil,后面不执行,相反则执行
//name = nilif let temp = name{ println("hello \(temp)") //"hello Tom"}
传统for循环语句,不需要小括号
//传统for循环let array = [1,2,3,4,5]var sum1 = 0for var i = 0; i<5; i++{ sum1 += array[i]}sum1 //输出结果
高级for循环,不需要小括号,判断时的条件必须是布尔类型,需要是具体的算数逻辑或关系逻辑 如>、<、==
//高级for循环let Allscore = [80,87,90,60,45]var sum = 0for eachscore in Allscore{ if eachscore > 50 //使用关系判断的比较方式作为判断条件 { sum += 1 } else { sum += 3 }}sum //输出结果
采用.代替省略的索引,使用..<表示不包括边界,如果包含边界,使用...
//不包括索引5 for j in 0..<5{ sum1 += array[j]}sum1 //输出结果
swicth后的表达式可以是各种类型
case后面可以根很多种情况
case后面用let x where 进行分类
case后面不能用break
defalut不能省略
var color = "lightgray"var commment = ""switch color {case "red": commment = "激情"case "green","blue": commment = "忧郁"case let x where x.hasSuffix("gray"): commment = "灰色心情-\(x)"default: commment = "其他心情"}commment //输出结果
新类型元组的使用,可以存放多个值,通过"元组.索引"获取值,也可以遍历获取
//新类型:元组var tuples = ("Tom",22)tuples.0 = "Jobs" //获取元组中第一个值tuples.1 = 23 //获取元组中第二个值println(tuples)//元组使用let dictionary = [ "Prime":[2,3,5,7,11,13], "Fibonacci": [1, 1, 2, 3, 5, 8], "Square": [1, 4, 9, 16, 25],]var largest = 0 //通过for高级循环遍历元组中的数据for (kind,numbers) in dictionary{ for number in numbers{ if largest < number{ largest = number } }}largest //输出最大值
where循环语句,也是不用使用小括号了
//where语句的使用(明显的区别就是不适用()括号了)//方式一var num = 1while num < 10{ num = num * 2}num //方式二var tempNum = 1do{ tempNum = tempNum * 2}while tempNum < 10tempNum
switch语句拓展:
多个模式
???????????????