Menu
CoddyTech

התאמה עם משתנים

חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-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() לפני שמשווים אותו למספרים.

challenge icon

אתגר

קל

כתבו בדיקה לניחוש מספר. הקבוע 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 למטה
quiz iconבחנו את עצמכם

השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.

כל השיעורים ביחידה לוגיקה וזרימת תוכנית

תרגלו בעצמכם: קומפיילר GDScript אונליין