Menu
CoddyTech

Valeurs d’une énumération

Fait partie de la section Logique et flux d’exécution du Journey GDScript de Coddy. Leçon 39 sur 78.

Chaque option d’énumération est un int, vous pouvez donc comparer les options et effectuer des calculs avec elles :

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’énumération elle-même fonctionne comme un dictionnaire associant des noms à des valeurs. keys() renvoie les noms dans l’ordre, values() les valeurs, et size() le nombre d’options :

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

Pour afficher le nom d’une valeur, indexez keys() avec celle-ci. Cela fonctionne lorsque les options ont les valeurs par défaut 0, 1, 2... Pour une énumération avec des valeurs choisies, utilisez find_key(), qui renvoie le nom d’une valeur :

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

Avec enum Coin { COPPER = 1, SILVER = 10 } au niveau supérieur, Coin.keys()[10] est hors limites, tandis que find_key() fonctionne :

print(Coin.find_key(10)) # SILVER

Pour faire l’inverse, passer d’un nom stocké sous forme de texte à sa valeur, utilise des crochets. Vérifie d’abord le nom avec has() : un nom qui ne figure pas dans l’énumération provoque une erreur.

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

for day_name in Day: parcourt les noms, comme une boucle sur un dictionnaire.

challenge icon

Défi

Facile

Le script déclare l’énumération Day, de MONDAY à SUNDAY. Le programme lit deux lignes : le nom d’un jour en majuscules et un nombre de jours (un nombre entier, 0 ou plus).

Affiche deux lignes :

  1. Le nom, has the value et la valeur de ce jour dans l’énumération
  2. In, le nombre, days: et le nom du jour correspondant à ce nombre de jours plus tard

Après SUNDAY, la semaine recommence à MONDAY. Pour les entrées FRIDAY et 3, la sortie est :

FRIDAY has the value 4
In 3 days: MONDAY

Essayez vous-même

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())
	# Affiche la valeur du jour et celle du jour obtenu après ce nombre de jours
	pass
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Logique et flux d’exécution

Entraînez-vous par vous-même : Compilateur GDScript en ligne