Jeffrey Cross
Jeffrey Cross

Simuler des constantes dans Actionscript 2.0

La plupart des gens contournent le manque de variables constantes dans Actionscript 2.0 en nommant simplement les variables de membre en toutes lettres majuscules et en se rappelant de ne pas modifier leur valeur. Cela fonctionne bien, si vous respectez les règles, mais que se passe-t-il si vous souhaitez appliquer une valeur constante afin qu'elle ne puisse pas être modifiée pendant l'exécution. Edgar De Loa nous a écrit à ce sujet aujourd'hui:

Les constantes ne sont pas inhérentes à ActionScript 2.0. Le plus proche serait de rendre quelque chose de privé et accessible globalement. Cependant, cela n’élimine pas le problème, car la variable pourrait encore être facilement modifiée et la notion de constante écrasante.

J'ai trouvé un moyen très simple de simuler des constantes. Après avoir regardé autour de moi, je n’ai trouvé personne d’autre qui ait suggéré et / ou utilisé cette méthode.

La première étape consiste à créer une classe statique et à définir une variable privée avec la valeur que vous souhaitez stocker. L'étape suivante consiste à ajouter une fonction publique qui renvoie la variable privée susmentionnée. Nommer la fonction identique à la variable privée (tout en majuscules) est un moyen simple et efficace d’accéder à la constante.

classe statique ConstantVars {private var ARRAY_SIZE = 12;

fonction publique ARRAY_SIZE () {return ARRAY_SIZE; }}

Alors maintenant, on peut utiliser ConstantVars.ARRAY_SIZE () pour accéder à la constante, sans aucun moyen de la modifier ou de s'en débarrasser. J’ai également constaté que nommer la classe de façon simple, comme «Const», rendrait tout encore plus simple et rapide.

Cela fonctionne, mais je pense que nous pouvons même faire mieux.

En utilisant une méthode "getter" statique, vous pouvez récupérer une valeur constante imposée et vous n'avez pas besoin d'utiliser la notation de parenthèse normale d'une fonction pour y accéder. Vous pouvez l'utiliser dans une classe statique "Const" plus globale, comme Edgar le décrit pour des variables plus globales. Vous pouvez également encapsuler la constante statique dans n’importe quelle classe normale, ce qui est pratique si la constante est pertinente pour une classe particulière (au lieu d’une simple variable const globale).

Par exemple, supposons que vous ayez une classe qui authentifie un utilisateur. Ce n’est pas une classe statique. Certaines variables membres et quelques méthodes permettent d’authentifier et de stocker les informations d’identité d’un utilisateur. Il contient également quelques chaînes de messages pertinentes pour le processus d'authentification, que vous pouvez souhaiter mettre à la disposition d'autres parties de l'application, mais vous voulez vous assurer que ces chaînes sont des constantes et qu'elles ne sont pas modifiées accidentellement au moment de l'exécution:

authentification de classe {private var guid; nom d'utilisateur var privé; mot de passe var privé; serveur var privé;

fonction statique publique get SUCCESS_MSG (): String {return "Login réussie"; } fonction statique publique get NOSUCHUSER_MSG (): String {return "L'utilisateur n'a pas été trouvé"; } fonction statique publique get SERVERERROR_MSG (): String {return "Une erreur s'est produite lors de la connexion au serveur"; }

fonction publique Authentification (serveur, nom d'utilisateur, mot de passe) {...} fonction publique authenticate (): String {// Effectue l'authentification et renvoie l'une des chaînes d'erreur constante} ...}.

Désormais, le code de votre classe d'authentification peut faire directement référence à NOSUCHUSER_MSG, tandis que le code externe à la classe peut accéder aux valeurs constantes d'une manière simple, comme Authentication.SERVERERROR_MSG. Dans ce scénario, cela pourrait être très utile, car la classe d’authentification peut transmettre les informations de réussite / d’erreur et les classes externes peuvent savoir ce que le texte signifie, même s’il a été modifié dans une autre traduction. Une autre classe pourrait faire quelque chose comme ceci pour authentifier un utilisateur:

Authentification userauth = nouvelle Authentification (nom_serveur, utilisateur, passe); var result = userauth.authenticate (); if (result! = Authentication.SUCCESS_MSG) {displayError (result); }

C’est un exemple vraiment simplifié - et il existe probablement un meilleur exemple qui ne m’a pas immédiatement préoccupé - mais vous avez l’idée. La syntaxe constante prend en charge les constantes réelles dans Actionscript 3.0, mais si vous travaillez sur un projet AS2, il existe toujours une solution qui vous donnera le même effet.

Part

Laisser Un Commentaire