¿Qué es una enumeración?
Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 37 de 78.
Algunos valores solo pueden ser una de unas pocas opciones: un semáforo está en rojo, amarillo o verde, y un jugador está inactivo, corriendo o saltando. Podrías almacenar la opción como un número, con 0 para inactivo y 1 para corriendo, pero después cada lector tiene que recordar qué significa cada número:
var state := 1
if state == 1:
print("Running")Un enum (abreviatura de enumeración) asigna un nombre a cada opción. GDScript numera los nombres por ti, empezando en 0:
enum State { IDLE, RUN, JUMP }Ahora escribes State.RUN en lugar de 1: el nombre del enum, un punto y la opción. El código indica lo que significa:
var state := State.RUN
if state == State.RUN:
print("Running")Un enum se declara en el nivel superior del script, junto a func _ready(): y no dentro de él. Una línea enum dentro de una función es un error que detiene el programa antes de que se ejecute:
extends Node
enum State { IDLE, RUN, JUMP }
func _ready():
var state := State.JUMP
print(state) # 2Las opciones son constantes, así que State.RUN = 5 es un error. Una opción mal escrita, como State.RUNN, se detecta antes de que se ejecute el programa, mientras que un número incorrecto, como 3 en lugar de 2, pasa desapercibido.
Desafío
FácilEl programa lee un número entero de 0 a 3 que representa el clima. Asigna nombres a los números con un enum e imprime un consejo.
- En el nivel superior del script, declara un enum llamado
Weathercon las opcionesSUNNY,CLOUDY,RAINYySNOWY, en este orden. - Compara
weathercon las opciones del enum (no con los números) e imprime una línea:
Weather.SUNNY:Wear sunglassesWeather.CLOUDY:Bring a jacketWeather.RAINY:Take an umbrellaWeather.SNOWY:Build a snowman
Para la entrada 2, la salida es:
Take an umbrellaPruébalo tú mismo
extends Node
# Declara el enum Weather aquí
func _ready():
var weather := int(OS.read_string_from_stdin())
# Compara weather con las opciones del enum e imprime el consejo
pass
Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Lógica y flujo
1Cadenas de texto en profundidad
Métodos de cadenasBúsqueda en cadenasReemplazar y eliminar espaciosDividir y unirRepaso - Comprobación del nombre de usuario4Diccionarios, parte 2
Diccionarios anidadosArrays de diccionariosCombinar diccionariosCopiar diccionariosRepaso: contador de frecuencias7Enumeraciones
¿Qué es una enumeración?Definir una enumeraciónValores de una enumeraciónEnumeraciones en matchRepaso: semáforo10Funciones avanzadas
Devolver múltiples valoresFunciones lambda, parte 1Funciones lambda, parte 2Repaso: ordenar con lambdaFunciones recursivas, parte 1Funciones recursivas, parte 2Repaso: sumar un array anidado13Sistema de gestión de inventario
Descripción general del proyectoAñadir artículo2Toma de decisiones avanzada
Coincidencia con variablesGuardas de coincidenciaPatrones de arraysPatrones de diccionariosComprobaciones de pertenenciaRepaso: analizador de comandos5Aplicación de agenda de contactos
Mostrar menúAñadir contacto8Gestor de expedientes estudiantiles
Descripción del proyectoAgregar estudiante3Arrays multidimensionales
Conceptos básicos de arrays 2DAcceso a elementos de arrays 2DBucles anidados con arrays 2DRepaso: arrays 2DArrays irregularesPatrones comunes de arrays 2DRepaso: tablero de juego6Conjuntos con diccionarios
¿Qué es un conjunto?El diccionario como conjuntoAñadir y eliminarUnión e intersecciónDiferencia de conjuntosRepaso: eliminar duplicados9Agregación avanzada de datos
Suma de valoresCómo encontrar el mínimo y el máximoOrdenación personalizadaRepaso: organizador de diccionariosPractica por tu cuenta: Compilador de GDScript online