Фалшиви константи в Actionscript 2.0 - 💡 Fix My Ideas

Фалшиви константи в Actionscript 2.0

Фалшиви константи в Actionscript 2.0


Автор: Ethan Holmes, 2019

Повечето хора се справят с липсата на постоянни променливи на Actionscript 2.0, като просто назоват променливите на членовете във всички главни букви и не забравят да променят стойността им. Това работи добре, ако приемем, че спазвате правилата, но какво ще стане, ако искате да приложите постоянна стойност, така че да не може да се променя по време на изпълнение. Едгар Де Лоа ни пише за това днес:

Константите не са присъщи на ActionScript 2.0. Най-близкото, което можете да получите, е да направите нещо частно и глобално достъпно. Това обаче не подобрява проблема, тъй като променливата все още може лесно да бъде променена и понятието, че тя е постоянна, смачкана.

Намерих много лесен начин да симулирам константи. След като се огледах, не открих никой друг, който да е предложил и / или използвал този метод.

Първата стъпка е да създадете статичен клас и да дефинирате частна променлива със стойността, която бихте искали да съхраните. Следващата стъпка е да добавите публична функция, която връща гореспоменатата частна променлива. Наименуването на функцията, идентична на частната променлива (всички в шапки), е чудесен и лесен начин за достъп до константата.

статичен клас ConstantVars {частен var ARRAY_SIZE = 12;

публична функция ARRAY_SIZE () {return ARRAY_SIZE; }}

Така че сега, можете да използвате ConstantVars.ARRAY_SIZE () за достъп до константата, без начин да го промените или да се отървете от нея. Открих също, че именуването на класа нещо просто, като „Const“, ще направи всичко още по-бързо и просто.

Това работи, но мисля, че дори можем да направим нещо по-добро.

Като използвате статичен метод "getter", можете да извлечете принудителна постоянна стойност и не е необходимо да използвате нормална нотация на скобите за достъп до нея. Можете да го използвате в по-глобален статичен клас "Const", както Едгар описва за повече глобални променливи. Алтернативно, можете да капсулирате статичната константа във всеки нормален клас, което е удобно, ако константата е подходяща за определен клас (вместо просто глобална константна променлива).

Например, да кажем, че имате клас, който удостоверява потребителя. Това не е статичен клас. Той има някои променливи на член и няколко метода, които се занимават с удостоверяване и съхраняване на потребителски идентификационни данни. Също така има няколко низове за съобщения, които са подходящи за процеса на удостоверяване, които може да искате да са достъпни за други части на приложението, но искате да се уверите, че тези низове са константи и не са случайно променени по време на изпълнение:

клас Authentication {private var guid; частно var потребителско име; частна парола; частен var сървър;

публична статична функция SUCCESS_MSG (): String {връщане "Входът е успешен"; } публична статична функция NOSUCHUSER_MSG (): String {return "Потребителят не е намерен"; } публична статична функция: SERVERERROR_MSG (): String {връщане "Възникна грешка при свързването със сървъра"; }

public function Authentication (сървър, потребителско име, парола) {...} public function authenticate (): String {// Извършва удостоверяването и връща една от низовете на постоянна грешка} ...}

Сега кодът в класа ви за удостоверяване може да се отнася директно до NOSUCHUSER_MSG, а кодът, който е външен за класа, може да има достъп до константните стойности по прост начин като Authentication.SERVERERROR_MSG. В този сценарий това може да бъде доста полезно, тъй като класът за удостоверяване може да предава информация за успех / грешка наоколо, а външните класове могат да знаят какво означава текстът, дори ако е променен в друг превод. Друг клас може да направи нещо подобно на следното за удостоверяване на потребител:

Удостоверяване userauth = ново удостоверяване (име на сървъра, потребител, пас); var result = userauth.authenticate (); if (result! = Authentication.SUCCESS_MSG) {displayError (резултат); }

Това е наистина опростен пример - и вероятно има по-добър пример, който не ми дойде веднага - но вие получавате идеята. Реалните константи се поддържат в Actionscript 3.0, използвайки синтаксиса const, но ако работите върху AS2 проект, все още има решение за вас, което ще ви даде същия ефект.



Може Да Се Интересувате

Победител в CNC машинна обработка: Viva La Four Axis Delta Router!

Победител в CNC машинна обработка: Viva La Four Axis Delta Router!


Нискотарифните жилища се увеличават

Нискотарифните жилища се увеличават


Разширено създаване на PCB за хората

Разширено създаване на PCB за хората


Къде са те сега? Издание за CNC мелница

Къде са те сега? Издание за CNC мелница