Menu
CoddyTech

Was ist ein Enum?

Teil des Abschnitts Logik & Ablaufsteuerung der GDScript-Journey von Coddy. Lektion 37 von 78.

Manche Werte können nur eine von wenigen Optionen sein: Eine Ampel ist rot, gelb oder grün, und ein Spieler ist untätig, läuft oder springt. Du könntest die Option als Zahl speichern, mit 0 für untätig und 1 für laufend, aber dann muss sich jeder Leser merken, was die einzelnen Zahlen bedeuten:

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

Ein Enum (kurz für Enumeration) gibt jeder Option einen Namen. GDScript nummeriert die Namen für dich, beginnend bei 0:

enum State { IDLE, RUN, JUMP }

Jetzt schreibst du State.RUN statt 1: den Namen der Enumeration, einen Punkt und die Option. Der Code sagt, was es bedeutet:

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

Eine Aufzählung wird auf der obersten Ebene des Skripts deklariert, neben func _ready(): und nicht innerhalb davon. Eine enum-Zeile innerhalb einer Funktion ist ein Fehler, der das Programm anhält, bevor es ausgeführt wird:

extends Node

enum State { IDLE, RUN, JUMP }

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

Die Optionen sind Konstanten, daher ist State.RUN = 5 ein Fehler. Eine falsch geschriebene Option wie State.RUNN wird gemeldet, bevor das Programm ausgeführt wird, während eine falsche Zahl wie 3 anstelle von 2 unbemerkt bleibt.

challenge icon

Aufgabe

Einfach

Das Programm liest eine ganze Zahl von 0 bis 3, die für das Wetter steht. Gib den Zahlen mit einem Enum Namen und gib einen Ratschlag aus.

  1. Definiere auf der obersten Ebene des Skripts ein Enum namens Weather mit den Optionen SUNNY, CLOUDY, RAINY und SNOWY, in dieser Reihenfolge.
  2. Vergleiche weather mit den Enum-Optionen (nicht mit den Zahlen) und gib eine Zeile aus:
  • Weather.SUNNY: Wear sunglasses
  • Weather.CLOUDY: Bring a jacket
  • Weather.RAINY: Take an umbrella
  • Weather.SNOWY: Build a snowman

Für die Eingabe 2 lautet die Ausgabe:

Take an umbrella

Probier es selbst

extends Node

# Deklariere hier das Weather-Enum

func _ready():
	var weather := int(OS.read_string_from_stdin())
	# Vergleiche weather mit den Enum-Optionen und gib den Ratschlag aus
	pass
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Logik & Ablaufsteuerung

Übe selbstständig: Online-GDScript-Compiler