Menu
CoddyTech

מתודת map

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

פונקציה מסדר גבוה יותר היא פונקציה שמקבלת פונקציה אחרת כארגומנט. למערכים יש כמה פונקציות כאלה, ו־map() היא הראשונה.

map() קוראת לפונקציה על כל איבר במערך ומחזירה מערך חדש עם התוצאות, באותו סדר:

func square(n):
	return n * n
var numbers = [1, 2, 3, 4, 5]
var squares = numbers.map(square)
print(squares)
[1, 4, 9, 16, 25]

העבירו את הפונקציה לפי שמה, ללא סוגריים: map(square) מעביר את הפונקציה, ואילו map(square()) ינסה לקרוא לה מיד. לאחר מכן map() קוראת לה פעם אחת עבור כל איבר: 1 הופך ל־1, 2 הופך ל־4, 3 הופך ל־9, וכן הלאה.

בחישוב קצר, למבדה חוסכת לך את הצורך בפונקציה נפרדת:

var squares = numbers.map(func(n): return n * n)

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

var words = ["apple", "kiwi", "banana"]
print(words.map(func(w): return w.length()))
[5, 4, 6]

map() מחזירה Array רגיל, גם כשקוראים לה על מערך מטיפוס מסוים כמו Array[int]. אחסון התוצאה במשתנה מסוג Array[int] עוצר את התוכנית עם שגיאה, לכן יש לאחסן אותה במשתנה ללא טיפוס מוגדר או ב-Array.

split() מחזירה PackedStringArray, שאין לה map(). קודם ממירים אותה ל־Array: Array("1,2,3".split(",")).map(func(s): return int(s)) מחזירה [1, 2, 3].

challenge icon

אתגר

קל

כתבו פונקציה בשם convert_to_uppercase שמקבלת מערך של מחרוזות, strings, ומחזירה מערך חדש שבו כל מחרוזת כתובה באותיות גדולות.

השתמשו ב-map() עם למבדה, וללא לולאה. לדוגמה, convert_to_uppercase(["hello", "world"]) מחזירה ["HELLO", "WORLD"].

הבדיקות קוראות בעצמן ל-convert_to_uppercase(). אל תקראו לה, ואל תדפיסו דבר.

נסו בעצמכם

func convert_to_uppercase(strings: Array[String]):
	# כתבו כאן קוד
	pass
quiz iconבחנו את עצמכם

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

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

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