Swift Academy · Урок

Исчерпывающий switch по значениям

Охватывайте все варианты или используйте ветвь по умолчанию.

Урок 1 из 413 шагов

«Исчерпывающий switch по значениям» — бесплатный урок Swift Academy на CoddyKit. Это урок 1 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения Swift Academy, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс Swift Academy содержит 4 уроков всего.

Что делает оператор выбора

switch сравнивает значение с несколькими вариантами и выполняет первый совпавший. Это понятная альтернатива длинным цепочкам if/else-if.

let day = 3
switch day {
case 1:
    print("Monday")
case 2:
    print("Tuesday")
case 3:
    print("Wednesday")
default:
    print("Other")
}

Нет неявного перехода к следующей ветви

В отличие от C, ветви Swift не переходят автоматически к следующей. После выполнения совпавшей ветви оператор выбора завершается. break не нужен.

let n = 1
switch n {
case 1:
    print("one")
case 2:
    print("two")
default:
    print("many")
}

Оператор выбора должен охватывать все варианты

Оператор выбора должен охватывать каждое возможное значение. Для Int невозможно перечислить их все, поэтому нужно предоставить ветвь default.

let code = 500
switch code {
case 200:
    print("OK")
case 404:
    print("Not Found")
default:
    print("Unhandled: \(code)")
}

Ветвь по умолчанию

Ветвь default обрабатывает всё, что не совпало с предыдущими ветвями. Она должна находиться последней.

let grade = "X"
switch grade {
case "A":
    print("Excellent")
case "B":
    print("Good")
default:
    print("Needs review")
}

Выбор по строкам

Оператор выбора работает с любым сравнимым значением, в том числе со строками.

let command = "start"
switch command {
case "start":
    print("Starting")
case "stop":
    print("Stopping")
default:
    print("Unknown command")
}

Пустые ветви запрещены

Каждая ветвь должна содержать хотя бы одну инструкцию. Если ветвь действительно не должна ничего делать, напишите break.

let n = 2
switch n {
case 1:
    print("one")
case 2:
    break
default:
    print("other")
}
print("done")

Оператор выбора как инструкция

Оператор выбора выполняет инструкции; сам по себе он не возвращает значение. Чтобы получить значение, присвойте его в каждой ветви или используйте оператор для вызова функций.

let level = 2
var label: String
switch level {
case 1: label = "low"
case 2: label = "mid"
default: label = "high"
}
print(label)

Выбор по логическому значению

Можно выполнить выбор по логическому значению с ветвями true и false. Ветвь по умолчанию не нужна, поскольку охвачены оба варианта.

let isReady = true
switch isReady {
case true:
    print("Go")
case false:
    print("Wait")
}

Для перечислений не нужна ветвь по умолчанию

Если при выборе по перечислению обработан каждый его вариант, оператор уже является исчерпывающим, и ветвь по умолчанию не требуется.

enum Direction { case north, south }
let d = Direction.north
switch d {
case .north: print("Up")
case .south: print("Down")
}

Понятная логика с несколькими вариантами

Оператор выбора упорядочивает решения с несколькими вариантами. Каждый результат находится в отдельной именованной ветви, которую легко просмотреть и расширить.

let score = 72
var result: String
switch score {
case 90...100: result = "A"
case 80..<90: result = "B"
case 70..<80: result = "C"
default: result = "F"
}
print(result)

Расположение ветви по умолчанию

default должен быть последней ветвью. Если разместить его раньше, последующие ветви окажутся недостижимыми, а Swift это запрещает.

let x = 7
switch x {
case 0:
    print("zero")
case 7:
    print("seven")
default:
    print("something else")
}

Быстрая проверка

Проверьте исчерпывающий оператор выбора.

Повторение: исчерпывающий оператор выбора по значениям

Оператор switch в Swift выбирает первую совпавшую ветвь, никогда не переходит неявно к следующей и должен охватывать все варианты. Используйте default для типов с неограниченным набором значений, таких как Int или String; перечисления, варианты которых обработаны полностью, не нуждаются в ветви по умолчанию.

let n = 3
switch n {
case 1: print("a")
default: print("b")
}
Можно начать бесплатно

Изучай Swift с ИИ-репетитором — бесплатно

Пиши и запускай код прямо в браузере, получай мгновенную помощь от ИИ-репетитора 24/7 и продолжи учиться на сайте или в приложении.

Курсы
122
Уроки
409

Часто задаваемые вопросы

Урок «Исчерпывающий switch по значениям» бесплатный?

Да — полный текст урока «Исчерпывающий switch по значениям» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс Swift Academy, подпишись на CoddyKit PRO. Курс Swift Academy содержит 4 уроков всего.

Чему я научусь в уроке «Исчерпывающий switch по значениям»?

Охватывайте все варианты или используйте ветвь по умолчанию. Ты практикуешь Swift Academy с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать Swift Academy?

Предыдущий опыт не требуется. Swift Academy на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 1 из 4.

Сколько времени занимает урок «Исчерпывающий switch по значениям»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке Swift Academy?

Да. Каждый урок Swift Academy включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

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

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