É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, …… et Saturday ne sont pas implicitement attribués à 0, 1, …… et 6. Au lieu de cela, ces membres de l'énumération ont eux-mêmes des valeurs complètes, et ces valeurs sont de types DaysofaWeek 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.


Par exemple, lors de l'utilisation d'un entier comme valeur primitive, la valeur implicitement attribuée est incrémentée de 1. Si la première valeur n’a pas de valeur initiale, elle sera automatiquement mise à 0.


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。