Swift: If and Switch (если и свич)

If (Если) и Switch (Переключатель)

If — оператор проверки условия, если истинно — выполняется код, если нет — выполняется код из блока else, если он есть. Так же можно составлять подряд несколько условий (else if), но в этом случае разумней использовать оператор switch

Switch, в русском языке не переводят, никто не говорит переключатель, switch — он и в африке свич. Но суть оператора — в переключении пути выполнения кода в зависимости от содержимого переменной в блоке условия

Этот оператор стал намного более гибким, я приведу кусок кода в котором постараюсь описать интересные моменты

Главное отличие от C и Objective-C — необязательно после операторов внутри case ставить break, т.к. после выполнения кода в определенном case, — мы прекращаем выполнение, а не переходим к следующему case

1) Если несколько значений должны привести к выполнению одного и того же куска кода — перечисляем их через запятую.
2) Позволяется использовать интервалы
3) Позволяет игнорировать часть данных с помощью символа подчеркивания
4) Позволяет присваивать в переменную текущее значение и использовать ее в коде (и т.к. никаких доп условий нет, получается что x — любая)
5) Позволяет делать сложные сравнения для данных с помощью оператора where
6) Чтобы вернуть поведение как в C и после выполнение кода в конкретном case — продолжить проверять следующие случаи добавили команду fallthrough
7) switch обязан покрывать все возможные значения, если убрать default из этого кода — получим ошибку
8) в любой момент можно выйти из switch с помощью команды break

Ну и возвращаясь к полному покрытию.

Этот код выдаст ошибку, но только в Swift 1.2.
Если раскомментировать case en.b — ошибка исчезнет, т.к. теперь все возможные значения будут обработаны (без использования default).
Если switch нужен для обработки только части значений, а остальные не важны, нужно использовать default

В Swift 2.0 убрали требование обработки всех случаев.
Так же в Swift 2.0 расширили Enumeration Case Pattern и на if, позволяющий обрабатывать на лету частные случаи enum if case
Swift 2.0: Enumeration Case Pattern (Паттерн выбора перечисления)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *