Menu
CoddyTech

Valori dell'enumerazione

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

Ogni opzione di un enum è un int, quindi puoi confrontare le opzioni e fare calcoli con esse:

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) # 5

L'enumerazione stessa funziona come un dizionario che associa nomi a valori. keys() restituisce i nomi in ordine, values() i valori e size() il numero di opzioni:

print(Day.keys()) # ["MONDAY", "TUESDAY", ..., "SUNDAY"]
print(Day.size()) # 7

Per stampare il nome di un valore, indicizzalo con keys(). Funziona quando le opzioni hanno i valori predefiniti 0, 1, 2... Per un enum con valori scelti, usa find_key(), che restituisce il nome di un valore:

var today := Day.SATURDAY
print(Day.keys()[today]) # SATURDAY

Con enum Coin { COPPER = 1, SILVER = 10 } al livello superiore, Coin.keys()[10] è fuori intervallo, mentre find_key() funziona:

print(Coin.find_key(10)) # SILVER

Per andare nell'altra direzione, da un nome memorizzato come testo al suo valore, usa le parentesi quadre. Verifica prima il nome con has(): un nome che non è nell'enum è un errore.

var text := "FRIDAY"
if Day.has(text):
	print(Day[text]) # 4

for day_name in Day: scorre i nomi, come un ciclo su un dizionario.

challenge icon

Sfida

Facile

Lo script dichiara l'enum Day, da MONDAY a SUNDAY. Il programma legge due righe: il nome di un giorno in lettere maiuscole e un numero di giorni (un numero intero, 0 o superiore).

Stampa due righe:

  1. Il nome, has the value e il valore di quel giorno nell'enum
  2. In, il numero, days: e il nome del giorno che cade quel numero di giorni dopo

Dopo SUNDAY, la settimana ricomincia da MONDAY. Per gli input FRIDAY e 3, l'output è:

FRIDAY has the value 4
In 3 days: MONDAY

Provalo tu

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())
	# Stampa il valore del giorno e quello del giorno dopo quel numero di giorni
	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