В тази статия ще се научите да използвате оператори за управление на превключватели, за да контролирате потока на изпълнението на вашата програма.
Извлечението за превключване също е разнообразие от изявление за управление на Swift egif-else, охрана и т.н., което извършва различни действия въз основа на различни условия.
Красотата на оператора за превключване е, че той може да сравнява стойност с няколко възможни съвпадащи модела. Следователно, той може да се използва като заместител на дългите if… else… if
стълби, като същевременно съвпада със сложен модел.
Синтаксис на оператор за превключване
Синтаксисът на оператора за превключване е:
превключва променлива / израз (стойност на случай1: // изявления стойност на случай2: // изявления по подразбиране: // изявления)
Как работи изявлението за превключване в Swift?
- Изразът за превключване се оценява веднъж.
- Той взема израза и се сравнява със стойността на всеки случай в поръчката (отгоре -> отдолу).
- Ако има съвпадение, изявлението вътре в кутията се изпълнява и целият оператор за превключване завършва изпълнението си веднага след като първият съвпадащ случай на превключване е завършен.
- Ако няма съвпадение за случая, то пада към следващия случай.
- Ключовата дума по подразбиране указва кода, който да се изпълнява, ако няма съвпадение на регистъра.
Забележка : Тялото на всеки случай трябва да съдържа поне един изпълним оператор.
Пример 1: Проста програма, използваща Switch Statement
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") )
Когато стартирате горната програма, изходът ще бъде:
Сряда
В горната програма операторът за превключване започва чрез съвпадение на стойността dayOfWeek с случай 1 . Тъй като стойността на dayOfWeek не съвпада с първата стойност на случая 1, тя пада към следващия случай, докато единият не съвпадне.
Тъй като случай 4 съвпада с израза на превключвателя, изразът print("Wednesday")
вътре в случая се изпълнява и случаят на превключване завършва. Ако нито един случай не е съчетан, операторът по подразбиране се изпълнява.
Пример 2: Декларация за превключване с пробив
Ако използвате fallthrough
ключовата дума вътре в изявлението за случай, контролата преминава към следващия случай, дори ако стойността на случая не съвпада с израза на превключвателя.
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") )
Когато стартирате горната програма, изходът ще бъде:
сряда четвъртък
В горната програма случай 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)
Този случай обвързва всички стойности на кортежите с временните константи или променливи.