您的位置:首页 > 移动开发 > Swift

控制流

2015-08-21 16:43 246 查看

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》

如有问题欢迎指正,谢谢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息