Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

إضافة الدوارل إلى أشكال الجداول

جزء من قسم مقدمة إلى Luau في رحلة Lua على Coddy — الدرس 42 من 73.

من فصل البرمجة الكائنية التوجه (OOP) في Lua، تعلمت أن الجداول يمكنها احتواء الدوال تمامًا مثل أي قيمة أخرى. يمكن للأشكال (Shapes) وصف حقول الدوال تلك أيضًا — مما يحول الشكل إلى عقد صغير للبيانات والسلوك.

يستخدم حقل الدالة (method) بناء جملة نوع الدالة الذي تعلمته في فصل الدوال. معامِله الأول يُسمى عرفًا self — أي الجدول الذي تنتمي إليه الدالة — ويمكن للشكل حتى الإشارة إلى نفسه:

type Greeter = {
    name: string,
    greet: (self: Greeter) -> string,
}

لتطبيق الشكل، قم بتخزين دالة في الحقل ومرر لها المعامل self:

local greeter: Greeter = {
    name = "Ana",
    greet = function(self: Greeter): string
        return `Hello, I'm {self.name}`
    end,
}

استدعاؤها يعني تمرير الجدول كـ self بنفسك: greeter.greet(greeter). ومن خلال self تقرأ الدالة حقول أي جدول تم استدعاؤها عليه.

كتابة الجدول مرتين تبدو غير مريحة — وأنت تعرف بالفعل الحل في Lua: النقطتان الراسيتان (colon). الدرس القادم سيربط بناء الجملة : بهذه الأشكال المحددة الأنواع.

challenge icon

التحدي

سهل

أنشئ اسم مستعار للنوع (type alias) باسم Rectangle يحتوي على:

  • width من النوع number
  • height من النوع number
  • area — دالة (method) (self: Rectangle) -> number ترجع width * height
  • perimeter — دالة (method) (self: Rectangle) -> number ترجع 2 * (width + height)

أنشئ متغيرًا rect من النوع Rectangle بـ width أبعاده 4، و height أبعاده 6، مع تنفيذ كلا الـ methods (تذكر معلمة self).

اطبع، كل منها في سطر منفصل (استدعِ الـ methods باستخدام بناء الجملة الخاص بالنقطة dot syntax، مع تمرير rect كـ self):

  1. مساحة المستطيل (area)
  2. محيط المستطيل (perimeter)
  3. عرض المستطيل (width)

جرّب بنفسك

-- اكتب الكود هنا
-- 1) عرّف النوع Rectangle بحقلين رقميين ودالتين
-- 2) أنشئ rect (width 4, height 6) ينفذ كلا الدالتين
-- 3) اطبع area و perimeter و width
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس مقدمة إلى Luau