מניות ב־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.
אתגר
קלהסקריפט מצהיר על המנייה 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]))
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמידתרגלו בעצמכם: קומפיילר GDScript אונליין