התאמה עם משתנים
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-GDScript של Coddy. שיעור 6 מתוך 78.
בשיעור Match Statement כל דפוס היה ערך מילולי, כמו 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, וגם מספר ממשי מסוג float שערכו 5.0 אינו תואם. יש להמיר טקסט שנקרא מקלט באמצעות int() לפני שמשווים אותו למספרים.
אתגר
קלכתבו בדיקה לניחוש מספר. הקבוע SECRET מכיל את המספר הסודי, והתוכנית קוראת את ניחוש השחקן כמספר שלם לתוך guess.
כתבו משפט match על guess עם שלוש תבניות:
- הקבוע
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 למטה
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
2קבלת החלטות מתקדמת
התאמה עם משתניםתנאי סף להתאמהתבניות מערכיםתבניות מילוניםבדיקות חברותסיכום – מנתח פקודות5אפליקציית ספר אנשי קשר
הצגת התפריטהוספת איש קשר8מנהל רשומות תלמידים
סקירת הפרויקטהוספת תלמידתרגלו בעצמכם: קומפיילר GDScript אונליין