0Pricing
Swift Academy · Урок

Сопоставление диапазонов и кортежей

Используйте 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 — локальная установка не требуется.

Все уроки этого курса

  1. Исчерпывающий switch по значениям
  2. Сопоставление диапазонов и кортежей
  3. Привязка значений и предложения where
  4. Составные варианты и fallthrough
← Назад к Swift Academy