本章开始学习条件控制语句,包括if、while、for、Switch、guard语句。
主要内容:
if分支语句
while循环语句
for循环
Switch语句
guard语句
代码示例:
let age = 4
if age >= 5 {
print("大于22")
} else if age < 5 {
print("小于5")
}
说明:
注意:
代码示例:
//while循环
var num = 5
while num > 0 {
print("num is \(num)")
num -= 1
}
//repeat...while循环
var num2 = -1
repeat {
print("num is \(num)")
} while num > 0
说明:
注意:
Swift给我们显式的提供了for循环的区间,并且增加很多范围区间的种类,对于for循环有跟多的可操作性
3.1 显式区间
可以显式的设置区间的范围
闭区间:
/*
1、简单循环获取i值(变量)
*/
for var i in 1...3 {
i += 5
print(i)
}
/*
2、循环获取数组值
*/
let name = ["A","B","C"]
for i in 0...3 {
print(name[i])
}
/*
3、可以将区间设置为变量来使用
*/
let range = 1...3
for i in range {
print(name[i])
}
/*
4、也可以用变量分开设置区间的左右范围
*/
let a = 1
var b = 2
for i in a...b {
print(name[i])
}
/*
5、不获取变量值
*/
for _ in 1...3 {
print("WY")
}
(滑动显示更多)
说明:
半开区间:
/*
半开区间
*/
for i in 1..<5 {
print(i)
}
说明:
3.2 增强for
区间运算符直接作用在数组上。
实例代码:
/*
1、直接获取数组中的数据
*/
let names = ["A","B","C"]
for name in names[0...3] {
print(name)
}
单侧区间:
让区间朝一个方向尽可能远
/*
2、单侧区间
*/
for name in names[1...] {
print(name)
}
说明:
3.3 设置区间类型
Swift内置了区间类型供我们方便使用
var range1: ClosedRange<Int> = 1...3
var range2: Range<Int> = 1..<3
var range3: PartialRangeThrough<Int> = ...5
range1 = 2...4
for i in range1 {
print(i)
}
(滑动显示更多)
说明:
注意:
let stringRange = "a"..."f"
stringRange.contains("d")//true
stringRange.contains("h")//false
(滑动显示更多)
3.4 where过滤变量值
代码示例:
/*
where过滤
*/
var numbers = [10,20,-11,-22]
var sum = 0
for num in numbers where num > 0 {
sum += num
}
print(sum)
说明:
3.5 设置区间间隔
代码示例:
let hours = 10
let hourInterval = 2
//tickMark的取值:从4开始,累加2,到达10结束,包含10
for tickMark in stride(from: 4, through: hours, by: hourInterval){
print(tickMark)
}//4,6,8,10
//tickMark的取值:从4开始,累加2,到达10结束,不包含10
for tickMark in stride(from: 4, to: hours, by: hourInterval){
print(tickMark)
}//4,6,8
(滑动显示更多)
说明:
4.1 基础用法
代码示例:
/*
1、基础写法
*/
var number = 1
switch number {
case 1:
print("number is 1")
break
case 2:
print("number is 1")
break
default:
print("number is other")
break
}
/*
2、fallthrouth
*/
switch number {
case 1:
print("number is 1")
fallthrough
case 2:
print("number is 1")
default:
print("number is other")
}
/*
3、支持Character、String类型
*/
var str = "WY"
switch str {
case "A":
print("A")
case "B":
print("B")
case "WY":
print("WY")
default:
break
}
说明:
注意:
4.2 匹配类型
4.2.1 组合条件匹配
代码示例:
/*
组合匹配
*/
var str = "WY"
switch str {
case "A":
print("A")
case "B","WY":
print("B or WY")
default:
break
}//B or WY
说明:
4.2.2 区间匹配
代码示例:
/*
2、区间匹配
*/
let count = 60
switch count {
case 0:
print("none")
case 1..<60:
print("a few")
case 10...100:
print("dozens of")
default:
print("other")
}//dozens of
说明:
4.2.3 元组匹配
代码示例:
/*
3、元组匹配
*/
let point = (1,1)
switch point {
case (0,0):
print("the origin")
case (_,0):
print("on the x-axis")
case (0,_):
print("on the y-axis")
case (-2...2,-2...2):
print("inside the 2*2 box")
default:
print("outside of the box")
}//inside the 2*2 box
说明:
4.2.4 模式匹配
也可以使用模式匹配方式进行更大范围的匹配
代码示例:
说明:
4.2.5 值绑定
可以在匹配的过程中获取其中的某个值
代码示例:
/*
5、值绑定
*/
let point2 = (2,0)
switch point {
case (let x,0):
print("on the x-axis with an x value of \(x)")
case (0,var y):
y += 2
print("on the x-axis with an x value of \(y)")
default:
break
}// on the x-axis with an x value of 2
(滑动显示更多)
说明:
4.3 where过滤
代码示例:
let point3 = (1,-1)
switch point3 {
case let (x,y) where x == y:
print("on the line x == y")
case let (x,y) where x == -y:
print("on the line x == -y")
case let (x,y):
print("other")
}//on the line x == -y
说明:
主要用于提前退出,条件不符合的时候退出,判断值是否成立用它就很方便了
代码示例:
func test(v: Bool) {
guard v else {
print("当条件为false时进入")
return
}
print("当条件为true时进入")
}
test(v: true)
test(v: false)
说明:
原文链接:https://www.jianshu.com/p/7a97e36bef4e
- END -
本文分享自 HelloCoder全栈小集 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!