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입니다. 함수는 열거형과 마찬가지로 최상위 수준에서 선언됩니다.
챌린지
쉬움이 스크립트는 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]))
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 GDScript 컴파일러