תבניות מילונים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 9 מתוך 78.
תבנית מילון מציינת מפתחות ואת התבניות שעל הערכים שלהם להתאים להן. היא מתאימה למילון שיש בו בדיוק את המפתחות האלה, בכל סדר שהוא:
var event := {"type": "move", "dir": "left"}
match event:
{"type": "jump"}:
print("Jump!")
{"type": "move", "dir": var d}:
print("Moving ", d)Moving leftהערך של "type" חייב להיות "move", והערך של "dir", יהיה אשר יהיה, נשמר ב־d. מילון עם מפתח שאינו מופיע בתבנית אינו תואם. הוסף .. בסוף כדי לאפשר מפתחות נוספים:
var hit := {"type": "attack", "damage": 30, "crit": true}
match hit:
{"type": "attack", "damage": _}:
print("Exactly two keys")
{"type": "attack", "damage": var dmg, ..}:
print("Hit for ", dmg)Hit for 30מפתח שנכתב ללא ערך רק בודק שהמפתח קיים: {"name", ..}: מתאים לכל מילון שיש בו מפתח "name". אפשר להשתמש כאן גם בתנאי שמירה: {"type": "attack", "damage": var dmg} when dmg > 50:.
אתגר
קלהתוכנית קוראת אירוע משחק שנכתב כזוגות key=value המופרדים בפסיקים, כגון type=move,dir=left, ושומרת אותו במילון event (שכבר נכתב). כל הערכים הם מחרוזות.
השתמשו במשפט match עם תבניות מילון, בסדר הבא:
- בדיוק המפתחות
type("move") ו-dir: הדפיסוMovingואת הכיוון - בדיוק המפתחות
type("attack") ו-damage: הדפיסוTaking, את הנזק ואתdamage typeהוא"heal", עם כל מפתח אחר: הדפיסוHealing- כל מילון אחר עם מפתח
type: הדפיסוUnknown event:ואת הסוג - כל דבר אחר: הדפיסו
Invalid event
עבור הקלט type=attack,damage=30, הפלט הוא:
Taking 30 damageאירוע כגון type=move,dir=up,speed=2 כולל מפתח נוסף, ולכן הוא מדפיס Unknown event: move.
נסו בעצמכם
extends Node
func _ready():
var event := {}
for pair in OS.read_string_from_stdin().split(","):
var kv := pair.split("=")
event[kv[0]] = kv[1]
# בדוק התאמה של event לתבניות מילון
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמידתרגלו בעצמכם: קומפיילר GDScript אונליין