Menu
CoddyTech

מניות ב־Match

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 40 מתוך 78.

הצהרת match יכולה להשוות ערך לאפשרויות של enum. כל תבנית היא אפשרות, הכתובה באמצעות שם ה-enum שלה:

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 בכל מסלול. גם כשהענפים מכסים את כל האפשרויות, GDScript מדווח על Not all code paths return a value, אלא אם ל-match יש ענף _ או שמופיע אחריו return:

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

הפרמטר וסוג הערך המוחזר הם ה-enum Light. הפונקציה מוגדרת ברמה העליונה, כמו ה-enum.

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 אונליין