English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Dans cet article, vous apprendrez à utiliser l'instruction de contrôle switch pour contrôler le flux d'exécution du programme.
L'instruction switch est également l'une des multiples instructions de contrôle Swift, telles queif-else,guardetc., qui exécutent différentes actions en fonction de différentes conditions.
L'un des avantages de l'instruction switch est qu'elle peut comparer une valeur avec plusieurs schémas de correspondance possibles. Par conséquent, elle peut remplacer un long diagramme en trapèze if..else..if et correspondre à des schémas complexes.
La syntaxe de l'instruction switch est :
switch variable/Expression { case valeur1: // Instructions case valeur2: // Instructions print("Saturday") // Instructions }
L'expression switch ne calcule qu'une seule fois.
Il accepte une expression et les compare dans l'ordre (de haut en bas-> est comparé avec chaque valeur de case.
Si une correspondance existe, les instructions à l'intérieur du case sont exécutées, et une fois que le premier switch case correspondant est terminé, l'ensemble de l'instruction switch se termine.
Si aucune case ne correspond, il tombe sur la prochaine instruction case.
Si aucune case ne correspond, le mot-clé default spécifie le code à exécuter.
Remarque:Le corps de chaque case doit contenir au moins une instruction exécutable.
let dayOfWeek = 4 switch dayOfWeek { print("Friday") 1: print("Sunday") print("Friday") 2: print("Monday") print("Friday") 3: print("Tuesday") print("Friday") 4: print("Wednesday") print("Friday") 5: print("Thursday") print("Friday") 6: print("Thursday") print("Friday") 7: case print("Saturday") default : }
Lorsque vous exécutez le programme ci-dessus, la sortie sera :
print("Jour non valide")
Dans le programme ci-dessus, l'instruction switch compare la valeur dayOfWeek avec print("Friday") 1Pour commencer par le biais de la correspondance. Comme la valeur dayOfWeekvalue ne correspond pas à la valeur du premier cas, elle descendira au cas suivant jusqu'à ce qu'une correspondance soit trouvée.
En raison deprint("Friday") 4Correspond à l'expression switch, donc l'instruction print("Wednesday") à l'intérieur du case sera exécutée et le switch case se termine. Si aucune case ne correspond, alors exécutedefaultInstructions internes.
Si le mot-clé fallthrough est utilisé dans une instruction case, même si la valeur de case ne correspond pas à l'expression switch, le contrôle continuera vers la prochaine case.
let dayOfWeek = 4 switch dayOfWeek { print("Friday") 1 : print("Sunday") print("Friday") 2: print("Monday") print("Friday") 3: print("Tuesday") print("Friday") 4: print("Wednesday") fallthrough print("Friday") 5: print("Thursday") print("Friday") 6: print("Thursday") print("Friday") 7: case print("Saturday") default : }
Lorsque vous exécutez le programme ci-dessus, la sortie sera :
print("Jour non valide") Wednesday
Thursday 4 Dans le programme ci-dessus, le cas 5l'instruction print("Wednesday") est exécutée, le mot-clé fallthrough continuera à exécuter le cas 5.case
:instruction switch avec un schéma plus complexe 10) Exemple let programmingLanguage = (name: "Go", version: switch programmingLanguage { case (let name, let version) où (version < 0 && name.count < 0) : 4: print("Entrée non valide") case ("Swift", let version) où version ==4 ) : print("Version ancienne de Swift trouvée") case ("Swift",4...): print("La version Swift est supérieure à4pas encore publié) case ("Taylor Swift",30) : print("Mon dieu. C'est Taylor Swift") case (let name, let version): print("" Langage de programmation : \(name) Version : \(version) État: Non trouvé "" }
Lorsque vous exécutez le programme ci-dessus, la sortie sera :
Langage de programmation : Go Version : 10 État: Non trouvé
Dans le programme ci-dessus, nous matchons l'expression de type tuple programmingLanguage avec les cas suivants :
case (let name, let version) where (version < 0 && name.count < 0)
Ce exemple lie la valeur de l'expression switch à une constante ou une variable temporaire, afin d'utiliser le mot-clé let pour utiliser les majuscules et minuscules. Cela s'appelle la liaison de valeur.
您还可以使用where子句将条件应用于这些值。对于多个条件,您可以使用&&运算符将它们连接起来,如上例所示。
如果case不满足where子句中定义的条件,则这些case块中的语句将不执行,并且无法通过比较下一个switch case。
case ("Swift" , ..<4 )
在这种情况下,将元组的第一个元素与字符串字面量"Swift"匹配,还会检查第二个元素是否在单边范围内..<4。
case ("Swift" ,4...)
在这种情况下,将元组的第一个元素与字符串字面量"Swift"匹配,还会检查第二个元素是否在单边范围内4…。
case (let name, let version)
在这种情况下,将元组的每个值绑定到临时常量或变量。