English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
En términos simples, las enumeraciones también son un tipo de datos, pero este tipo de datos solo contiene datos personalizados específicos, es una colección de un grupo de datos con características comunes.
Las enumeraciones en Swift son similares a las estructuras en Objective C y C, y las funcionalidades de las enumeraciones son:
Se declara en una clase y se puede acceder a sus valores mediante la instanciación de la clase.
Las enumeraciones también pueden definir constructores (initializers) para proporcionar un valor de miembro inicial; se pueden expandir sus funcionalidades basándose en la implementación original.
pueden adherirse a protocolos (protocols) para proporcionar funcionalidades estándar.
En Swift, se utiliza la palabra clave `enum` para crear enumeraciones y se colocan toda su definición entre llaves grandes:
enum enumname { // definición de enumeración aquí }
por ejemplo, definimos los siguientes enumeraciones para representar la semana:
import Cocoa // definir enumeración enum DaysOfWeek { 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("domingo") case .Monday: print("lunes") case .TUESDAY: print("martes") case .WEDNESDAY: print("miércoles") case .THURSDAY: print("jueves") case .FRIDAY: print("viernes") case .Saturday: case\(Saturday:) }
El resultado de la ejecución del programa es:
print("Sábado")
jueves Domingo
,Lunes
,……
ySábado
)es el valor definido en este enumerado (comomiembro del valor(omiembro)。case
la palabra clave indica que se definirá un nuevo miembro de línea.
Nota:
y C y Objective-C Diferente, los miembros de enumeración de Swift no se asignan un valor entero predeterminado cuando se crean. En el ejemplo anteriorDiasDeLaSemana
en el caso deDomingo
,Lunes
,……
ySábado
no se asigna implícitamente como0
,1
,……
y6
En lugar de eso, estos miembros de enumeración tienen valores completos, que están ya bien definidosDiasDeLaSemana
tipo.
var\(weekDay\=\(DaysofaWeek\(THURSDAY"
weekDay
el tipo se puede inferir en el momento en que seDiasDeLaSemana
de un posible valor que se inicializa. Una vezweekDay
se declara como unDiasDeLaSemana
puedes usar una sintaxis abreviada (.) para establecer otroDiasDeLaSemana
tiene el valor:
var\(weekDay\=\(DaysofaWeek\(THURSDAY"
cuandoweekDay
Cuando se conoce el tipo, se puede omitir el nombre del enumerado al asignar de nuevo. Los valores de enumeración explícitamente tipificados permiten que el código sea más legible.
Los enumerados se pueden dividir en valores relacionados y valores originales.
Valores relacionados | Valores originales |
---|---|
Tipos de datos diferentes | Mismo tipo de datos |
Ejemplo: enum {10,0.8,"Hello" | Ejemplo: enum {10,35,50} |
La creación de valores se basa en constantes o variables | Valores predefinidos |
Los valores relacionados se establecen cuando creas un nuevo constante o variable basada en un miembro de enumeración, y pueden ser diferentes cada vez que lo haces. | El valor original siempre es el mismo |
En este ejemplo, definimos un tipo de enumeración llamado Student, que puede ser un String de Name o un valor relacionado de Mark (Int,Int,Int).
import Cocoa enum\(Student{ case\(Name(String) case\(Mark(Int,Int,Int) } var\(studDetails\=\(Student\(Name("w3) var\(studMarks\=\(Student\(Mark(\(codebox"98,97,95) switch\(studMarks\{ case\(Name(\(let\(studName): print("学生的名字是: \(studName)。" case\(Mark(\(let\(Mark1,\(let\(Mark2,\(let\(Mark3): print("学生的成绩是: \(Mark1),\(Mark2),\(Mark3)。) }
El resultado de la ejecución del programa es:
La calificación del estudiante es: 98,97,95.
Los valores originales pueden ser cadenas, caracteres o cualquier valor entero o de punto flotante. Cada valor original debe ser único en la declaración de la enumeración.
En el caso de las enumeraciones con valores originales enteros, no es necesario asignar explícitamente valores a cada miembro, Swift lo hace automáticamente por usted.
Por ejemplo, al usar enteros como valores originales, los valores de asignación implícita se incrementan sucesivamente1. Si el primer valor no se asigna un valor inicial, se asignará automáticamente 0.
import Cocoa enum Mes: Int { case Enero = 1, Febrero, Marzo, Abril, Mayo, Junio, Julio, Agosto, Septiembre, Octubre, Noviembre, Diciembre } let yearMonth = Month.May.rawValue print("El mes numérico es: \(yearMonth).")
El resultado de la ejecución del programa es:
El mes numérico es: 5.