الدرس 9 من 10
عمليات على كائناتك
- 14 دقيقة
- 6 معايير للتصحيح
- 3 تلميحات
- إلى المطلوب
هدف الدرس
__add و __eq و __lt و __tostring
الشرح
الجدول الوصفي لا يقتصر على __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.
المطلوب
أضف إلى Vector2 أربع دوال: __add تُرجع متّجهًا جديدًا، و__eq تقارن x وy، و__lt تجعل الأقصر طولًا هو الأصغر، و__tostring تُرجع نصًّا مثل (3, -1).
معايير التصحيح
6 معايير- + يجمع الإحداثيات
- ولا يغيّر المتّجه الأصلي
- ناتج الجمع متّجه مثل طرفيه
- == يقارن الإحداثيات
- < يجعل الأقصر أصغر
- tostring يعرض (x, y)