多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Swift 范围 > 原文: [https://www.programiz.com/swift-programming/ranges](https://www.programiz.com/swift-programming/ranges) #### 在本文中,您将了解 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 ..< upperBound`) 它包括区间(`lowerbound`到`upperBound`)中的所有值,但不包括最后一个(`upperBound`)数。 使用`..<`运算符声明。 **例如**: `1..<3`定义包含值 1 和 2 的范围 * * * ## 范围类型 ### 1.闭合范围(`lowerBound ... upperBound`) 使用封闭范围运算符创建的范围称为封闭范围。 它包括从下限到上限的所有值。 #### 示例 1:使用`for-in`循环打印闭合范围值 ```swift // 1...3 Defines a range containing values 1, 2 and 3 for value in 1...3 { print(value) } ``` 运行该程序时,输出为: ```swift 1 2 3 ``` 上面的示例创建一个包含 1 到 3(`1...3`)的数字的范围。 我们使用了一个`for-in`循环来查看范围包含的值。 要了解有关`for-in`循环的更多信息,请访问 [Swift `for-in`循环](/swift-programming/for-in-loop)。 使用`for-in`循环,我们可以看到封闭范围包含给定范围内的所有值,包括下限(1)和上限(3)。 * * * ### 2.半开范围(`lowerBound ..< upperBound`) 使用半开范围运算符创建的范围称为半开范围。 它包括从下限到上限的所有值,但**不包括**上限值。 #### 示例 2:使用`for-in`循环打印半开范围值 ```swift // 1..<3 Defines a range containing values 1,2 for value in 1..<3 { print(value) } ``` 运行该程序时,输出为: ```swift 1 2 ``` 在上面的示例中,我们使用了`for-in`循环来查看半开范围的工作原理。 不用打印所有值,我们可以清楚地看到使用半开运算符仅打印 1 和 2,并且不包括上限值(即 3)。 * * * ### 3.单侧范围 单边范围是指在一个方向上尽可能连续的范围。 可以使用半开范围运算符和闭合范围运算符来创建它,但是该运算符只能在一侧具有一个值。 #### 示例 3:小于 2 的单侧范围 ```swift let range = ..<2 print(range.contains(-1)) print(range.contains(2)) ``` 运行程序时,输出为:<samp></samp> ```swift 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 开始的单侧范围 ```swift let range = 2... print(range.contains(100)) print(range.contains(1)) ``` 运行该程序时,输出为: ```swift true false ``` 上面的示例使用封闭的运算符创建一个单边范围,该范围包含从 2 到大于 2 的任何值。 `range.contains(100)`检查 100 是否在范围内。 由于其单边范围和 100 大于 2,因此它位于范围内并在屏幕上打印`true`。 但是,它具有下限值(2),因此`range.contains(1)`返回`false`。 * * * ## 要记住的事情 * 范围的起点必须小于或等于其终点。 在我们的示例`(lowerBound...upperBound)`中,下限值必须小于上限值。 但是,它可以是负值。 **示例**: ```swift 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`循环遍历整个范围(不包括单边范围)。 * 我们还可以使用范围运算符访问[数组](/swift-programming/arrays "Swift Arrays")的元素。