בניית טבלה ו־unpack()
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Lua של Coddy. שיעור 6 מתוך 54.
unpack(). הן שימושיות במיוחד בעבודה עם פונקציות שזקוקות לטיפול גמיש בארגומנטים.אפשר לאסוף כמה ערכים לטבלה דמוית רשימה באמצעות תחביר של בנאי טבלה עם סוגריים מסולסלים. כך כל הערכים נאספים למבנה טבלה יחיד.local args = {10, 20, 30}
print(args[1]) -- פלט: 10
print(#args) -- פלט: 3unpack() עושה את ההפך. היא מקבלת טבלה בסגנון רשימה ומחזירה את כל האיברים שלה כערכים נפרדים. כך אפשר להעביר את תוכן הטבלה כארגומנטים נפרדים לפונקציה.חשוב: אף שגרסאות חדשות יותר של Lua (5.2+) העבירו את הפונקציה הזו אל table.unpack(), הסביבה הזו מריצה את Lua 5.1, ולכן עליך להשתמש בפונקציה הגלובלית unpack().local numbers = {5, 10, 15}
print(unpack(numbers)) -- פלט: 5 10 15אתגר
קלכתבו פונקציה 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השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1איטרציה מתקדמת בטבלאות
איטרציה באמצעות pairs()איטרציה באמצעות ipairs()pairs() לעומת ipairs()סיכום – גיליון דמות2פונקציות נוספות של ספריית הטבלאות
table.concat()בניית טבלה ו־unpack()table.sort()מיון מותאם אישית באמצעות פונקציותסיכום – לוח שיאיםתרגלו בעצמכם: קומפיילר Lua אונליין