Cette fois, je voudrais présenter une utilisation légèrement différente qui utilise la valeur taple pour le branchement conditionnel de l'instruction Switch. Je pense que c'est un moyen efficace de l'utiliser en fonction de la situation, alors jetez un œil.
Tout d'abord, si vous considérez le taple comme une constante et que vous le mettez sur l'étiquette du boîtier, vous pouvez écrire: Cependant, tous les types de tapple doivent être identiques, et dans cet exemple, nous supposons que la variable day a un taple qui représente une date composée de mois et de jours. Il sera affiché s'il correspond à l'un des trois jours fériés répertoriés.
python
switch day {
case (1,1): print("Le jour de l'An")
case (2,11): print("jour fondation")
case (5,3): print("Anniversaire constitutionnel")
default: break
}
Vous pouvez utiliser l'opérateur de plage pour représenter une plage de dates. Par exemple, consultez l'exemple suivant.
python
switch day {
case (1,1...5): // 1/1 ~ 1/5
print("vacances du nouvel an")
case (5,3): print("Anniversaire constitutionnel")
case (4,29), (5,2...6):
print("Jours fériés consécutifs")
default: break
}
En plus d'énumérer les valeurs, vous pouvez également récupérer les éléments du taple et les utiliser pour le traitement. Pour cela, vous pouvez écrire let ou var à l'intérieur de l'étiquette case pour déclarer des constantes et des variables valides uniquement dans la clause case.
python
switch day {
case (5,3): print("Anniversaire constitutionnel")
case (8, let d): print("8/\(d)Est-ce que les vacances d'été")
default: break
}
Dans cet exemple, toute date d'août sera des vacances d'été. Si vous n'avez pas besoin d'utiliser la variable d, vous pouvez également utiliser "_" et écrire:
python
case (8, _): print("Vacances d'été")
Vous pouvez également utiliser un taple avec un mot-clé dans l'instruction switch, mais une erreur se produira si la valeur et le mot-clé utilisés dans l'étiquette de cas ne correspondent pas. Dans Swift, le processus général de vérification de la correspondance entre la structure et la valeur, comme la correspondance entre les étiquettes de tapple et de case, est appelé ** correspondance de modèle **.
Vous pouvez également conditionner les éléments du taple avec l'instruction switch. Ici, nous utilisons la fonction dayOfWeek qui calcule le jour à partir de la date. Cette fonction renvoie le jour sous la forme d'un entier, tel que 0 pour dimanche, 1 pour lundi, etc. Notez que l'année variable correspond à l'année de l'année. Lors de l'ajout d'une condition à l'étiquette de cas, décrivez le mot réservé où et la condition entre l'étiquette et ":". Consultez l'exemple ci-dessous.
python
switch day {
case (1, let d) where d >= 8 && d <= 14 && dayOfWeek(year,1,d) == 1:
print("Journée adulte")
case (8, _): print("Vacances d'été")
case (let m, let d) where dayOfWeek(year,m,d) == 0:
print("\(m)/\(d)Est dimanche")
default: break
}
La condition ici est que le deuxième lundi de janvier soit la journée des adultes. De même, il est affiché le dimanche à tout moment de l'année. Si vous souhaitez affecter tous les éléments d'un taple à une constante comme cette étiquette de cas, vous pouvez spécifier un let pour chaque élément, mais vous pouvez également écrire un seul let avant le tapple.
python
case let (m, d) where dayOfWeek(year,m,d) == 0:
print("\(m)/\(d)Est dimanche")
La méthode de spécification des conditions à l'aide de let, var et where in the case label peut être utilisée non seulement pour les tapples mais aussi pour les entiers ordinaires.
Les étiquettes qui utilisent des constantes et des variables ont des restrictions lorsqu'elles sont disposées séparément, séparées par ",". En effet, les constantes et les variables peuvent n'avoir aucune valeur, selon les conditions d'étiquette remplies. Par exemple, vous ne pouvez pas effectuer les opérations suivantes:
python
switch t {
case (1, let y), (2, 2):
print("\(y)")
case (2, _):
fallthrough
case (let z, 2):
print("\(z)")
default: break
}
Vous ne pouvez pas utiliser l'instruction fallthrough pour passer à une clause case qui utilise des constantes ou des variables dans le libellé case à partir des options immédiatement ci-dessus.
Lorsque les étiquettes sont répertoriées séparées par ",", la condition qu'elles peuvent contenir des constantes ou des variables est que toutes les étiquettes contiennent des constantes ou des variables du même nom et du même type. En d'autres termes, dans tous les cas, la valeur d'une constante ou d'une variable doit être déterminée. Soyez prudent uniquement sur ce point.
Même si l'expression que vous souhaitez séparer dans l'instruction switch contient une valeur de type facultative, vous pouvez la séparer par l'étiquette de cas. À titre d'exemple, considérons le type de tapple composé du nom et de l'âge. Cependant, puisque l'âge peut être inconnu, il s'agit d'un type facultatif.
python
typealias People = (String, Int?)
Pour gérer ces types dans l'instruction Switch, utilisez le symbole «?» Dans le modèle de cas.
python
switch m {
case let (name, age?) where age >= 18:
print("\(name),La licence peut être obtenue")
case let (name, (15...18)?):
print("\(name),Lycéen")
case (let name, nil):
print("\(name),Âge inconnu")
default: break
}
De cette manière, si vous ajoutez "?" À la constante ou variable correspondante, il correspondra lorsque le type facultatif a une valeur autre que nil, et vous pouvez faire référence à la valeur dans la clause where ou l'exécution suivante sans utiliser l'opérateur de divulgation. Je vais. De plus, si vous décrivez nil, il correspondra si le type facultatif a la valeur nil. Placez le motif indiquant la plage entre ().
Le "?" Pour indiquer qu'il est facultatif peut être utilisé pour d'autres motifs tels que les tapples. Par exemple, si la variable ops Pepole? Type est utilisée dans l'instruction switch, le cas peut être décrit comme suit.
python
switch ops { //ops c'est les gens?Moule
case let (name, 18?)? : //Le résultat divulgué est(Chaîne, 18)Alors correspondre
Cette fois, j'ai écrit sur la façon d'utiliser l'instruction switch en utilisant des tapples. La prochaine fois, j'écrirai un article sur le ** type d'énumération **, alors jetez un œil si vous le souhaitez. Merci à tous ceux qui ont vu jusqu'ici.
Recommended Posts