English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift базовый курс

Операторы Swift

Swift управление потоком

Swift коллекции

Swift функции

Swift 高级

Операторы диапазона (Range) в Swift

В этой статье вы узнаете о Range, типах и примерах использования в Swift.

Range (диапазон) — это интервал значений. Пример простого диапазона — 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, так как числа от 0 до 9 являются последовательными.

Мы можем быстро создать интервал с помощью двух описанных ниже операторов диапазона:

1. Замкнутый интервал оператор (lowerBound ... upperBound)

Он включает все значения интервала (от lowerbound до upperBound). Его можно声明 с помощью оператора … (три точки).

Например: 1...3 определяет диапазон значений, включающий 1, 2, 3

2. Полуоткрытый интервал оператор (lowerBound .. <upperBound)

Он включает все значения интервала (от lowerbound до upperBound), но не включает последний (upperBound) элемент. Его можно声明 с помощью оператора ..<.

Например: 1..<3 определяет диапазон значений, включающий 1 и 2

Тип интервала

1. Замкнутый интервал (lowerBound ... upperBound)

Диапазон (range) — это интервал значений. Пример простого диапазона — 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, так как числа от 0 до 9 являются последовательными.

Пример 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 посетитеЦикл for-in в Swift.

Используя цикл 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, чтобы посмотреть, как работает полузакрытый интервал.

Не нужно печатаить все значения, чтобыclearly видеть, что использование оператора полузакрытого интервала печатает только 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.

Но у него есть значение lowerBound (2), поэтому range.contains(1) возвращает false.

Внимание

  • Начало интервала должно быть меньше или равно концу интервала. В нашем примере (lowerBound...upperBound), значение lowerBound должно быть меньше значения upperBound. Но это могут быть отрицательные значения.
    Например:

    3...1  // Ошибка: не может быть использован upperBound < lowerBound для создания Range
    -3...1 // Это является действительным диапазоном. Lowerbound/Upperbound могут содержать отрицательные значения.
  • Мы можем использовать цикл for-in для遍ения всего диапазона (не включая односторонний диапазон).

  • Мы также можем использовать операторы диапазона для доступаМассивовЭлементы.