Menu
CoddyTech

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

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

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

يستخدم حقل الطريقة صياغة نوع الدالة التي تعلمتها في فصل الدوال. وتُسمّى وسيطتها الأولى عادةً 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: النقطتان. يربط الدرس التالي صياغة : بهذه الأشكال ذات الأنواع.

challenge icon

التحدي

سهل

أضف إلى شكل المستطيل دالةً تحسب مساحته.

  1. اكتب type Rectangle = {width: number, height: number, area: (self: Rectangle) -> number}.
  2. أنشئ local rect: Rectangle بعرض 4 وارتفاع 6، واجعل area = function(self: Rectangle): number تُرجع self.width * self.height.
  3. اطبع rect.area(rect)، ثم rect.width.

اضغط على تشغيل الكود: سيعرض الناتج 24 و4.

جرّب بنفسك

-- 1) عرّف النوع Rectangle مع width وheight ودالة area
-- 2) عرّف rect محليًا من النوع Rectangle (بقيمة width تساوي 4 وheight تساوي 6) مع تنفيذ دالة area
-- 3) اطبع المساحة، ثم العرض

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

تدرّب بنفسك: مترجم Luau عبر الإنترنت