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

Self والدوال المسبوقة بنقطتين (Colon Methods)

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

تعمل كتابة rect.area(rect)، لكنك تعلّمت طريقة أفضل في Lua OOP: colon. إن rect:area() هو الاستدعاء نفسه تمامًا: تمرّر Lua الجدول الموجود قبل النقطتين كوسيط أول، وهو self، تلقائيًا.

يساعدك colon أيضًا في موضع التعريف. يعلن function account:deposit(amount) عن وسيط أول مخفي اسمه self نيابةً عنك:

type Account = {
    owner: string,
    balance: number,
    deposit: (self: Account, amount: number) -> (),
    getBalance: (self: Account) -> number,
}

local account = {owner = "Maya", balance = 1500}

function account:deposit(amount: number)
    self.balance += amount -- self ضمني
end

function account:getBalance(): number
    return self.balance
end

لاحظ كيف يعلن الشكل عن self بشكل صريح، deposit: (self: Account, amount: number) -> ()، رغم أن colon يخفيه في التنفيذ. إن colon مجرد اختصار؛ فالوسيط لا يزال موجودًا، ويكتبه النوع بوضوح. تُكتب صيغة نوع method التي لا تُرجع شيئًا باستخدام قيمة الإرجاع الفارغة -> ().

يتبع الاستدعاء القاعدة نفسها التي تعرفها بالفعل: account:deposit(250) مطابق تمامًا لـ account.deposit(account, 250). السلوك نفسه وقت التشغيل كما في فصل OOP لديك: يضيف Luau الأنواع فوق ذلك فحسب.

challenge icon

التحدي

سهل

أنشئ اسمًا مستعارًا من النوع باسم Account مع:

  • owner من النوع string
  • balance من النوع number
  • deposit: (self: Account, amount: number) -> ()
  • getBalance: (self: Account) -> number

أنشئ جدولًا account مع owner بقيمة "Maya" وbalance بقيمة 1500، ثم أرفق كلتا الطريقتين باستخدام صيغة colon definitions (function account:deposit(amount: number) …). تضيف deposit قيمة amount إلى balance؛ وتُرجع getBalance قيمة balance الحالية.

باستخدام colon calls:

  1. اطبع قيمة balance
  2. نفّذ deposit بالقيمة 250
  3. اطبع قيمة balance مرة أخرى
  4. اطبع قيمة owner

جرّب بنفسك

-- اكتب الكود هنا
-- 1) عرّف النوع Account (الدوال تأخذ self بشكل صريح في النوع)
-- 2) أنشئ جدول الحساب، ثم اربط deposit/getBalance بصيغة النقطتين
-- 3) اطبع الرصيد، أودع 250، اطبع الرصيد مرة أخرى، اطبع المالك
quiz iconاختبر نفسك

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

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

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