الدرس 10 من 10
حفظ الجدول نصًّا
- 15 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
دالة تنادي نفسها بترتيب ثابت
الشرح
print(save) لا يطبع إلا table: 0x…. ولحفظ اللعبة، أو لرؤية حالتها وأنت تتتبّع خطأً، تحتاج الجدول نصًّا مقروءًا. والجدول قد يحوي جداول تحوي جداول، فالحلّ دالة تنادي نفسها: القيمة البسيطة تتحوّل مباشرة، وكل مدخل في الجدول يصير key = متبوعًا بـ serialize لقيمته.
ورتّب المفاتيح قبل الكتابة. pairs لا تَعِد بترتيب، فبلا ترتيب يخرج الحفظ نفسه بنصّين مختلفين بين تشغيل وآخر، فلا تستطيع مقارنة ملفّي حفظ ولا كتابة اختبار يطابق النصّ. والناتج بهذا الشكل كود Lua صالح ما دامت مفاتيح النصوص أسماء عادية: load("return " .. text)() يعيده جدولًا.
والفخّ: جدول فيه مفاتيح أرقام ونصوص معًا، مثل { "سيف", gold = 50 }. table.sort بلا مقارِن ترمي attempt to compare بين رقم ونصّ. فاكتب مقارِنًا يقدّم الأرقام على النصوص، ويقارن كل نوع بمثله.
المطلوب
اكتب serialize(value): النصّ بين علامتي تنصيص، والرقم والقيمة المنطقية كما يعطيهما tostring، والجدول بين {} ومداخله مفصولة بـ ", "، مفتاح الرقم بالشكل [1] = ومفتاح النصّ gold = ، الأرقام أولًا تصاعديًّا ثم النصوص أبجديًّا. فيصير { "سيف", gold = 50 } النصّ {[1] = "سيف", gold = 50}.
معايير التصحيح
5 معايير- القيم البسيطة
- مفاتيح الجدول مرتّبة
- مفاتيح الأرقام بين قوسين وقبل النصوص
- الجداول المتداخلة والفارغة
- النصّ يُقرأ جدولًا من جديد