Φασματικές σταθερές στην Actioncript 2.0 - 💡 Fix My Ideas

Φασματικές σταθερές στην Actioncript 2.0

Φασματικές σταθερές στην Actioncript 2.0


Συγγραφέας: Ethan Holmes, 2019

Οι περισσότεροι άνθρωποι απομακρύνονται από την έλλειψη σταθερών μεταβλητών του Actioncript 2.0 με την ονομασία των μεταβλητών μελών με όλα τα κεφαλαία γράμματα και θυμόμαστε να μην αλλάξουμε την αξία τους. Αυτό λειτουργεί καλά, υποθέτοντας ότι υπακούτε στους κανόνες, αλλά τι γίνεται αν θέλετε να επιβάλλετε μια σταθερή τιμή, ώστε να μην μπορεί να αλλάξει κατά τη διάρκεια του χρόνου εκτέλεσης. Ο Edgar De Loa μας έγραψε σήμερα:

Τα σταθερά δεν είναι εγγενή στην ActionScript 2.0. Ο πλησιέστερος μπορεί να πάρει είναι να κάνει κάτι ιδιωτικό και προσβάσιμο παγκοσμίως. Ωστόσο, αυτό δεν βελτιώνει το πρόβλημα, καθώς η μεταβλητή θα μπορούσε να αλλάξει εύκολα και η ιδέα της να είναι μια συνεχής συντριβή.

Έχω βρει έναν πολύ εύκολο τρόπο για να προσομοιώσω σταθερές. Μετά από να κοιτάξουμε γύρω μας, δεν έχω βρει κανέναν άλλο που να έχει προτείνει και / ή να χρησιμοποιήσει αυτή τη μέθοδο.

Το πρώτο βήμα είναι να δημιουργήσετε μια στατική κλάση και να ορίσετε μια ιδιωτική μεταβλητή με την τιμή που θα θέλατε να αποθηκεύσετε. Το επόμενο βήμα είναι να προσθέσετε μια δημόσια λειτουργία που επιστρέφει την προαναφερθείσα ιδιωτική μεταβλητή. Ονομάζοντας την ίδια λειτουργία με την ιδιωτική μεταβλητή (all in caps), είναι ένας μεγάλος και εύκολος τρόπος πρόσβασης στην σταθερά.

Στατική κλάση ConstantVars {ιδιωτική var ARRAY_SIZE = 12;

δημόσια λειτουργία ARRAY_SIZE () {επιστροφή ARRAY_SIZE; }}

Τώρα λοιπόν, μπορούμε να χρησιμοποιήσουμε το ConstantVars.ARRAY_SIZE () για να αποκτήσετε πρόσβαση στη σταθερά, χωρίς να αλλάξετε ή να απαλλαγείτε από αυτό. Έχω επίσης διαπιστώσει ότι η ονομασία της κλάσης κάτι απλό, όπως το "Const" θα κάνει τα πάντα ακόμα πιο γρήγορα και απλά.

Αυτό λειτουργεί, αλλά νομίζω ότι μπορούμε ακόμη και να κάνουμε έναν καλύτερο.

Χρησιμοποιώντας μια στατική μέθοδο "getter", μπορείτε να ανακτήσετε την επιβαλλόμενη σταθερή τιμή και δεν χρειάζεται να χρησιμοποιήσετε την κανονική παρένθεση μιας συνάρτησης για να την αποκτήσετε πρόσβαση. Μπορείτε να το χρησιμοποιήσετε σε μια παγκόσμια στατική κατηγορία "Const" όπως περιγράφει ο Edgar για περισσότερες παγκόσμιες μεταβλητές. Εναλλακτικά, μπορείτε να ενσωματώσετε τη στατική σταθερά σε οποιαδήποτε κανονική κλάση, η οποία είναι βολική εάν η σταθερά είναι σχετική με μια συγκεκριμένη κλάση (αντί για απλώς μια μεταβλητή global const).

