Menu
CoddyTech

변수를 사용한 매치

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

match 문 단원에서는 모든 패턴이 1: 또는 "bow":와 같은 리터럴 값이었습니다. 패턴은 상수나 변수일 수도 있습니다. match는 해당 줄이 실행될 때 그 이름이 가진 값과 값을 비교합니다:

const SECRET := 42
var guess := 42
match guess:
	SECRET:
		print("You found it!")
	_:
		print("Try again")
You found it!

두 번째 새 패턴은 바인딩 패턴입니다. var 뒤에 새 이름이 오는 형태입니다. _와 마찬가지로 어떤 값과도 일치하며, 해당 값을 새 변수에 저장하기도 합니다. 이 변수는 블록 안에서 사용할 수 있습니다.

var level := 5
match level:
	1:
		print("Tutorial")
	var n:
		print("Level %d is locked" % n)
Level 5 is locked

바인딩 패턴은 자체 이름이 없는 식의 결과와 일치시킬 때 가장 유용합니다.

var roll_a := 4
var roll_b := 6
match roll_a + roll_b:
	12:
		print("Double six!")
	var total:
		print("You rolled ", total)
You rolled 10

바인딩 패턴은 모든 것과 일치하므로 _처럼 마지막에 와야 합니다. 이름은 새로워야 합니다. 두 번째 예시의 var level:은 오류가 발생하는데, level이 이미 존재하기 때문입니다. 또한 쉼표로 구분된 다른 패턴과 같은 줄에 쓸 수 없습니다.

match는 타입을 엄격하게 비교합니다. 문자열 "5"는 패턴 5와 일치하지 않으며, 실수 5.0도 마찬가지입니다. 입력에서 읽은 텍스트는 숫자와 대조하기 전에 int()로 변환하세요.

challenge icon

챌린지

쉬움

숫자 맞히기 확인 기능을 작성하세요. 상수 SECRET에는 비밀 숫자가 저장되며, 프로그램은 플레이어의 추측을 정수로 읽어 guess에 저장합니다.

guess에 대해 세 가지 패턴을 사용하는 match 문을 작성하세요.

  • 상수 SECRET: Correct!을 출력합니다.
  • 0: You gave up.을 출력합니다.
  • 그 밖의 추측을 모두 처리하는 바인딩 패턴: 추측값 뒤에 is not the number.를 출력합니다.

입력이 17일 때 출력은 다음과 같습니다.

17 is not the number.

직접 해보기

extends Node

func _ready():
	const SECRET := 42
	var guess := int(OS.read_string_from_stdin())
	# 아래에 match 문을 작성하세요
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

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