Сопоставление диапазонов и кортежей
Используйте switch для числовых диапазонов и структур кортежей.
«Сопоставление диапазонов и кортежей» — бесплатный урок Swift Academy на CoddyKit. Это урок 2 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.
Сопоставление с диапазоном
Ветвь может сопоставляться с целым диапазоном значений с помощью операторов диапазона, например 1...5. Если значение попадает в диапазон, выполняется эта ветвь.
let score = 85
switch score {
case 0..<50:
print("Fail")
case 50...100:
print("Pass")
default:
print("Invalid")
}Замкнутый и полуоткрытый диапазоны
Используйте замкнутые диапазоны (...), чтобы включить верхнюю границу, и полуоткрытые диапазоны (..<), чтобы исключить её. Выбирайте границы так, чтобы диапазоны не пересекались.
let age = 18
switch age {
case 0..<13:
print("Child")
case 13..<20:
print("Teen")
default:
print("Adult")
}Порядок ветвей с диапазонами
Swift проверяет ветви сверху вниз и выполняет первую совпавшую, поэтому непересекающиеся диапазоны делают поведение предсказуемым.
let temp = 30
switch temp {
case ..<0:
print("Freezing")
case 0..<20:
print("Cool")
case 20...:
print("Warm")
default:
print("?")
}Выбор по кортежам
Можно выполнить выбор по кортежу, чтобы сопоставить несколько значений одновременно. В каждой позиции может находиться литерал, диапазон или подстановочный шаблон _.
let point = (1, 1)
switch point {
case (0, 0):
print("Origin")
case (_, 0):
print("On x-axis")
case (0, _):
print("On y-axis")
default:
print("Elsewhere")
}Подстановочные шаблоны в кортежах
Подчёркивание _ соответствует любому значению в этой позиции и позволяет сосредоточиться на важных для Вас частях.
let result = (200, "OK")
switch result {
case (200, _):
print("Success")
case (_, "Error"):
print("Has error")
default:
print("Other")
}Диапазоны внутри кортежей
Шаблоны кортежей могут использовать диапазоны в каждой позиции, что позволяет выполнять мощное двумерное сопоставление.
let coord = (3, 8)
switch coord {
case (0...5, 0...5):
print("Bottom-left quadrant")
case (0...5, 6...10):
print("Top-left quadrant")
default:
print("Far")
}Сопоставление точных кортежей
Можно сопоставить полностью заданный кортеж, чтобы обнаружить точное сочетание значений.
let move = ("up", 2)
switch move {
case ("up", 2):
print("Jump twice up")
case ("down", _):
print("Going down")
default:
print("Other move")
}Классификация чисел
Сопоставление с диапазонами позволяет понятно и напрямую распределять число по категориям.
let n = -4
switch n {
case ..<0:
print("negative")
case 0:
print("zero")
case 1...:
print("positive")
default:
print("?")
}Диапазоны символов
Поскольку символы можно сравнивать, можно сопоставлять даже диапазоны символов.
let ch: Character = "k"
switch ch {
case "a"..."m":
print("First half")
case "n"..."z":
print("Second half")
default:
print("Not a lowercase letter")
}Объединение позиций кортежа
Сопоставление кортежа проверяет все позиции вместе: для выполнения ветви каждая позиция должна совпасть.
let weather = (sunny: true, temp: 25)
switch (weather.sunny, weather.temp) {
case (true, 20...):
print("Nice and warm")
case (true, _):
print("Sunny but cool")
default:
print("Not sunny")
}Почему это удобно
Шаблоны диапазонов и кортежей позволяют одному оператору выбора выразить логику, для которой потребовалось бы множество вложенных инструкций if, сохраняя плоскую и понятную структуру.
let (x, y) = (0, 5)
switch (x, y) {
case (0, 0): print("origin")
case (0, _): print("y-axis")
case (_, 0): print("x-axis")
default: print("plane")
}Быстрая проверка
Проверьте сопоставление диапазонов и кортежей.
Повторение: сопоставление диапазонов и кортежей
Ветви могут сопоставляться с диапазонами, например 1...5 и 0..<n, а шаблоны кортежей позволяют одновременно сопоставлять несколько значений с помощью литералов, диапазонов и подстановочного шаблона _.
let p = (0, 4)
switch p {
case (0, _): print("y-axis")
default: print("other")
}Часто задаваемые вопросы
Урок «Сопоставление диапазонов и кортежей» бесплатный?
Да — полный текст урока «Сопоставление диапазонов и кортежей» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.
Чему я научусь в уроке «Сопоставление диапазонов и кортежей»?
Используйте switch для числовых диапазонов и структур кортежей. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.
Нужен ли мне опыт, чтобы начать Swift Academy?
Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 2 из 4.
Сколько времени занимает урок «Сопоставление диапазонов и кортежей»?
Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.
Можно ли писать и запускать код в этом уроке Swift Academy?
Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.
Все уроки этого курса
- Исчерпывающий switch по значениям
- Сопоставление диапазонов и кортежей
- Привязка значений и предложения where
- Составные варианты и fallthrough