Valores de una enumeración
Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 39 de 78.
Cada opción del enum es un int, así que puedes comparar las opciones y hacer cálculos con ellas:
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
func _ready():
print(Day.FRIDAY) # 4
print(Day.SATURDAY > Day.FRIDAY) # true
print(Day.FRIDAY + 1) # 5El propio enum funciona como un diccionario que asigna nombres a valores. keys() devuelve los nombres en orden, values() los valores y size() el número de opciones:
print(Day.keys()) # ["MONDAY", "TUESDAY", ..., "SUNDAY"]
print(Day.size()) # 7Para imprimir el nombre de un valor, indexa keys() con él. Esto funciona cuando las opciones tienen los valores predeterminados 0, 1, 2... Para un enum con valores elegidos, usa find_key(), que devuelve el nombre de un valor:
var today := Day.SATURDAY
print(Day.keys()[today]) # SATURDAYCon enum Coin { COPPER = 1, SILVER = 10 } en el nivel superior, Coin.keys()[10] está fuera de rango, mientras que find_key() funciona:
print(Coin.find_key(10)) # SILVERPara hacer lo contrario, pasar de un nombre almacenado como texto a su valor, usa corchetes. Comprueba primero el nombre con has(): un nombre que no está en el enum es un error.
var text := "FRIDAY"
if Day.has(text):
print(Day[text]) # 4for day_name in Day: recorre los nombres, como un bucle sobre un diccionario.
Desafío
FácilEl script declara la enumeración Day, desde MONDAY hasta SUNDAY. El programa lee dos líneas: el nombre de un día en mayúsculas y un número de días (un número entero, 0 o más).
Imprime dos líneas:
- El nombre,
has the valuey el valor de ese día en la enumeración In, el número,days:y el nombre del día tantos días después
Después de SUNDAY, la semana vuelve a empezar en MONDAY. Para las entradas FRIDAY y 3, la salida es:
FRIDAY has the value 4
In 3 days: MONDAYPruébalo tú mismo
extends Node
enum Day { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY }
func _ready():
var day_name := OS.read_string_from_stdin()
var days := int(OS.read_string_from_stdin())
# Imprime el valor del día y el del día que viene después de esa cantidad de días
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