# 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")的元素。