تركيب Mixin والتحقق من الواجهات
ادمج جداول سلوك متعددة وتحقّق من توافق الواجهة
تركيب Mixin والتحقق من الواجهات درس مجاني في Lua Academy على CoddyKit. هذا هو الدرس 3 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Lua Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Lua Academy 4 دروس في المجموع.
ما هي Mixins؟
Mixins هي جداول من الطرق تُنسخ إلى صنف. وهي توفر السلوك دون الحاجة إلى علاقة توريث — ولذلك تناسب الاهتمامات المشتركة بين مكونات متعددة.
تطبيق Mixin بسيط
انسخ الطرق من جدول mixin إلى الصنف الهدف.
local Serializable = {
serialize = function(self)
local parts = {}
for k, v in pairs(self) do
parts[#parts+1] = k .. "=" .. tostring(v)
end
return "{" .. table.concat(parts, ", ") .. "}"
end
}
local function mixin(cls, ...)
for _, m in ipairs({...}) do
for k, v in pairs(m) do
if cls[k] == nil then cls[k] = v end
end
end
end
mixin(Animal, Serializable)
print(cat:serialize())الاستبدال مقابل عدم الاستبدال
Decide whether mixins should overwrite existing methods. The example above uses if cls[k] == nil to prevent overwriting. Remove the check to allow overwriting.
Mixins متعددة
طبّق عدة Mixins على فئة واحدة لتركيب السلوك من مصادر متعددة.
local Printable = { print = function(self) print(tostring(self)) end }
local Comparable = { eq = function(self, other) return self.id == other.id end }
mixin(User, Serializable, Printable, Comparable)تعريف الواجهة
الواجهة عبارة عن جدول يسرد أسماء الأساليب المطلوبة. استخدمها لتوثيق العقد الذي يجب أن تفي به الفئة.
local IAnimal = {
"speak",
"move",
"eat",
}دالة التحقق من الواجهة
تحقّق من أن الفئة تنفّذ جميع الأساليب الموجودة في الواجهة.
local function implements(cls, interface)
for _, method in ipairs(interface) do
if type(cls[method]) ~= "function" then
return false, "Missing method: " .. method
end
end
return true
end
local ok, err = implements(Dog, IAnimal)
print(ok, err)فرض صارم للواجهة
استدعِ implements عند تعريف الفئة (أو تحميل الوحدة) لاكتشاف الأساليب المفقودة مبكرًا.
assert(implements(Dog, IAnimal))Duck Typing مقابل التحقق من الواجهات
تستخدم Lua أسلوب Duck Typing طبيعيًا (إذا كان الكائن يملك الأسلوب، فاستخدمه). تضيف عمليات التحقق الصريحة من الواجهات مزيدًا من الأمان للفرق الكبيرة وواجهات برمجة التطبيقات العامة.
Mixin مع حالة
ينبغي أن تكون Mixins عديمة الحالة عمومًا (أساليب فقط). قد تتسبب Mixins ذات الحالة في تعارضات إذا استخدمت عدة Mixins أسماء الحقول نفسها.
تطبيق Mixins بترتيب محدد
عندما تعرّف Mixins أسلوبًا بالاسم نفسه، يفوز الأسلوب المطبَّق أخيرًا. تحكّم في الترتيب عمدًا للحصول على سلوك متوقّع.
اختيار Mixin أم الوراثة
استخدم الوراثة للعلاقات القوية من نوع «هو كائن من». واستخدم Mixins للسلوكيات القابلة لإعادة الاستخدام التي تمتد عبر مكونات مختلفة، مثل التسجيل والتسلسل والمساواة.
سؤال حول Mixin
ما الميزة الأساسية لـ Mixins مقارنةً بالوراثة؟
مراجعة: Mixins والواجهات
تنسخ Mixins الأساليب إلى الفئات لإضافة سلوكيات تمتد عبر مكونات مختلفة. توثّق الواجهات الأساليب المطلوبة، ويمكن التحقق منها عند وقت التحميل. وتمكّنك معًا من تركيب مرن يتجاوز الوراثة الأحادية.
الأسئلة الشائعة
هل درس «تركيب Mixin والتحقق من الواجهات» مجاني؟
نعم — نص درس «تركيب Mixin والتحقق من الواجهات» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Lua Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Lua Academy 4 دروس في المجموع.
ماذا ستتعلم في «تركيب Mixin والتحقق من الواجهات»؟
ادمج جداول سلوك متعددة وتحقّق من توافق الواجهة تتمرن على Lua Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Lua Academy؟
لا تُشترط خبرة سابقة. Lua Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 3 من أصل 4.
كم من الوقت يستغرق درس «تركيب Mixin والتحقق من الواجهات»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Lua Academy هذا؟
نعم. كل درس في Lua Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- تصميم الفئة الأساسية والمنشئ
- الوراثة متعددة المستويات
- تركيب Mixin والتحقق من الواجهات
- instanceof واستبطان النوع