تزوير الثوابت في Actionscript 2.0 - 💡 Fix My Ideas

تزوير الثوابت في Actionscript 2.0

تزوير الثوابت في Actionscript 2.0


مؤلف: Ethan Holmes, 2019

يتغلب معظم الناس على نقص متغيرات Actionscript 2.0 من خلال تسمية متغيرات الأعضاء في جميع الحروف الكبيرة وتذكر عدم تغيير قيمتها. هذا يعمل بشكل جيد ، على افتراض أنك تطيع القواعد ، ولكن ماذا لو كنت تريد فرض قيمة ثابتة بحيث لا يمكن تغييرها أثناء وقت التشغيل. كتب إدغار دي لوا لنا عن هذا اليوم:

الثوابت ليست متأصلة في 2.0 actioncript. أقرب ما يمكن للمرء الحصول عليه هو جعل شيء ما خاصًا ويمكن الوصول إليه عالميًا. ومع ذلك ، فإن هذا لا يخفف المشكلة ، حيث لا يزال من الممكن تغيير المتغير بسهولة ، وفكرة كونه ثابتًا.

لقد وجدت طريقة سهلة للغاية لمحاكاة الثوابت. بعد الاطلاع حولي ، لم أجد أي شخص آخر اقترح و / أو استخدم هذه الطريقة.

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

فئة ثابتة ConstantVars {private var ARRAY_SIZE = 12؛

الوظيفة العامة ARRAY_SIZE () {return ARRAY_SIZE؛ }}

حتى الآن ، يمكن للمرء استخدام ConstantVars.ARRAY_SIZE () للوصول إلى الثابت ، دون أي وسيلة لتغييره أو التخلص منه. لقد وجدت أيضًا أن تسمية الفصل الدراسي شيئًا بسيطًا ، مثل "Const" سيجعل كل شيء أكثر سرعة وبساطة.

هذا يعمل ، لكنني أعتقد أنه يمكننا القيام بعمل أفضل.

باستخدام طريقة "getter" ثابتة ، يمكنك استرداد القيمة الثابتة المفروضة ولا تحتاج إلى استخدام رمز الأقواس الطبيعي للوظيفة للوصول إليها. يمكنك استخدام هذا في فئة "Const" ثابتة أكثر عالمية كما يصف Edgar لمزيد من المتغيرات العامة. بدلاً من ذلك ، يمكنك تغليف الثابت الثابت في أي فئة عادية ، وهو أمر مفيد إذا كان الثابت ذا صلة بفئة معينة (بدلاً من مجرد متغير متغير عمومي).

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

مصادقة الفئة {private var guid؛ اسم مستخدم var الخاص ؛ فار كلمة المرور الخاصة. خادم فار الخاص ؛

الحصول على وظيفة ثابتة عامة SUCCESS_MSG (): سلسلة {return "تسجيل الدخول ناجحة"؛ } الحصول على دالة ثابتة عامة NOSUCHUSER_MSG (): السلسلة {return "لم يتم العثور على المستخدم"؛ } الحصول على دالة ثابتة عامة على SERVERERROR_MSG (): السلسلة {return "حدث خطأ أثناء الاتصال بالخادم"؛ }

مصادقة الوظيفة العامة (الخادم ، اسم المستخدم ، كلمة المرور) {...} مصادقة الوظيفة العامة (): السلسلة {// تنفذ المصادقة وتُرجع إحدى سلاسل الخطأ الثابتة} ...}

الآن يمكن أن تشير الشفرة داخل فئة المصادقة إلى NOSUCHUSER_MSG مباشرةً ، ويمكن للرمز الخارجي للفصل الوصول إلى القيم الثابتة بطريقة بسيطة مثل Authentication.SERVERERROR_MSG. في هذا السيناريو ، قد يكون هذا مفيدًا للغاية ، لأن فئة المصادقة يمكنها تمرير معلومات النجاح / الخطأ ، ويمكن للفئات الخارجية معرفة معنى النص ، حتى لو تم تغييره في ترجمة أخرى. يمكن لفئة أخرى أن تفعل شيئًا مثل التالي لمصادقة مستخدم:

مصادقة userauth = مصادقة جديدة (servername ، مستخدم ، تمرير) ؛ var result = userauth.authenticate ()؛ if (result! = Authentication.SUCCESS_MSG) {displayError (result)؛ }

هذا مثال مبسط بالفعل - وربما يكون هناك مثال أفضل لم يتبادر إلى الذهن على الفور - لكنك حصلت على الفكرة. يتم دعم الثوابت الحقيقية في Actionscript 3.0 باستخدام بناء جملة const ، ولكن إذا كنت تعمل على مشروع AS2 ، فلا يزال هناك حل لك يمنحك التأثير نفسه.



قد تكون مهتمة

Metamason يفوز مسابقة الطباعة 3D مع أقنعة CPAP تخصيص

Metamason يفوز مسابقة الطباعة 3D مع أقنعة CPAP تخصيص


تستضيف قلعة القرن السادس عشر الفرنسية ماكينثون للتطفل على البيئة

تستضيف قلعة القرن السادس عشر الفرنسية ماكينثون للتطفل على البيئة


طوابع من المستقبل! - أسرع من السفر الخفيف و تورينج

طوابع من المستقبل! - أسرع من السفر الخفيف و تورينج


مراجعة كتاب + الهبة: ورقة الزهور

مراجعة كتاب + الهبة: ورقة الزهور