闭区间运算符
- 闭区间运算符(a...b)定义了从 a 到 b 的一组范围,并且包含a 和 b。a 的值不能大于 b
for index in 1...5 {
print("\(index) time 5 is \(index * 5)")
}
打印结果如下:
1 time 5 is 5
2 time 5 is 10
3 time 5 is 15
4 time 5 is 20
5 time 5 is 25
半开区间运算符
- 半开区间运算符(a..<b)定义了从a 到 b 但不包括 b 的区间
- 如同闭区间运算符,a 的值也不能大于b ,如果 a 与 b 的值相等,那返回的区间将会是空的
let names = ["zhangsan","lisi","wangwu","zhaoliu"]
let count = names.count
for i in 0..<count {
print("Person \(i + 1) is called \(names[i])")
}
打印结果如下:
Person 1 is called zhangsan
Person 2 is called lisi
Person 3 is called wangwu
Person 4 is called zhaoliu
单侧区间
- 闭区间有另外一种形式来让区间朝一个方向尽可能地远,这种区间叫单侧区间。
- 半开区间运算符同样可以有单侧形式,只需要写它最终的值。
- 比如说,一个包含数组所有元素的区间,从索引 2 到数组的结束。在这种情况下,你可以省略区间运算符一侧的值
let names = ["zhangsan","lisi","wangwu","zhaoliu"]
let count = names.count
for name in names[2...] {
print(name)
}
print("=======")
for name in names[...2] {
print(name)
}
print("=======")
for name in names[..<2] {
print(name)
}
打印结果如下:
wangwu
zhaoliu
=======
zhangsan
lisi
wangwu
=======
zhangsan
lisi
- 单侧区间可以在其他上下文中使用,不仅仅是下标。
-
不能便利省略了第一个值的单侧区间,因为遍历根本不知道从哪里开始。你可以遍历省略了最终值的单侧区间
单侧区间.png
字符串索引区间
- 字符串范围也可以使用区间运算符
var welcome = "hello world"
let range = welcome.index(welcome.endIndex, offsetBy: -6) ..< welcome.endIndex
welcome.removeSubrange(range)
print(welcome)
打印结果如下:
hello
Comparable 区间
- 区间运算符可以作用在 Comparable 类型上,返回闭区间和半闭区间
var welcome = "hello,world!"
let interval = "a" ... "z"
for c in welcome {
if !interval.contains(String(c)) {
print("\(c)不是小写字母")
}
}
打印结果如下:
,不是小写字母
!不是小写字母
倒序
for i in (0...10).reversed() {
print(i)
}
打印结果如下:
10
9
8
7
6
5
4
3
2
1
0
网友评论