الدرس 9 من 10

عمليات على كائناتك

هدف الدرس

__add و __eq و __lt و __tostring

01

الشرح

الجدول الوصفي لا يقتصر على __index. فيه تعرّف معنى العمليات على كائناتك: __add لـ a + b، و__eq لـ ==، و__lt لـ < ومعها >، لأن a > b تُقرأ b < a، و__tostring لما يعرضه print وtostring.

فتكتب pos + velocity كما في الرياضيات، بدل أن تجمع x وy بيدك في كل مكان. وبلا __eq يسأل == «هل هما الجدول نفسه؟»، فلا يتساوى متّجهان بالإحداثيات نفسها. وبلا __tostring يطبع print شيئًا مثل table: 0x10fb78. أمّا .. فلا تمرّ بـ __tostring: اكتب "الموقع " .. tostring(pos).

والفخّ في __add: أن تعدّل a وتُرجعه. يبدو الجمع صحيحًا، لكن local nextPos = pos + velocity تحرّك pos نفسه بصمت. أرجِع دائمًا متّجهًا جديدًا بـ Vector2.new.

02

المطلوب

أضف إلى Vector2 أربع دوال: __add تُرجع متّجهًا جديدًا، و__eq تقارن x وy، و__lt تجعل الأقصر طولًا هو الأصغر، و__tostring تُرجع نصًّا مثل (3, -1).

معايير التصحيح

6 معايير
  1. + يجمع الإحداثيات
  2. ولا يغيّر المتّجه الأصلي
  3. ناتج الجمع متّجه مثل طرفيه
  4. == يقارن الإحداثيات
  5. < يجعل الأقصر أصغر
  6. tostring يعرض (x, y)
main.lua
المخرجاتLua 5.4 · wasmoon

جارٍ تحميل Lua…

–/6

يبدأ الفحص حين تجهز البيئة.

6 معايير في بطاقة «المطلوب».