У цій статті ви навчитеся використовувати оператори керування перемикачами для управління потоком виконання вашої програми.
Інструкція switch також є різновидом оператора управління Swift egif-else, guard тощо, який виконує різні дії на основі різних умов.
Краса оператора switch полягає в тому, що він може порівняти значення з кількома можливими шаблонами відповідності. Тому його можна використовувати як заміну довгим if… else… if
драбинам, одночасно збігаючи складний малюнок.
Синтаксис оператора switch
Синтаксис оператора switch:
перемикач змінної / виразу (значення справи1: // оператори значення справи2: // оператори за замовчуванням: // оператори)
Як працює Statement Statement в Swift?
- Вираз перемикача оцінюється один раз.
- Він бере вираз і порівнює значення кожного випадку в порядку (Верх -> Знизу).
- Якщо є збіг, оператор усередині справи виконується, і весь оператор switch закінчує своє виконання, як тільки завершується перший відповідний випадок перемикача.
- Якщо для справи немає відповідності, вона переходить до наступної справи.
- Ключове слово за замовчуванням визначає код для запуску, якщо немає відповідності регістру.
Примітка : Тіло кожного випадку має містити принаймні один виконуваний оператор.
Приклад 1: Проста програма, яка використовує Statement 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 із випадком 1 . Оскільки значення dayOfWeek не відповідає першому значенню випадку 1, воно падає до наступного випадку, поки не збігається.
Оскільки випадок 4 відповідає виразу switch, оператор print("Wednesday")
всередині case виконується, а case case закінчується. Якщо не знайдено жодного випадку, виконується оператор усередині за замовчуванням .
Приклад 2: Заява про перемикання з переходом
Якщо ви використовуєте 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")
в разі 5 виконує навіть якщо справа не збігається з виразом перемикача. Тому ви можете побачити вихідні дані четверга в консолі.
Приклад 3: Заява про перемикання з більш складними шаблонами
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 не виконуються і провалюються для порівняння наступного випадку перемикання.case ("Swift" ,… <4 )
Цей випадок узгоджує перший елемент кортежу з рядковим літералом,"Swift"
а також перевіряє, чи знаходиться другий елемент всередині одностороннього діапазону… <4
.case ("Swift" ,4… )
Цей випадок узгоджує перший елемент кортежу з рядковим літералом,"Swift"
а також перевіряє, чи знаходиться другий елемент всередині одностороннього діапазону4…
.case (let name, let version)
Цей випадок прив'язує всі значення кортежів до тимчасових констант або змінних.