Menu
CoddyTech

תבניות מערכים

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

תבנית מערך נכתבת כמו מילולית של מערך. היא תואמת למערך באותו גודל, שהאיברים שלו תואמים זה לזה אחד-לאחד. כל איבר בתבנית יכול להיות מילולית, _ או קישור:

var point := [0, 7]
match point:
	[0, 0]:
		print("Origin")
	[0, var y]:
		print("On the y-axis at ", y)
	[var x, var y]:
		print("Point ", x, ", ", y)
On the y-axis at 7

הגודל חייב להיות זהה: [var x, var y] לא תואם ל־[1, 2, 3]. שים .. בתור האיבר האחרון כדי לאפשר כל מספר של איברים נוספים (כולל אפס), וכתוב [] עבור מערך ריק:

var cmd := ["give", "sword", "Ana"]
match cmd:
	[]:
		print("Nothing typed")
	["give", var item, ..]:
		print("Giving ", item)
Giving sword

תנאי שמירה עובדים גם עם תבניות של מערכים: [var a, var b] when a == b: מתאים לשני איברים שווים.

תבניות של מערכים מתאימות רק לסוג Array. הערך PackedStringArray שמוחזר על ידי split() לעולם לא מתאים להן. אחסן את התוצאה במשתנה שהוצהר מסוג Array, וכך היא תומר:

var words: Array = "go north".split(" ")
match words:
	["go", var dir]:
		print("Heading ", dir)
Heading north
challenge icon

אתגר

קל

התוכנית קוראת נקודה הכתובה בתור x,y ושומרת אותה במערך point כשני מספרים שלמים (כבר כתוב). השתמשו במשפט match עם תבניות מערך כדי להדפיס היכן נמצאת הנקודה, לפי הכלל הראשון שמתאים:

  • שניהם 0: Origin
  • x הוא 0: On the y-axis at y= ואחריו y
  • y הוא 0: On the x-axis at x= ואחריו x
  • x ו-y שווים: On the diagonal at ואחריו הערך
  • כל מקרה אחר: Point at (x, y) עם שני הערכים

עבור הקלט 0,5, הפלט הוא:

On the y-axis at y=5

עבור הקלט 2,7, הפלט הוא:

Point at (2, 7)

נסו בעצמכם

extends Node

func _ready():
	var parts := OS.read_string_from_stdin().split(",")
	var point := [int(parts[0]), int(parts[1])]
	# התאם את point לתבניות של מערכים
quiz iconבחנו את עצמכם

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

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

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