English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Swift 枚举

En termes simples, les ensembles sont également un type de données, mais ce type de données ne contient que des données spécifiques personnalisées, c'est un ensemble de données avec des caractéristiques communes.

Les ensembles Swift sont similaires aux structures Objective C et C, et les fonctionnalités des ensembles sont :

  • Il est déclaré dans la classe, et son valeur peut être accédée en instanciant la classe.

  • Les ensembles peuvent également définir des constructeurs (initializers) pour fournir une valeur de membre initiale ; ils peuvent étendre leurs fonctionnalités sur la base de l'implémentation originale.

  • il peut respecter les protocoles (protocols) pour fournir des fonctionnalités standard.

syntaxe

Swift utilise la clé de mots enum pour créer des ensembles et les placer dans une paire de crochets :

enum enumname {
   // la définition de l'ensemble est ici
}

par exemple, nous définissons les suivants pour représenter les jours de la semaine :

import Cocoa
// définir l'ensemble
enum DaysofaWeek {
    case Sunday
    case Monday
    case TUESDAY
    case WEDNESDAY
    case THURSDAY
    case FRIDAY
    case samedi
}
type.
weekDay = .THURSDAY
switch weekDay
{
case .Sunday:
    print("dimanche")
case .Monday:
    print("lundi")
case .TUESDAY:
    print("mardi")
case .WEDNESDAY:
    print("mercredi")
case .THURSDAY:
    print("jeudi")
case .FRIDAY:
    print("vendredi")
case .Saturday:
    }
}

以上程序执行输出结果为:

case .

print("samedi") Sunday,Monday,……etSaturdayjeudi)est une valeur définie dans cet enumération (par exemplevaleur de membre(oumembre)。case

représente une nouvelle ligne de valeur de membre qui sera définie. Remarque :-C et Objective-CDaysofaWeekdans l'exemple,Sunday,Monday,……etSaturdayne sont pas assignés implicitement à0,1,……et6Par contraste, les membres de l'enumération eux-mêmes ont des valeurs complètes, qui sont déjà bien définiesDaysofaWeek.

type.

weekDayvar weekDay = DaysofaWeek.DaysofaWeekvaleur possible est inférée lors de l'initialisation.weekDayDéclaré comme uneDaysofaWeekVous pouvez utiliser une syntaxe abrégée (.) pour la définir comme une autreDaysofaWeekvaleur :

var weekDay = .

lorsqueweekDayLorsque le type est connu, vous pouvez omettre le nom de l'enumération lors de l'affectation. Utiliser des valeurs d'enumération explicites permet de rendre le code plus lisible.

Les enums peuvent être divisés en valeurs associées et valeurs originales.

Différence entre les valeurs associées et les valeurs originales

Valeurs associées原始值
Types de données différentsMême type de données
Exemple: enum {10,0.8,"Hello"Exemple: enum {10,35,50}
La création des valeurs est basée sur des constantes ou des variablesValeurs préremplies
Les valeurs associées sont définies lorsque vous créez un nouveau constant ou une nouvelle variable basée sur un membre de l'enumération, et chaque fois que vous le faites, ces valeurs peuvent être différentes.Les valeurs originales sont toujours les mêmes

Valeurs associées

Dans cet exemple, nous définissons un type enuméré nommé Student, qui peut être une chaîne de caractères (String) de Name ou une valeur correspondante de Mark (Int, Int, Int).

import Cocoa
enum
    case .
    case .
}
var3codebox")
var98,97,95)
switch
case .
    print("学生的名字是: )
case .1, let )2, let )3:
    print("学生的成绩是: )1)2)3)。)
}

以上程序执行输出结果为:

学生的成绩是: 98,97,95。

原始值

原始值可以是字符串,字符,或者任何整型值或浮点型值。每个原始值在它的枚举声明中必须是唯一的。

在原始值为整数的枚举时,不需要显式的为每一个成员赋值,Swift会自动为你赋值。

例如,当使用整数作为原始值时,隐式赋值的值依次递增1。如果第一个值没有被赋初值,将会被自动置为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)。")

以上程序执行输出结果为:

数字月份为: 5。