Swift(六、控制流)
1、Swift入门学习笔记(第一版),对Swift的基础知识点进行梳理总结。知识点一直在变,只是作为参考,以苹果官方文档为准~ 2、在学习完基本的知识点以后会结合官方文档及相关资料,在此版本的基础上进行添加更改。 六、控制流本文只对Swift区别于C和OC的部分进行记述 1、For-In此语句在OC中已有,此处结合Swift中的一些语法特点进行说明 let base = 2
let power = 8
var answer = 1
for _ in 1...power { //不需要知道区间序列每一项的值,使用下划线_替代变量名来忽略对值的访问
answer *= base
} //2的8次幂
print("(base) to the power of (power) is (answer)")
Output: 2 to the power of 8 is 256
for-in遍历字典,字典的每项元素会以(key,value)元组的形式返回 let ageOfMember = ["Son":21,"Mother":45,"Father":47]
for (memberName,memberAge) in ageOfMember {
print("(memberName) is (memberAge) years old")
}
Output: Son is 21 years old
Father is 47 years old
Mother is 45 years old
2、while语句2.1、while循环while condition {
statements
}
2.2、repeat-while//类似于C中的do-while循环语句
repeat {
statements
} while condition
3、switch语句3.1、不存在隐式的贯穿此为区别于C和OC的点,当匹配的case分支代码执行完毕时,程旭辉终止switch语句,不会继续执行下一个case分支,不需要显式地加break。但是case语句中break提前跳出仍适用(case分支多个语句时) 3.2、每一个case分支都必须包含至少一个语句!3.3、一个case可以包含多种匹配情况3.4、区间匹配let month = 2
switch month {
case 1...2,12:print("Winter")
case 3...5:print("Spring")
case 6...8:print("Summer")
case 9...11:print("Autumn")
default:print("Month is out of range")
}
Output: Winter 3.5、元组1、例如坐标 2、区别于C语言,swift语言允许多个case匹配同一个值,但是只会执行第一个被分配到的case分支 3.6、值绑定(Value Bindings)case分支允许将匹配的值绑定到一个临时的常量/变量,此常量/变量在该case分支中即可被引用 let anotherPoint = (2,0)
switch anotherPoint {
case (let x,0):
print("on the x-axis with an x value of (x)")
case (0,let y):
print("on the y-axis with a y value of (y)")
case let (x,y):
print("somewhere else at ((x),(y))")
}
Output: on the x-axis with an x value of 2
3.7、where语句case分支中使用where语句来判断额外的条件 let testPoint = (1,1)
switch testPoint {
case let(x,y) where x == y:
print("((x),(y)) is on the line x == y")
case let(x,y):
print("((x),(y)) is not on the line x == y")
}
Output: (1,1) is on the line x == y
4、控制转移语句4.1、Continue在一个形如for的循环体中,调用Continue语句,立刻停止本次循环迭代,重新开始下次循环迭代(不会离开整个循环体) 4.2、Break立刻结束整个控制流的执行 a、提早结束一个 4.3、贯穿FallThrough使得Swift中的switch拥有C语言的贯穿风格,从上一个case分支落入下一个case分支 注意:fallthrough不会检查它落入执行的case中的匹配条件,其只是简单地使代码执行继续连接到下一个case中的执行代码。即无论匹不匹配强调内容都会去执行语句 4.4、带标签的语句这里我的理解是类似于C语言中的goto,但是label**局限于循环体中** 下列以for与switch结合输出1-10的素数,并非十分严谨,在此处纯粹试验此功能 testLoop:for var i = 0;i < 10;i++ {
switch i {
case 9:
break testLoop
case 2,3,5,7:
print("(i) is prime number")
continue testLoop
default:
continue testLoop
}
}
print("Over")
Output: 2 is prime number
3 is prime number
5 is prime number
7 is prime number
Over
5、提前退出guardguard总有一个else语句,当guard语句条件不为真执行else中的代码 let i = -1
while true {
guard i > 0 else{
print("fault")
break
}
}
注意:条件不满足执行else,这个分支必须转移控制以退出guard语句出现的代码段。可为 6、检测API可用性简言之就是先检测平台,然后在不同的平台上执行不同的API if #available(iOS 9,OSX 10.10,*) {
print("iOS 9")
// 在 iOS 使用 iOS 9 的 API,在 OS X 使用 OS X v10.10 的 API
} else {
// 使用先前版本的 iOS 和 OS X 的 API
}
a、可以修改iOS版本测试此方法 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |