الدرس 3 من 10
الجمل الشرطية
- 12 دقيقة
- 5 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
nil و false وحدهما خاطئان
الشرح
if cond then ... end تنفّذ كتلتها إن صدق الشرط، وelseif تعرض شرطًا آخر، وelse لما بقي، وend واحدة تُغلق السلسلة كلها. والفروع تُفحص بالترتيب ويُنفَّذ أول فرع صادق وحده. والشروط تُجمع بـ and وor وnot، و«لا يساوي» تُكتب ~= لا !=.
والفرق الأكبر عن اللغات الأخرى: في Lua قيمتان فقط خاطئتان، nil وfalse. أما 0 والنصّ الفارغ "" فصادقان. فـ if gold then تنجح والذهب صفر، وnot gold لا تعني «لا ذهب». قارن صراحةً: gold == 0 وguild ~= "".
وand وor تُرجعان أحد طرفيهما لا true أو false، ومنهما النمط الشائع cond and a or b بديلًا عن المعامل الثلاثي. لكنه ينكسر إن كانت a نفسها false أو nil: safe and false or true تعطي true دائمًا، لأن true and false تعطي false فيُكمل or إلى true.
المطلوب
بسلسلة if وelseif وelse اجعل status «ميت» إن كانت hp صفرًا أو أقلّ، و«حرج» إن كانت دون 30، وإلا «سليم». وguildLabel هو guild، أو «بلا نقابة» إن كان فارغًا. وbroke صحيح إن كان gold صفرًا. وcanAttack خاطئ داخل المنطقة الآمنة inSafeZone وصحيح خارجها.
معايير التصحيح
5 معايير- status «ميت» حين hp صفر
- التصنيف بسلسلة if و elseif
- guildLabel «بلا نقابة»: النصّ الفارغ صادق
- broke صحيح: الصفر ليس خاطئًا
- canAttack خاطئ في المنطقة الآمنة