טבלאות עם פונקציות
חלק מהיחידה תכנות מונחה עצמים במסלול ה-Lua של Coddy. שיעור 1 מתוך 70.
ב-Lua, טבלאות הן רב-תכליתיות במיוחד. מעבר לאחסון נתונים, הן יכולות להכיל גם פונקציות. כך אפשר לקבץ פעולות קשורות יחד ולשמור על הקוד מאורגן וקל לניהול.
כדי למקם פונקציה בתוך טבלה, פשוט משייכים אותה למפתח בדיוק כמו כל ערך אחר:
local myTable = {
greet = function(name)
return "Hello, " .. name
end
}
print(myTable.greet("Alice")) -- פלט: Hello, Aliceאפשר גם להגדיר את הפונקציה בנפרד ואז להוסיף אותה לטבלה:
local myTable = {}
myTable.greet = function(name)
return "Hello, " .. name
endאו השתמשו בתחביר המקוצר והנקי יותר הזה:
local myTable = {}
function myTable.greet(name)
return "Hello, " .. name
endשלוש הגישות מפיקות את אותה התוצאה. קוראים לפונקציה באמצעות תחביר נקודה: myTable.greet("Alice"). הדפוס הזה של איגוד פונקציות עם נתונים הוא הבסיס לתכנות מונחה עצמים ב-Lua.
אתגר
קלצרו טבלה בשם calculator שמכילה ארבע פונקציות אריתמטיות:
add(a, b)- מחזירה את הסכום שלaו-bsubtract(a, b)- מחזירה אתaפחותbmultiply(a, b)- מחזירה את המכפלה שלaו-bdivide(a, b)- מחזירה אתaמחולק ב-b
תקבלו שלוש קלטים:
- שם של פעולה (אחת מהאפשרויות:
add,subtract,multiply,divide) - המספר הראשון
- המספר השני
קראו לפונקציה המתאימה מתוך טבלת calculator שלכם, על סמך שם הפעולה, והדפיסו את התוצאה.
נסו בעצמכם
-- קראו את הקלטים
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())
-- TODO: צרו טבלת calculator עם ארבע פונקציות:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)
-- TODO: קראו לפונקציה המתאימה מטבלת calculator באמצעות שם הפעולה
-- והדפיסו את התוצאההשיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה תכנות מונחה עצמים
4פרויקט: בנק דיגיטלי
הגדרת הפרויקטפעולת הפקדה7פולימורפיזם ודריסת מתודות
דריסת מתודותקריאה למתודות של מחלקת האבטיפוסיות ברווזממשק משותףבדיקת טיפוססיכום – תפקידי עובדים2תבנית אב־טיפוס למחלקה
מושג אב־הטיפוסקישור באמצעות __indexהבנאי :new()אתחול מאפייניםמופעים עצמאייםסיכום – מפעל מכוניות5העמסת אופרטורים בתכנות מונחה עצמים
חיבור אובייקטיםחיסור אובייקטיםשרשור אובייקטיםהשוואת אובייקטים (<, >)חזרה – חישובים עם ארנק8כימוס
כללי מתן שמותClosures לשמירה על פרטיותגישה באמצעות Closuresטבלאות לקריאה בלבדלוגיקת אימותסיכום – כספת מאובטחת11תבניות עיצוב (בקצרה)
פונקציות Factoryטבלת Singletonתבנית IteratorObserver (מאזין)סיכום – מפעל Logger3מצב והתנהגות של אובייקטים
משתני מופעמתודות Getterמתודות Setterמאפיינים מחושביםעיצוב מחרוזותבדיקות שוויוןסיכום – ציון תלמיד6יסודות הירושה
הכנת מבנה הירושהירושת מתודותהרחבת הבנאיהוספת מתודות למחלקת הבתמשותף לעומת ייחודיסיכום – היררכיית צורותתרגלו בעצמכם: קומפיילר Lua אונליין