Menu
CoddyTech

배열 패턴

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

배열 패턴은 배열 리터럴처럼 작성합니다. 크기가 같고 각 요소가 하나씩 일치하는 배열과 일치합니다. 패턴의 각 요소는 리터럴, _ 또는 바인딩일 수 있습니다.

var point := [0, 7]
match point:
	[0, 0]:
		print("Origin")
	[0, var y]:
		print("On the y-axis at ", y)
	[var x, var y]:
		print("Point ", x, ", ", y)
On the y-axis at 7

크기는 같아야 합니다. [var x, var y]는 [1, 2, 3]과 일치하지 않습니다. 추가 요소를 개수에 상관없이 허용하려면(0개 포함) ..를 마지막 요소로 넣고, 빈 배열은 []로 씁니다.

var cmd := ["give", "sword", "Ana"]
match cmd:
	[]:
		print("Nothing typed")
	["give", var item, ..]:
		print("Giving ", item)
Giving sword

가드(guard)는 배열 패턴에서도 작동합니다. [var a, var b] when a == b:는 서로 같은 두 요소와 일치합니다.

배열 패턴은 Array 타입만 일치시킵니다. split()이 반환하는 PackedStringArray는 이 패턴과 일치하지 않습니다. 결과를 Array로 선언된 변수에 저장하면 변환됩니다:

var words: Array = "go north".split(" ")
match words:
	["go", var dir]:
		print("Heading ", dir)
Heading north
challenge icon

챌린지

쉬움

프로그램은 x,y 형식으로 작성된 점을 읽고, 이미 작성된 대로 이를 두 정수로 이루어진 point 배열에 저장합니다. 배열 패턴을 사용하는 match문으로 점의 위치를 출력하세요. 맞는 첫 번째 규칙을 사용합니다.

  • 두 값 모두 0: Origin
  • x가 0: On the y-axis at y= 뒤에 y를 출력
  • y가 0: On the x-axis at x= 뒤에 x를 출력
  • x와 y가 같음: On the diagonal at 뒤에 해당 값을 출력
  • 그 외의 경우: 두 값을 사용해 Point at (x, y)를 출력

입력이 0,5인 경우 출력은 다음과 같습니다.

On the y-axis at y=5

입력이 2,7인 경우 출력은 다음과 같습니다.

Point at (2, 7)

직접 해보기

extends Node

func _ready():
	var parts := OS.read_string_from_stdin().split(",")
	var point := [int(parts[0]), int(parts[1])]
	# point를 배열 패턴과 비교하여 일치 여부 확인
quiz icon실력 점검

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

논리와 흐름의 모든 레슨

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