Последовательности
Последовательность (range) представляет набор значений, который определяется начальной и конечной точкой. Есть два способа определения последовательности с помощью специальных операторов:
...: этот оператор принимает начальное и конечное значения последовательности и создает набор значений, который включает оба значения
1
let range = 1...5 // 1 2 3 4 5
Таким образом, с помощью выражения 1...5 будет создаваться последовательность 1 2 3 4 5. При создании последовательности используется в качестве шага число 1, которое добавляется к предыдущему значению.
Также последовательность может идти в обратную сторону, если начальное значение меньше конечного, то есть применяется шаг -1:
1
let range = -5 ... -1 // -5 -4 -3 -2 -1
..<: этот оператор также принимает начальное и конечное значения последовательности и создает набор значений, который не включает конечное значение.
Последовательности имееют ряд методов, рассмотрим некоторые из них.
Метод reversed() возвращает перевернутую наоборот последовательность:
1
2
3
4
5
6
7
8
9
10
let range = 5 ... 8 // 5 6 7 8
let inv = range.reversed()
for val in inv {
print(val)
}
// 8
// 7
// 6
// 5
Метод contains() позволяет проверить наличие элемента в последовательности. Если элемент присутствует, то метод возвращает true:
1
2
3
4
let range = 5 ... 8 // 5 6 7 8
print(range.contains(6)) // true
print(range.contains(9)) // false
Метод start(with:) позволяет проверить, начинается ли последовательность с подпоследовательности, которая передается через параметр with:
1
2
3
4
let range = 5 ... 8 // 5 6 7 8
let st1 = range.starts(with: 1...5) // false
let st2 = range.starts(with: 5...7) // true
Метод overlaps возвращает true, если две последовательности хотя бы частично совпадают:
1
2
3
4
let range = 5 ... 8 // 5 6 7 8
range.overlaps(3...9) // true
range.overlaps(9...19) // false