énumération Swift
Enumeration est tout simplement un type de données, mais cela est le seul type de données qui contient une donnée spécifique au client, qui est un ensemble de caractéristiques communes de la collecte de données.
structure de recensement Swift similaire à Objective C et C, les fonctions d'énumération:
Il est déclaré dans la classe, la classe peut accéder à sa valeur par instanciation.
Enum peut également définir un constructeur (initializers) pour fournir une valeur de membre initial; peut étendre leur fonctionnalité dans la base de la mise en œuvre d'origine.
Vous pouvez observer le protocole (protocoles) pour fournir une fonctionnalité standard.
grammaire
Swift mot-clé enum est utilisé pour créer et d'énumérer la totalité de leurs définitions placées dans une paire de bretelles:
enum enumname { // 枚举定义放在这里 }
Par exemple, nous définissons le jour de la semaine, l'énumération suivante:
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("星期六") }
La sortie de l'exécution du programme ci-dessus est la suivante:
星期四
Valeur (tel que défini dans l'énumération des Sunday
, Monday
, ……
et Saturday
) sont les membres des valeurs d'énumération (ou membre). case
Mots clés membres représentent une nouvelle ligne de valeur sera définie.
Note: C et Objective-C et membre de l'énumération différente Swift ne sera pas donné une valeur entière par défaut est en cours de création. Dans ce qui précède
DaysofaWeek
exemple,Sunday
,Monday
,……
etSaturday
seront pas implicitement attribué la valeur0
,1
,……
et6
. Au lieu de cela, ces membres eux - mêmes ont une valeur d'énumération complète qui sont déjà clairement définisDaysofaWeek
Type.
var weekDay = DaysofaWeek.THURSDAY
weekDay
type , il peut être DaysofaWeek
inférer lorsqu'une valeur peut être initialisé. Une fois weekDay
est déclarée comme DaysofaWeek
, vous pouvez utiliser une syntaxe abrégée pour le mettre à un autre (.) DaysofaWeek
valeur:
var weekDay = .THURSDAY
Lorsque weekDay
lorsque le type est connu, sa mission peut être omise nom nouveau recensement. Utilisez des valeurs explicites de type d'énumération rend le code plus lisible.
Il peut être divisé en valeur d'énumération associée à la valeur initiale.
La différence entre la valeur de corrélation et la valeur d'origine
La valeur de corrélation | valeur originale |
---|---|
Différents types de données | Le même type de données |
Exemples: enum {10,0.8, "Bonjour"} | Exemples: enum {10,35,50} |
Créer une valeur basée sur constant ou variable, | Valeur pré-peuplée |
Valeur de corrélation lorsque vous créez une nouvelle énumération constante basée sur l'adhésion ou variable sera défini, et chaque fois que vous n'avez le temps, sa valeur peut être différente. | La valeur initiale est toujours le même |
La valeur de corrélation
L'exemple suivant, nous définissons un étudiant nommé du type énuméré, il peut être une valeur Nom associé (Int, Int, Int, Int), ou Mark type chaîne (String) valeur de corrélation.
import Cocoa enum Student{ case Name(String) case Mark(Int,Int,Int) } var studDetails = Student.Name("w3big") 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)。") }
La sortie de l'exécution du programme ci-dessus est la suivante:
学生的成绩是: 98,97,95。
valeur originale
La valeur initiale peut être une chaîne, caractère ou un nombre entier ou valeur à virgule flottante. Chaque valeur d'origine dans sa déclaration enum doit être unique.
Lorsque la valeur d'origine est une énumération entière, sans affectation explicite pour chaque membre, Swift va automatiquement vous affecter.
Par exemple, lorsque vous utilisez une valeur entière que l'original, la valeur implicite attribué séquentiellement incrémenté par un. Si la première valeur est pas affecté la valeur initiale sera automatiquement mis à zéro.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)。")
La sortie de l'exécution du programme ci-dessus est la suivante:
数字月份为: 5。