Για παράδειγμα, ας υποθέσουμε ότι είχατε μια κλάση που πιστοποιεί ένα χρήστη. Δεν είναι μια στατική τάξη. Έχει μερικές μεταβλητές μελών και μερικές μεθόδους που εξετάζουν τον έλεγχο ταυτότητας και την αποθήκευση των διαπιστευτηρίων ενός χρήστη. Έχει επίσης μερικές συμβολοσειρές μηνυμάτων που σχετίζονται με τη διαδικασία ελέγχου ταυτότητας, τις οποίες ίσως θέλετε να είναι διαθέσιμες σε άλλα μέρη της εφαρμογής, αλλά θέλετε να βεβαιωθείτε ότι αυτές οι συμβολοσειρές είναι σταθερές και δεν αλλάζουν κατά λάθος κατά το χρόνο εκτέλεσης:

class Authentication {ιδιωτικό var guid; ιδιωτικό όνομα χρήστη var; ιδιωτικός κωδικός var; ιδιωτικός διακομιστής var;

Δημόσια στατική λειτουργία παίρνει SUCCESS_MSG (): String {επιστροφή "Η επιτυχής είσοδος"; } Δημόσια στατική λειτουργία get NOSUCHUSER_MSG (): String {επιστροφή "Ο χρήστης δεν βρέθηκε"; } Δημόσια στατική λειτουργία παίρνει SERVERERROR_MSG (): String {επιστροφή "Υπήρξε ένα σφάλμα κατά τη σύνδεση με το διακομιστή"? }}

Δημόσια λειτουργία Authentication (server, όνομα χρήστη, κωδικός πρόσβασης) {...} δημόσια λειτουργία authenticate (): String {// Εκτελεί τον έλεγχο ταυτότητας και επιστρέφει μία από τις συμβολοσειρές συνεχούς σφάλματος ...}

Τώρα, ο κώδικας μέσα στην τάξη ελέγχου ταυτότητας μπορεί να αναφέρεται απευθείας στο NOSUCHUSER_MSG και ο κωδικός που είναι εξωτερικός της κλάσης μπορεί να έχει πρόσβαση στις σταθερές τιμές με έναν απλό τρόπο όπως το Authentication.SERVERERROR_MSG. Σε αυτό το σενάριο, αυτό θα μπορούσε να είναι αρκετά χρήσιμο, επειδή η τάξη ελέγχου ταυτότητας μπορεί να περάσει πληροφορίες επιτυχίας / σφάλματος και οι εξωτερικές τάξεις μπορούν να γνωρίζουν τι σημαίνει το κείμενο, ακόμα κι αν έχει αλλάξει σε άλλη μετάφραση. Μια άλλη κλάση θα μπορούσε να κάνει κάτι σαν το ακόλουθο για την εξακρίβωση της ταυτότητας ενός χρήστη:

Έλεγχος ταυτότητας userauth = νέος έλεγχος ταυτότητας (servername, user, pass); var αποτέλεσμα = userauth.authenticate (); if (αποτέλεσμα! = Authentication.SUCCESS_MSG) {displayError (αποτέλεσμα); }}

Αυτό είναι ένα πολύ απλοποιημένο παράδειγμα - και πιθανότατα υπάρχει ένα καλύτερο παράδειγμα που δεν έρχεται αμέσως στο νου - αλλά έχετε την ιδέα. Οι πραγματικές σταθερές υποστηρίζονται στη ActionScript 3.0 χρησιμοποιώντας τη σύνταξη syntax, αλλά αν εργάζεστε σε ένα έργο AS2, υπάρχει ακόμα μια λύση για εσάς που θα σας δώσει το ίδιο αποτέλεσμα.



Μπορεί Να Σας Ενδιαφέρει

Κάνοντας Νομική - Τι υπάρχει στην Εργαλειοθήκη σας;

Κάνοντας Νομική - Τι υπάρχει στην Εργαλειοθήκη σας;


Soapbox - Zen και η τέχνη της κατασκευής

Soapbox - Zen και η τέχνη της κατασκευής


Τα υψηλής τεχνολογίας Hobbits της πέστροφας Gulch

Τα υψηλής τεχνολογίας Hobbits της πέστροφας Gulch


Η τηλεόρασή μου πέφτει!

Η τηλεόρασή μου πέφτει!