Menu
Coddy logo textTech

בניית טבלה ו־unpack()

חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 6 מתוך 54.

Lua מספקת זוג משלים של טכניקות לעבודה עם ערכים מרובים: בניית טבלה ו־unpack(). הן שימושיות במיוחד בעבודה עם פונקציות שזקוקות לטיפול גמיש בארגומנטים.אפשר לאסוף כמה ערכים לטבלה דמוית רשימה באמצעות תחביר של בנאי טבלה עם סוגריים מסולסלים. כך כל הערכים נאספים למבנה טבלה יחיד.
local args = {10, 20, 30}
print(args[1])  -- פלט: 10
print(#args)    -- פלט: 3
הפונקציה unpack() עושה את ההפך. היא מקבלת טבלה בסגנון רשימה ומחזירה את כל האיברים שלה כערכים נפרדים. כך אפשר להעביר את תוכן הטבלה כארגומנטים נפרדים לפונקציה.חשוב: אף שגרסאות חדשות יותר של Lua (5.2+) העבירו את הפונקציה הזו אל table.unpack(), הסביבה הזו מריצה את Lua 5.1, ולכן עליך להשתמש בפונקציה הגלובלית unpack().
local numbers = {5, 10, 15}
print(unpack(numbers))  -- פלט: 5    10    15
הטכניקות האלה פועלות יחד בצורה חלקה. אפשר לאסוף ערכים לטבלה, לשנות את הטבלה ואז לפרוק אותה בחזרה לערכים נפרדים.
challenge icon

אתגר

קל

כתבו פונקציה forwardArguments שמקבלת שלושה מספרים a, b ו-c, ומחזירה את הסכום שלהם באמצעות יצירת טבלה ו-unpack().

צרו טבלה המכילה את שלושת הארגומנטים באמצעות התחביר {a, b, c}, ואז פרקו אותה והעבירו את הערכים לפונקציה אחרת שמחשבת את הסכום שלהם.

הערה: אנא השתמשו בפונקציה הגלובלית unpack() ולא ב-table.unpack(), כדי להבטיח תאימות לסביבה הזו.

לוגיקה:

  • השתמשו ב-{a, b, c} כדי ליצור טבלה המכילה את שלושת הארגומנטים
  • צרו פונקציה נפרדת בשם sum שמקבלת שלושה פרמטרים ומחזירה את הסכום שלהם
  • השתמשו ב-unpack() כדי להעביר את ערכי הטבלה לפונקציה sum
  • החזירו את התוצאה מהפונקציה sum

פרמטרים:

  • a (מספר): המספר הראשון
  • b (מספר): המספר השני
  • c (מספר): המספר השלישי

ערך מוחזר: הסכום של שלושת המספרים (מספר)

נסו בעצמכם

function forwardArguments(a, b, c)
    -- צרו פונקציה נפרדת שמחשבת את הסכום

    -- צרו טבלה שמכילה את כל שלושת הארגומנטים

    -- פרקו את הטבלה והעבירו את הערכים לפונקציית הסכום
    -- רמז: השתמשו בפונקציה הגלובלית 'unpack' כדי לפרוס את הארגומנטים שבטבלה

end
quiz iconבחנו את עצמכם

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

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

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