عدم وجود التحميل الزائد للمشغل في ActionScript 3.0

StackOverflow https://stackoverflow.com/questions/51007

  •  09-06-2019
  •  | 
  •  

سؤال

أحد الأشياء التي أفتقدها أكثر في ActionScript هو عدم وجود تحميل زائد للمشغل، على وجه الخصوص ==.لقد قمت بحل هذه المشكلة عن طريق إضافة طريقة "مقارنة" إلى فصولي الدراسية، لكن هذا لا يساعد في كثير من الحالات، مثل عندما تريد استخدام أشياء مثل القاموس المدمج.

هل هناك طريقة جيدة للتغلب على هذه المشكلة؟

هل كانت مفيدة؟

المحلول

لا.

لكن لا يضر الإضافة equals طرق لفصولك الخاصة.أحاول أن لا تستخدم أبدا == عند مقارنة الكائنات (وينطبق الشيء نفسه على ===, ، وهو نفس الشيء بالنسبة للكائنات) لأنه يتحقق فقط هوية .

من المؤسف أن جميع المجموعات في Flash وFlex تفترض أن الهوية هي المقياس الوحيد المطلوب للمساواة.

هناك تلميحات في فليكس بأن هناك من أراد التخفيف من هذه المشكلة في وقت ما، ولكن يبدو أنه تم التخلي عنها:هناك واجهة تسمى IUID, ، و هو مذكور في دليل مطور فليكس ولكن لا يتم استخدامه في أي مكان.ولا حتى المجموعات الموجودة في Flex تستخدمها لتحديد المساواة.وبما أنك تطلب حلاً لمشكلة Flash، فربما لم يساعدك على أي حال.

لقد كتبت المزيد عن هذا (في سياق Flex) على مدونتي: أليس هناك مساواة؟.

نصائح أخرى

نعم يمكن القيام بذلك (ولكن كن حذرًا، فهو مخترق): http://filimanjaro.com/2012/operators-overloading-in-as3-javascript-too-%E2%80%93-workaround/

كتبت في البرنامج التعليمي عن +=, -= التحميل الزائد للمشغل.ولكن من الممكن أيضًا باستخدام ==، يمكنني أن أكتب المزيد عن ذلك إذا لم يكن الأمر واضحًا.

آه، هذا النهج له بعض العيوب (في حالات نادرة يمكن أن يكون خطيرًا).فكر مرتين قبل استخدامه في الإنتاج.

يحرر:

بعد الاختبارات يبدو أن الخدعة مع +=، -= لا تنطبق على عامل التشغيل == (ما هو منطقي).آسف للمعلومات المضللة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top