В этой статье вы научитесь использовать операторы управления переключением для управления потоком выполнения вашей программы.
Оператор switch также является разновидностью оператора управления Swift egif-else, guard и т. Д., Который выполняет разные действия в зависимости от разных условий.
Прелесть оператора switch в том, что он может сравнивать значение с несколькими возможными шаблонами соответствия. Поэтому его можно использовать как замену длинным if… else… if
лесенкам при сопоставлении сложного рисунка.
Синтаксис оператора switch
Синтаксис оператора switch:
переменная / выражение переключателя (case value1: // операторы case value2: // операторы default: // операторы)
Как работает инструкция Switch в Swift?
- Выражение переключения вычисляется один раз.
- Он берет выражение и сравнивает его с каждым значением case в порядке (Top -> Bottom).
- Если есть совпадение, выполняется оператор внутри case, и весь оператор switch завершает свое выполнение, как только завершается первый совпадающий case switch.
- Если для случая нет совпадения, он переходит к следующему случаю.
- Ключевое слово по умолчанию указывает код для запуска, если нет совпадения по регистру.
Примечание : тело каждого дела должно содержать хотя бы один исполняемый оператор.
Пример 1: Простая программа с использованием оператора Switch
let dayOfWeek = 4 switch dayOfWeek ( case 1: print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") )
Когда вы запустите вышеуказанную программу, результат будет:
Среда
В приведенной выше программе оператор switch начинается с сопоставления значения dayOfWeek с case 1 . Поскольку значение dayOfWeek не соответствует первому значению case 1, оно переходит к следующему случаю, пока не будет совпадать одно значение.
Поскольку case 4 соответствует выражению switch, оператор print("Wednesday")
внутри case выполняется, а case case завершается. Если ни один регистр не найден, выполняется инструкция по умолчанию .
Пример 2: инструкция Switch с откатом
Если вы используете fallthrough
ключевое слово внутри оператора case, элемент управления переходит к следующему случаю, даже если значение case не совпадает с выражением switch.
let dayOfWeek = 4 switch dayOfWeek ( case 1 : print("Sunday") case 2: print("Monday") case 3: print("Tuesday") case 4: print("Wednesday") fallthrough case 5: print("Thursday") case 6: print("Friday") case 7: print("Saturday") default: print("Invalid day") )
Когда вы запустите вышеуказанную программу, результат будет:
среда Четверг
В приведенной выше программе case 4 выполняет оператор, print("Wednesday")
а fallthrough
ключевое слово переходит к case5 . Оператор print("Thursday")
внутри case 5 выполняется, даже если case не соответствует выражению switch. Таким образом, вы можете увидеть вывод четверга в консоли.
Пример 3: инструкция Switch с более сложными шаблонами
let programmingLanguage = (name: "Go", version: 10) switch programmingLanguage ( case (let name,let version) where (version < 0 && name.count < 0) : print("Invalid input") case ("Swift",let version) where version == 4: print("Found latest version of Swift") case ("Swift" ,… <4 ): print("Found older version of swift)") case ("Swift" ,4… ) : print("Swift version greater than 4 is not released yet") case ("Taylor Swift",30) : print("OMG. This is Taylor swift") case (let name, let version): print(""" Programming Language:(name) Version: (version) Status: Not found """) )
Когда вы запустите вышеуказанную программу, результат будет:
Язык программирования: Go Версия: 10 Статус: Не найдено
В приведенной выше программе мы сопоставляем язык программирования выражения типа кортеж с разными случаями, как показано ниже:
case (let name,let version) where (version < 0 && name.count < 0)
В этом случае значение выражения переключения привязывается к временным константам или переменным для использования в теле случая сlet
ключевым словом. Это называется привязкой значения.
Вы также можете применить условие к этим значениям с помощьюwhere
предложения. Для нескольких условий where вы можете объединить их с помощью&&
оператора, как в приведенном выше примере.
Если case не удовлетворяет условию, определенному в предложении where, инструкции внутри этого блока case не выполняются и не выполняются для сравнения следующего case case.case ("Swift" ,… <4 )
В этом случае первый элемент кортежа сопоставляется со строковым литералом,"Swift"
а также проверяется, находится ли второй элемент внутри одностороннего диапазона… <4
.case ("Swift" ,4… )
В этом случае первый элемент кортежа сопоставляется со строковым литералом,"Swift"
а также проверяется, находится ли второй элемент внутри одностороннего диапазона4…
.case (let name, let version)
В этом случае каждое значение кортежей привязывается к временным константам или переменным.