Menu
CoddyTech

Что такое Enum?

Часть раздела Логика и потоки выполнения путешествия по GDScript на Coddy. Урок 37 из 78.

Некоторые значения могут принимать только один из нескольких вариантов: светофор горит красным, жёлтым или зелёным, а игрок бездействует, бежит или прыгает. Можно хранить вариант в виде числа: 0 для бездействия и 1 для бега, но тогда каждому читателю придётся запоминать, что означает каждое число:

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

Перечисление (сокращение от «перечисление») присваивает каждому варианту имя. GDScript нумерует имена за тебя, начиная с 0:

enum State { IDLE, RUN, JUMP }

Теперь ты пишешь State.RUN вместо 1: имя перечисления, точку и вариант. Код говорит сам за себя:

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

Перечисление объявляется на верхнем уровне скрипта, рядом с func _ready():, а не внутри него. Строка enum внутри функции — это ошибка, из-за которой программа останавливается до запуска:

extends Node

enum State { IDLE, RUN, JUMP }

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

Варианты — это константы, поэтому State.RUN = 5 — ошибка. Опечатка в названии варианта, например State.RUNN, обнаруживается до запуска программы, а неправильное число, например 3 вместо 2, остаётся незамеченным.

challenge icon

Задание

Легко

Программа считывает целое число от 0 до 3, которое обозначает погоду. Дай числам имена с помощью enum и выведи рекомендацию.

  1. На верхнем уровне скрипта объяви enum с именем Weather и вариантами SUNNY, CLOUDY, RAINY и SNOWY именно в таком порядке.
  2. Сравни weather с вариантами enum (а не с числами) и выведи одну строку:
  • Weather.SUNNY: Wear sunglasses
  • Weather.CLOUDY: Bring a jacket
  • Weather.RAINY: Take an umbrella
  • Weather.SNOWY: Build a snowman

Для входных данных 2 вывод будет таким:

Take an umbrella

Попробуйте сами

extends Node

# Объявите здесь перечисление Weather

func _ready():
	var weather := int(OS.read_string_from_stdin())
	# Сравните weather с вариантами перечисления и выведите совет
	pass
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Логика и потоки выполнения

Потренируйтесь самостоятельно: Онлайн-компилятор GDScript