Énumérations rapides
De manière simple, une énumération est aussi un type de données, mais ce type de données ne contient que des données spécifiques personnalisées. Il s'agit d'un ensemble de données avec des caractéristiques communes.
L'énumération de Swift est similaire à la structure d'Objective C et C. Les fonctions de l'énumération sont :
Elle est déclarée dans la classe et accessible en instanciant la classe sa valeur.
Les énumérations peuvent également définir des constructeurs (initialiseurs) pour fournir une valeur de membre initiale ; leurs fonctionnalités peuvent être étendues en fonction de l'implémentation d'origine.
peut se conformer aux protocoles pour fournir des fonctions standards.
Syntaxe
Swift utilise le mot-clé enum pour créer des énumérations et envelopper l'intégralité de leur définition dans une paire d'accolades :
enum enumname { // 枚举定义放在这里 }
Par exemple, nous définissez l'énumération suivante pour représenter la semaine :
import Cocoa // 定义枚举 enum DaysofaWeek { case Sunday case Monday case TUESDAY case WEDNESDAY case THURSDAY case FRIDAY case Saturday } var weekDay = DaysofaWeek.THURSDAY weekDay = .THURSDAY switch weekDay { case .Sunday: print("星期天") case .Monday: print("星期一") case .TUESDAY: print("星期二") case .WEDNESDAY: print("星期三") case .THURSDAY: print("星期四") case .FRIDAY: print("星期五") case .Saturday: print("星期六") }
Le résultat de l'exécution du programme ci-dessus est :
星期四
Les valeurs définies dans l'énumération (telles que Sunday
, Monday
, ……
et Saturday
) sont les valeurs membres (ou membres) de cette énumération. Le mot-clé case
indique qu'une nouvelle ligne de valeurs de membres sera définie.
Remarque : Contrairement à C et Objective-C, les membres de l'énumération Swift ne se voient pas attribuer de valeur entière par défaut lors de leur création. Dans l'exemple
DaysofaWeek
ci-dessus,Sunday
,Monday
,……
etSaturday
ne sont pas implicitement attribués à0
,1
,……
et6
. Au lieu de cela, ces membres de l'énumération ont eux-mêmes des valeurs complètes, et ces valeurs sont de typesDaysofaWeek
bien définis. Le type de
var weekDay = DaysofaWeek.THURSDAY
weekDay
peut être déduit lorsqu'il est initialisé avec l'une des valeurs possibles de DaysofaWeek
. Une fois qu'un weekDay
est déclaré comme un DaysofaWeek
, vous pouvez lui donner la valeur d'un autre DaysofaWeek
en utilisant une syntaxe abrégée (.) :
var weekDay = .THURSDAY
Lorsque le type de weekDay
est connu, Vous pouvez omettre le nom de l'énumération lors de sa nouvelle attribution. L'utilisation de valeurs d'énumération explicitement typées rend votre code plus lisible.
Les énumérations peuvent être divisées en valeurs liées et valeurs primitives.
La différence entre la valeur pertinente et la valeur d'origine
相关值 | 原始值 |
---|---|
不同数据类型 | 相同数据类型 |
实例: enum {10,0.8,"Hello"} | 实例: enum {10,35,50} |
值的创建基于常量或变量 | 预先填充的值 |
相关值是当你在创建一个基于枚举成员的新常量或变量时才会被设置,并且每次当你这么做得时候,它的值可以是不同的。 | 原始值始终是相同的 |
Valeurs associées
Dans l'exemple suivant, nous définissons un type d'énumération nommé Student, qui peut être une valeur associée de Name (Int, Int, Int, Int) ou Mark's Une valeur associée de tapez Chaîne.
import Cocoa enum Student{ case Name(String) case Mark(Int,Int,Int) } var studDetails = Student.Name("php") var studMarks = Student.Mark(98,97,95) switch studMarks { case .Name(let studName): print("学生的名字是: \(studName)。") case .Mark(let Mark1, let Mark2, let Mark3): print("学生的成绩是: \(Mark1),\(Mark2),\(Mark3)。") }
Le résultat de sortie de l'exécution du programme ci-dessus est :
学生的成绩是: 98,97,95。
Valeur originale
La valeur d'origine peut être une chaîne, un caractère ou tout autre valeur entière ou valeur de type virgule flottante. Chaque valeur primitive doit être unique dans sa déclaration d'énumération.
Lorsque la valeur d'origine est une énumération entière, il n'est pas nécessaire d'attribuer explicitement une valeur à chaque membre, Swift vous attribuera automatiquement une valeur.
import Cocoa enum Month: Int { case January = 1, February, March, April, May, June, July, August, September, October, November, December } let yearMonth = Month.May.rawValue print("数字月份为: \(yearMonth)。")
Le résultat de l'exécution du programme ci-dessus est :
数字月份为: 5。