Menu
CoddyTech

Match에서 Enum 사용하기

Coddy GDScript 여정의 논리와 흐름 섹션에 포함된 레슨. 78개 중 40번째.

match 문은 값을 열거형 옵션과 비교할 수 있습니다. 각 패턴은 옵션이며, 열거형 이름으로 작성합니다:

enum Light { RED, YELLOW, GREEN }

func _ready():
	var light := Light.YELLOW
	match light:
		Light.RED:
			print("Stop")
		Light.YELLOW:
			print("Slow down")
		Light.GREEN:
			print("Go")

이것은 Slow down을 출력합니다. 모든 match문에서처럼 여러 옵션이 쉼표로 구분되어 하나의 분기를 공유할 수 있으며, _는 그 밖의 모든 경우를 처리합니다:

match light:
	Light.RED, Light.YELLOW:
		print("Wait")
	_:
		print("Go")

값을 반환하는 함수는 모든 경로에서 return을 사용해야 합니다. 분기에서 모든 옵션을 다루더라도, match에 _ 분기가 있거나 그 뒤에 return이 오지 않으면 GDScript는 Not all code paths return a value라고 보고합니다:

func next_light(light: Light) -> Light:
	match light:
		Light.RED:
			return Light.GREEN
		Light.GREEN:
			return Light.YELLOW
		_:
			return Light.RED

매개변수와 반환 형식은 열거형 Light입니다. 함수는 열거형과 마찬가지로 최상위 수준에서 선언됩니다.

challenge icon

챌린지

쉬움

이 스크립트는 State 열거형을 선언하며, 옵션은 IDLE, WALK, RUN, JUMP 및 FALL입니다. 함수 describe()를 완성하세요. 이 함수는 상태를 받아 match를 사용해 선택한 설명을 반환합니다.

  • State.IDLE: "Standing still"
  • State.WALK 및 State.RUN: "Moving"
  • State.JUMP 및 State.FALL: "In the air"

WALK와 RUN에는 하나의 분기를 사용하고, JUMP와 FALL에도 하나의 분기를 사용하세요. 제공된 _ready() 코드는 상태 이름이 담긴 한 줄을 읽고 각 상태 이름과 설명을 출력합니다. 입력이 IDLE RUN FALL일 때 출력은 다음과 같습니다.

IDLE: Standing still
RUN: Moving
FALL: In the air

직접 해보기

extends Node

enum State { IDLE, WALK, RUN, JUMP, FALL }

func describe(state: State):
	# match를 사용해 상태에 대한 설명을 반환합니다
	pass

func _ready():
	var names := OS.read_string_from_stdin().split(" ", false)
	for state_name in names:
		print(state_name, ": ", describe(State[state_name]))
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 GDScript 컴파일러