Menu
CoddyTech

¿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) # 2

Las 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.

challenge icon

Desafío

Fácil

El 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.

  1. En el nivel superior del script, declara un enum llamado Weather con las opciones SUNNY, CLOUDY, RAINY y SNOWY, en este orden.
  2. Compara weather con las opciones del enum (no con los números) e imprime una línea:
  • Weather.SUNNY: Wear sunglasses
  • Weather.CLOUDY: Bring a jacket
  • Weather.RAINY: Take an umbrella
  • Weather.SNOWY: Build a snowman

Para la entrada 2, la salida es:

Take an umbrella

Prué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
quiz iconPonte a prueba

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

Practica por tu cuenta: Compilador de GDScript online