For循环
1、区间
(1...5)闭区间1-5,包括1和5
(1..<5) 半开区间,包括1,不包括5
for index in 1…5 index为常量 ,如果不需要知道index的值,可以用下划线“_”代替变量名
目前发现使用for in只能实现递增效果,不能递减
2、数组、字典、集合、字符串
var array = ["a","b"]
for value in array {
println(value)
}
for (index,value) in enumerate(array) {
println("\(index) = \(value)")
}
var dic = [1:"a",2:"b"]
for (key,value) in dic {
println("\(key) = \(value)")
}
var str = "abc" + "\u{1f432}"
for c in str {
println(c)
}
3、for 条件递增与OC一样,只是声明变量时,要使用var关键字,因为变量需要改变
While 循环
while 条件 { …. } 开始判断条件
do { ….. } while 条件 结束判断条件
条件语句
1、 if
2、Switch
a、不存在隐式的贯穿(No Implicit Fallthrough),不需要在每个分支之后添加break关键字,每个分支执行完毕之后就会跳出,如果想继续向下执行,需要添加fallthrough关键字
b、区间匹配case 1…10: { … }判断该值是否在某一个范围内
c、元组 可以使用元组在同一个switch语句中测试多个值,元组中的元素可以是值,也可以是区间,也可以用下划线“_”来匹配所有可能的值
d、值绑定 只用于元组上
let point = (0,1)
switch point {
case (let x, 0) :
println("(\(x),0)在x轴上")
case (0, let y) :
println("(0,\(y))在y轴上")
case (let x, let y) :
println("(\(x),\(y))没在x轴,也没在y轴上")
}
e、where关键字 增加额外条件
let point = (1,1)
switch point {
case (let x, 0) :
println("(\(x),0)在x轴上")
case (0, let y) :
println("(0,\(y))在y轴上")
case (let x, let y) where x == y:
println("(\(x),\(y))没在x轴,也没在y轴上")
}
其他关键字 break continue
1、break :立刻中断该循环体执行,然后跳转道表示循环体结束的大括号后的第一行代码
2、continue :立刻停止本次循环体执行,重新开始下次循环迭代
3、fallthrough :在switch中每一个分支结束后可以使用,执行下一个分支
4、标签(Labeled Statements)在循环体中使用,标记当前循环体
oneLoop: for a in 0...4 { //oneLoop标签名,标记当前for循环
println("a====================\(a)")
twoLoop : for b in 1...3 { //twoLoop标记当前for循环
if a == 2 {
break twoLoop //停止twoLoop标记的循环体
}
println("b======\(b)")
}
}
引用:《The Swift Programming Language》
如有问题欢迎指正,谢谢