صيغة النقطتين
جزء من قسم البرمجة كائنية التوجه في رحلة Lua على Coddy. الدرس 3 من 70.
كتابة counter.increment(counter) في كل مرة أمر مُملّ وعُرضة للأخطاء. توفّر Lua طريقة أكثر وضوحًا: معامل النقطتين (:).
عند تعريف function باستخدام colon، تضيف Lua تلقائيًا self كالمعامل الأول:
local player = {
name = "Hero"
}
-- استخدام النقطتين في التعريف
function player:greet()
print("Hello, I am " .. self.name)
endيعمل colon أيضًا عند استدعاء function. ويمرّر table تلقائيًا باعتباره الوسيط الأول:
player:greet() -- المخرجات: Hello, I am Heroهذا مكافئ لكتابة player.greet(player)، لكنه أكثر نظافة بكثير. يتولى colon التعامل مع معامل self في كلا الطرفين: أثناء definition وأثناء call.
إليك مقارنة توضّح أن كلا الأسلوبين ينتجان نتائج متطابقة:
local counter = { value = 0 }
-- صيغة النقطة (self صريح)
function counter.increment(self)
self.value = self.value + 1
end
counter.increment(counter)
-- صيغة النقطتين (self تلقائي)
function counter:decrement()
self.value = self.value - 1
end
counter:decrement()تُعدّ بنية colon الطريقة القياسية لتعريف واستدعاء الأساليب في Lua. فهي تجعل التعليمات البرمجية أقصر وأقل تكرارًا.
التحدي
سهلأنشئ table named greeter مع field message مهيّأ بقيمة ستتلقاها كـ input.
أضف method :sayHello(name) باستخدام colon syntax التي تطبع greeting بالتنسيق التالي:
[message], [name]!ستتلقى inputين:
- رسالة greeting لتخزينها في
greeter.message - اسم لتمريره إلى method
:sayHello()
عرّف method باستخدام colon syntax واستدعها باستخدام colon syntax. اطبع greeting المنسّقة.
على سبيل المثال، إذا كانت الرسالة هي Welcome وكان الاسم هو Luna، فيجب أن يكون Output:
Welcome, Luna!جرّب بنفسك
-- قراءة المدخلات
local message = io.read()
local name = io.read()
-- TODO: اكتب شفرتك أدناه
-- 1. أنشئ جدولاً باسم 'greeter' مع حقل 'message'
-- 2. أضف دالة :sayHello(name) باستخدام صيغة النقطتين
-- 3. استدعِ الدالة باستخدام صيغة النقطتين لطباعة التحيةيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس البرمجة كائنية التوجه
4مشروع: بنك رقمي
إعداد المشروعطريقة الإيداع7تعدد الأشكال وإعادة التعريف
إعادة تعريف الدوالاستدعاء دوال الفئة الأبDuck Typingواجهة مشتركةالتحقق من النوعمراجعة - أدوار الموظفين2نمط النموذج الأولي للفئات
مفهوم النموذج الأوليالربط باستخدام __indexالمنشئ :new()تهيئة الخصائصنسخ مستقلةملخص - مصنع السيارات5تحميل المعاملات في OOP
جمع الكائناتطرح الكائناتدمج الكائناتمقارنة الكائنات (<, >)مراجعة - رياضيات المحفظة8التغليف
اصطلاحات التسميةاستخدام Closures للخصوصيةالوصول عبر Closuresجداول للقراءة فقطمنطق التحقق من الصحةمراجعة - الخزنة الآمنة11أنماط التصميم (مبسط)
دوال المصنعجدول Singletonنمط الـ Iteratorالمراقب (المستمع)مراجعة - مصنع الـ Logger3حالة الكائن وسلوكه
متغيرات النسخةدالات الجلب (Getter Methods)دالات التعيين (Setter Methods)الخصائص المحسوبةتنسيق النصوصالتحقق من المساواةمراجعة - درجة الطالب6أساسيات الوراثة
إعداد الوراثةوراثة الـ Methodsتوسيع الـ Constructorإضافة Methods للابنالمشترك مقابل الفريدملخص - التسلسل الهرمي للأشكالتدرّب بنفسك: مترجم Lua عبر الإنترنت