编辑这个页面须要登录或更高权限!

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循环遍历整个区间(不包括单侧区间)。

  • 我们还可以使用区间运算符访问数组的元素。