Swift学习16:区间运算符

张建 lol

闭区间运算符

  • 闭区间运算符 a...b 定义了从 ab 的一组范围,并且包含 aba 的值不能大于 b
1
2
3
4
5
// 闭区间
let range = 0...5
for index in range {
print(index)
}

半开区间运算符

  • 半开区间运算符 a..<b 定义了从 ab 但不包括 b 的区间
1
2
3
4
5
// 半开半闭区间
let range = 0..<5
for index in range {
print(index)
}
  • 如同闭区间运算符,a 的值也不能大于 b ,如果 ab 的值相等,那返回的区间将会是空的

单侧区间

  • 闭区间运算符有另外一种形式来让区间朝一个方向尽可能的远,这种区间叫做单侧区间
1
2
3
4
5
// 单侧闭区间
let names = ["a","b","c","d"]
for name in names[...2] {
print(name)
}

  • 半开区间运算符同样可以有单侧形式,只需要写它最终的值
1
2
3
4
5
// 单侧半开半闭区间
let names = ["a","b","c","d"]
for name in names[..<2] {
print(name)
}

  • 比如说,一个包含数组所有元素的区间,从索引 2 到数组的结束,在这种情况下,你可以省略区间运算符一侧的值
1
2
3
for name in names[2...] {
print(name)
}
  • 单侧区间可以再其他上下文中使用,不仅仅是下标

  • 不能变量省略了第一个值的单侧区间,因为遍历根本不知道该从哪里开始,你可以遍历省略了最终值的单侧区间

字符串索引区间

  • 字符串范围可以使用区间运算符
1
2
3
4
5
// 字符串索引区间
var str = "hello,world"
let range = str.startIndex...str.index(str.endIndex, offsetBy: -6)
str.removeSubrange(range)
print(str)

倒叙索引

  • 通过 reversed() 方法,我们可以将一个正序循环变成逆序循环
1
2
3
4
// 逆序
for i in (0...4).reversed() {
print(i)
}

Comparable 区别

  • 区间运算符可以作用在 Comparable 类型上,返回闭区间和半闭区间
1
2
3
4
5
6
7
var str = "hello,world"
let range = "a"..."z"
for c:Character in str {
if !range.contains(String(c)) {
print("\(c) 不是小写字符")
}
}

  • Post title:Swift学习16:区间运算符
  • Post author:张建
  • Create time:2023-02-23 01:32:10
  • Post link:https://redefine.ohevan.com/2023/02/23/Swift课程/Swift学习16:区间运算符/
  • Copyright Notice:All articles in this blog are licensed under BY-NC-SA unless stating additionally.