الجداول مع الدوال
جزء من قسم Object Oriented Programming في رحلة Lua على Coddy — الدرس 1 من 70.
في لغة Lua، تُعد الجداول (tables) متعددة الاستخدامات بشكل مذهل. فبالإضافة إلى تخزين البيانات، يمكنها أيضاً احتواء الدوال (functions). يتيح لك ذلك تجميع العمليات ذات الصلة معاً، مما يحافظ على تنظيم الكود الخاص بك وسهولة إدارته.
لوضع دالة داخل جدول، ما عليك سوى تعيينها لمفتاح تماماً مثل أي قيمة أخرى:
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تؤدي جميع الأساليب الثلاثة إلى نفس النتيجة. تقوم باستدعاء الدالة باستخدام تدوين النقطة (dot notation): 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 الخاص بك بناءً على اسم العملية واطبع النتيجة.
ورقة مرجعية
في لغة 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")
جرّب بنفسك
-- قراءة المدخلات
local operation = io.read()
local num1 = tonumber(io.read())
local num2 = tonumber(io.read())
-- TODO: إنشاء جدول حاسبة يحتوي على أربع دوال:
-- add(a, b), subtract(a, b), multiply(a, b), divide(a, b)
-- TODO: استدعاء الدالة المناسبة من جدول الحاسبة باستخدام اسم العملية
-- وطباعة النتيجةيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس Object Oriented Programming
4مشروع: بنك رقمي
إعداد المشروعطريقة الإيداع7تعدد الأشكال وإعادة التعريف
إعادة تعريف الدوالاستدعاء دوال الفئة الأبDuck Typingواجهة مشتركةالتحقق من النوعمراجعة - أدوار الموظفين2نمط النموذج الأولي للفئات
مفهوم النموذج الأوليالربط باستخدام __indexالمنشئ :new()تهيئة الخصائصنسخ مستقلةملخص - مصنع السيارات5تحميل المعاملات في OOP
جمع الكائناتطرح الكائناتدمج الكائناتمقارنة الكائنات (<, >)مراجعة - رياضيات المحفظة8التغليف
اصطلاحات التسميةاستخدام Closures للخصوصيةالوصول عبر Closuresجداول للقراءة فقطمنطق التحقق من الصحةمراجعة - الخزنة الآمنة11أنماط التصميم (مبسط)
دوال المصنعجدول Singletonنمط الـ Iteratorالمراقب (المستمع)مراجعة - مصنع الـ Logger3حالة الكائن وسلوكه
متغيرات النسخةدالات الجلب (Getter Methods)دالات التعيين (Setter Methods)الخصائص المحسوبةتنسيق النصوصالتحقق من المساواةمراجعة - درجة الطالب6أساسيات الوراثة
إعداد الوراثةوراثة الـ Methodsتوسيع الـ Constructorإضافة Methods للابنالمشترك مقابل الفريدملخص - التسلسل الهرمي للأشكال