Swift 区间运算符(Range)
在本文中,您将了解Swift的Range,类型和用例。
Range(区间)是值的间隔。一个简单的范围示例是0、1、2、3、4、5、6、7、8、9,因为数字从0到9是连续的。
我们可以使用下面描述的两个范围运算符快速创建区间:
1.闭区间运算符(lowerBound ... upperBound)
它包括间隔(lowerbound到upperBound)中的所有值。使用…(3个点)运算符声明。
例如: 1...3 定义包含值为1,2,3的范围
2.半开区间运算符(lowerBound .. <upperBound)
它包括区间(lowerbound到upperBound)中的所有值,但不包括最后一个(upperBound)数。使用 ..< 运算符声明它。
例如: 1..<3 定义包含值1和2的范围
区间类型
1.封闭区间(lowerBound ... upperBound)
使用封闭区间运算符创建的范围称为封闭区间。它包括从下限到上限的所有值。
示例1:使用for-in循环打印闭合区间值
//1... 3定义包含值1、2和3的范围 for value in 1...3 { print(value) }
运行该程序时,输出为:
1 2 3
上面的示例创建了一个包含1到3(1...3)的数字的范围。我们使用了一个for-in循环来查看范围包含哪些值。要了解有关for-in循环的更多信息,请访问Swift for-in循环。
使用for-in循环,我们可以看到封闭区间包含给定范围内的所有值,包括下限(1)和上限(3)。
2.半开区间(lowerBound .. <upperBound)
使用半开区间运算符创建的区间称为半开区间。它包括从下限到上限的所有值,但不包括上限值。
示例2:使用for-in循环打印半开区间值
// 1..<3 定义一个包含值的范围 1,2 for value in 1..<3 { print(value) }
运行该程序时,输出为:
1 2
在上面的示例中,我们使用了for-in循环来查看半开区间的工作原理。
不用打印所有值,我们可以清楚地看到使用半开区间运算符仅打印1和2,并且不包括上限值(即3)。
3.单侧区间
单侧区间是指在一个方向上尽可能连续的区间。可以使用半开范围区间运算符和闭合区间运算符来创建它,但运算符只能在一侧具有值。
示例3:单侧区间小于2
let range = ..<2 print(range.contains(-1)) print(range.contains(2))
运行该程序时,输出为:
true false
上面的示例使用半开区间运算符创建一个单侧区间,该区间包含小于2的任何数字。
为了验证我们的结果,我们使用了 contains 方法。如果元素位于区间内,则 contains 方地返回true,否则返回false。
range.contains(-1) 检查 -1 是否在区间内。由于其单侧区间的上限为2 且-1 <2,因此它位于区间内,并且语句print(range.contains(-1)) 在屏幕中输出true。
但是,由于使用半开区间运算符,上限值(2)不包含在区间内。因此,range.contains(2) 返回 false。
示例4:从2开始的单侧区间
let range = 2... print(range.contains(100)) print(range.contains(1))
运行该程序时,输出为:
true false
上面的示例使用封闭区间运算符创建一个单侧区间,该范围包含从2到大于2的任何值的数字。
range.contains(100) 检查100是否在区间内。由于是单侧区间,并且100大于2,因此它位于范围内,并在屏幕上打印输出 true。
但是,它具有下限值(2),因此 range.contains(1) 返回false。
注意事项
区间的起点必须小于或等于其终点。在我们的示例中 (lowerBound...upperBound) ,下限值必须小于上限值。但是,它可以是负值。
例如:3...1 // 错误:无法使用upperBound <lowerBound形成Range -3...1 // 这是一个有效区间。Lowerbound/Upperbound 可以包含负值。
我们可以使用for-in循环遍历整个区间(不包括单侧区间)。
我们还可以使用区间运算符访问数组的元素。