نعود إلى لُوا وهذه المرة نستكمل سلسلة الدروس المتعلقة بها حيث توقفنا في الموضوع الأخير عند الأنواع والقيم - Types and Values
الجداول في لُوا، سهلة، قوية، مرنة ولا يمكن الاستغناء عنها أبداً !
الجداول هي الآلية الوحيدة في هيكلة البيانات في لوا.
تقوم الجداول بإنشاء مصفوفات ترابطية "Associative Arrays"، وهذا يعني أن المصفوفات يمكن فهرستها ليس فقط بالأرقام، ولكن مع أي قيمة إلا قيمة الفراغ nil. الجداول يمكن أن تكون غير متجانسة ويمكن أن تحتوي على قيم من جميع الأنواع باستثناء قيمة الفراغ nil.
لتمثيل السجلات (الخصائص)، تستخدم لوا اسم الحقل كفهرست. تدعم اللغة هذا التمثيل من خلال توفير a.name كتجميل برمجي لغوي إلى ["a["name.
تماماً كالفهرست، فقيمة حقل الجدول يمكن أن تكون من أي نوع باستثناء nil. على وجه الخصوص، لأن العمليات/functions هي قيم من الدرجة الأولى "first-class values"، حيث يمكن حتى لحقول الجدول أن تحتوي على العمليات أو الـ functions. وبالتالي يمكن أيضاً أن تحمل الجداول الأساليب أو ماتسمى بالـ methods.
الجداول عبارة عن كائنات "objects": المتغيرات في الواقع لا تحتوي على هذه القيم بل مراجع لهم فقط. فالتعيين، وتمرير العوامل، وعوائد العمليات تعود دائماً إلى ما يشير إلى هذه القيم؛ هذه العمليات لا تعني أي نوع من النسخ.
إنشاء الجدول يكون باستخدام قوسان مجعدان كما في { }
t = {} -- هنا نقوم بإنشاء الجدول
k = "x"
t[k] = 3.14 -- تعيين حقل جديد بالجدول بمفتاح يساوي "x" وقيمة تساوي "3.14"
print( t[k] ) --> 3.14
print( t["x"] ) --> 3.14
print( t.x ) --> 3.14
t[2] = "foo" -- تعيين حقل جديد بالجدول بمفتاح يساوي "2" وقيمة تساوي "foo"
print( t[2] ) --> "foo"
الوصول إلى المدخلات
في المثال أعلاه، تم الوصول إلى المدخل مع اسم الحقل "x" بطريقتين: الأولى كخاصية باستخدام عامل النقطة والثانية في مؤشر للمصفوفة باستخدام
t["x"]
وهناك خطأ شائع هو الخلط بين t.x مع [t[x. الأول هو ما يعادل ["t["x: وهو جدول فهرسته من قبل سلسلة/string بـ "x" والثاني هو جدول فهرسته من قبل قيمة المتغير x.
شكراً لاهتمامك!
التعليقات