swift:入门知识之控制流
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 = nil if let temp = name{ println("hello \(temp)") //"hello Tom" }
传统for循环语句,不需要小括号
//传统for循环 let array = [1,2,3,4,5] var sum1 = 0 for var i = 0; i<5; i++ { sum1 += array[i] } sum1 //输出结果
高级for循环,不需要小括号,判断时的条件必须是布尔类型,需要是具体的算数逻辑或关系逻辑 如>、<、==
//高级for循环 let Allscore = [80,87,90,60,45] var sum = 0 for 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 = 1 while num < 10{ num = num * 2 } num
//方式二 var tempNum = 1 do{ tempNum = tempNum * 2 }while tempNum < 10 tempNum
switch语句拓展:
多个模式