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

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

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

من فصل Lua OOP الخاص بك، تعرف أن الجداول يمكنها الاحتفاظ بـ functions تمامًا مثل أي قيمة أخرى. ويمكن لـ shape وصف حقول function هذه أيضًا: أي تحويل shape إلى عقد صغير من data والسلوك.

يستخدم حقل method صيغة نوع function التي تعلمتها في فصل functions. وتُسمّى معاملته الأولى تقليديًا self، وهو الجدول الذي ينتمي إليه method، بل يمكن لـ shape أن يشير إلى نفسه أيضًا:

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

لتنفيذ shape، خزّن function في الحقل وامنحها معامل self ذلك:

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

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

تبدو كتابة الجدول مرتين غير أنيقة، وأنت تعرف بالفعل حل Lua: النقطتان. يربط الدرس التالي صيغة : بهذه الأشكال المكتوبة الأنواع.

challenge icon

التحدي

سهل

أنشئ اسمًا مستعارًا لنوع باسم 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، مع تنفيذ both من methods (تذكّر معامل self).

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

  1. مساحة المستطيل
  2. محيط المستطيل
  3. عرض المستطيل

جرّب بنفسك

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

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

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

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