📜  Swift 范围

📅  最后修改于: 2020-10-09 16:06:43             🧑  作者: Mango

在本文中,您将了解Swift的范围,类型和用例。

 

范围是值的间隔。一个简单的范围示例是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 ..

它包括区间(lowerbound到upperBound)中的所有值,但不包括最后一个(upperBound)数。使用..< 运算符声明。

例如: 1..<3定义包含值1和2的范围


范围类型

1.封闭范围(lowerBound … upperBound)

使用封闭范围运算符创建的范围称为封闭范围。它包括从下限到上限的所有值。

示例1:使用for-in循环打印闭合范围值
// 1...3 Defines a range containing values 1, 2 and 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 ..

使用半开范围运算符创建的范围称为半开范围。它包括从下限到上限的所有值,但不包括上限值。

示例2:使用for-in循环打印半开范围值
// 1..<3 Defines a range containing values 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

但是,由于使用半开范围运算符,上限value(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  // fatal error: Can't form Range with upperBound < lowerBound
    -3...1 // This is a valid range. Lowerbound/Upperbound can contain a negative value but should valid the above statement.
  • 我们可以使用for-in循环遍历整个范围(不包括单边范围)。
  • 我们还可以使用范围运算符访问数组的元素。