Menu
CoddyTech

Che cos'è un'enumerazione?

Fa parte della sezione Logica e flusso del percorso GDScript di Coddy. Lezione 37 di 78.

Alcuni valori possono assumere solo una delle poche opzioni disponibili: un semaforo è rosso, giallo o verde e un giocatore è inattivo, corre o salta. Potresti memorizzare l’opzione come numero, con 0 per inattivo e 1 per correre, ma così ogni lettore deve ricordare cosa significa ciascun numero:

var state := 1
if state == 1:
	print("Running")

Un enum (abbreviazione di enumerazione) assegna un nome a ogni opzione. GDScript numera i nomi per te, a partire da 0:

enum State { IDLE, RUN, JUMP }

Ora scrivi State.RUN invece di 1: il nome dell'enum, un punto e l'opzione. Il codice indica cosa significa:

var state := State.RUN
if state == State.RUN:
	print("Running")

Un'enumerazione viene dichiarata al livello superiore dello script, accanto a func _ready(): e non al suo interno. Una riga enum all'interno di una funzione è un errore che interrompe il programma prima che venga eseguito:

extends Node

enum State { IDLE, RUN, JUMP }

func _ready():
	var state := State.JUMP
	print(state) # 2

Le opzioni sono costanti, quindi State.RUN = 5 è un errore. Un’opzione scritta in modo errato, come State.RUNN, viene segnalata prima che il programma venga eseguito, mentre un numero errato, come 3 al posto di 2, passa inosservato.

challenge icon

Sfida

Facile

Il programma legge un numero intero da 0 a 3 che rappresenta il meteo. Assegna dei nomi ai numeri con un enum e stampa un consiglio.

  1. Al livello superiore dello script, dichiara un enum chiamato Weather con le opzioni SUNNY, CLOUDY, RAINY e SNOWY, in quest'ordine.
  2. Confronta weather con le opzioni dell'enum (non con i numeri) e stampa una riga:
  • Weather.SUNNY: Wear sunglasses
  • Weather.CLOUDY: Bring a jacket
  • Weather.RAINY: Take an umbrella
  • Weather.SNOWY: Build a snowman

Per l'input 2, l'output è:

Take an umbrella

Provalo tu

extends Node

# Dichiara qui l'enum Weather

func _ready():
	var weather := int(OS.read_string_from_stdin())
	# Confronta weather con le opzioni dell'enum e stampa il consiglio
	pass
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Logica e flusso

Esercitati da solo: Compilatore GDScript online