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

أشكال الجداول مقابل الجداول الحرة

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

لديك الآن طريقتان للعمل مع جداول السجلات: الطريقة loose التي استخدمتها دائمًا في Lua، والأشكال المُعلنة. من المفيد التوقف قليلًا لرؤية ما الذي يقدمه كلٌّ منها.

يقبل table من نوع loose أي شيء. لهذه المرونة ثمن: إذا أخطأت في كتابة اسم حقل (user.nmae) فستحصل بصمت على nil؛ وإذا نسيت حقلًا، فسيظهر الخطأ بعيدًا، أثناء التشغيل، في أي جزء من الكود يلمس هذه الفجوة أولًا:

local user = {name = "Ana", age = 20}
print(user.nmae) -- loose table: silently prints nil

أعلن شكلًا، وستنتقل تلك الأخطاء من وقت التشغيل إلى وقت التحرير. سيضع الفاحص علامة على الخطأ المطبعي لحظة كتابته، ويمكن لمحررك إكمال أسماء الحقول تلقائيًا، كما أن تصريح type يعمل أيضًا بوصفه توثيقًا لما يحتويه table:

type User = {name: string, age: number}
local user: User = {name = "Ana", age = 20}
print(user.nmae) -- ✗ type error: key 'nmae' not found in User

إذا كنت قادمًا من TypeScript، فلاحظ أن Luau لا تحتوي على الكلمة المفتاحية interface: إذ يتولى type التعامل مع كل شكل. ولا يوجد أيضًا مفهوم "دمج التصريحات": إن التصريح بنوعين بالاسم نفسه في النطاق نفسه يُعد خطأ، ولذلك يكون لكل شكل تعريف واحد بالضبط.

أشكال Luau بِنيوية: يطابق أي table يحتوي على الحقول الصحيحة من الأنواع الصحيحة، بغض النظر عن مكان أو طريقة إنشائه. ولا تزال لـtable من نوع loose استخداماتها: فالنصوص البرمجية السريعة والبيانات الديناميكية فعلًا لا تحتاج إلى شكل مُعلن. أما أي شيء يُمرَّر بين الدوال، فالشكل يلتقط الأخطاء وهي لا تزال قليلة التكلفة.

جرّب بنفسك

لا يتضمّن هذا الدرس تحدّيًا برمجيًا.

quiz iconاختبر نفسك

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

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

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