Μεταβλητές
Σημείωμα
Το Microsoft Power Fx είναι το νέο όνομα για τη γλώσσα τύπου των εφαρμογών καμβά. Αυτά τα άρθρα είναι σε εξέλιξη καθώς εξάγουμε τη γλώσσα από εφαρμογές καμβά, την ενοποιουμε με άλλα προϊόντα Microsoft Power Platform και την κάνουμε διαθέσιμη ως ανοιχτό κώδικα. Ξεκινήστε με την Επισκόπηση του Microsoft Power Fx για μια εισαγωγή στη γλώσσα.
Εάν έχετε χρησιμοποιήσει κάποιο άλλο εργαλείο προγραμματισμού, όπως η Visual Basic ή η JavaScript, μπορεί να αναρωτηθείτε: Πού βρίσκονται οι μεταβλητές; Το Microsoft Power Fx είναι λίγο διαφορετικό και απαιτεί μια διαφορετική προσέγγιση. Αντί να ψάχνετε για μια μεταβλητή όταν γράφετε έναν τύπο, σκεφθείτε: Τι θα έκανα σε ένα υπολογιστικό φύλλο;
Σε άλλα εργαλεία, ενδέχεται να έχετε εκτελέσει ρητά έναν υπολογισμό και να έχετε αποθηκεύσει τα αποτελέσματα σε μια μεταβλητή. Ωστόσο, το Power Fx και το Excel επαναλαμβάνουν αυτόματα τον υπολογισμό των τύπων καθώς αλλάζουν τα δεδομένα εισόδου, ώστε να μην χρειάζεται συνήθως να δημιουργείτε και να ενημερώνετε μεταβλητές. Εφαρμόζοντας αυτή την προσέγγιση όποτε είναι δυνατό, μπορείτε να δημιουργήσετε, να κατανοήσετε και να συντηρήσετε πιο εύκολα την εφαρμογή σας.
Σε ορισμένες περιπτώσεις, θα πρέπει να χρησιμοποιήσετε μεταβλητές στο Power Fx, πράγμα που επεκτείνει το μοντέλο του Excel, προσθέτοντας τύπους συμπεριφοράς. Αυτοί οι τύποι εκτελούνται όταν, για παράδειγμα, ένας χρήστης επιλέξει ένα κουμπί. Μέσα σε έναν τύπο συμπεριφοράς, είναι συχνά χρήσιμο να ορίσετε μια μεταβλητή που θα χρησιμοποιηθεί σε άλλους τύπους.
Γενικά, αποφύγετε τη χρήση μεταβλητών. Ωστόσο, μερικές φορές, μόνο μία μεταβλητή μπορεί να δώσει το αποτέλεσμα που θέλετε. Οι μεταβλητές δημιουργούνται έμμεσα και πληκτρολογούνται όταν εμφανίζονται στις συναρτήσεις που ορίζουν τις τιμές τους.
Μετάφραση του Excel στο Power Fx
Excel
Ας εξετάσουμε τον τρόπο λειτουργίας του Excel. Ένα κελί μπορεί να περιέχει μια τιμή, όπως έναν αριθμό ή μια συμβολοσειρά ή έναν τύπο που βασίζεται στις τιμές άλλων κελιών. Μόλις ο χρήστης εισαγάγει μια διαφορετική τιμή σε ένα κελί, το Excel υπολογίζει ξανά αυτόματα τους τύπους που εξαρτώνται από τη νέα τιμή. Δεν χρειάζεται να κάνετε προγραμματισμό για να ενεργοποιήσετε αυτή τη συμπεριφορά.
Στο παρακάτω παράδειγμα, το κελί A3 ορίζεται στον τύπο A1+A2. Εάν το A1ο ή το A2 αλλάξουν, το Α3 υπολογίζει εκ νέου αυτόματα για να απεικονίσει την αλλαγή. Αυτή η συμπεριφορά δεν απαιτεί καμία κωδικοποίηση εκτός του ίδιου του τύπου.
Το Excel δεν έχει μεταβλητές. Η τιμή ενός κελιού που περιέχει έναν τύπο αλλάζει με βάση τα δεδομένα εισόδου, αλλά δεν υπάρχει τρόπος να διατηρείτε στη μνήμη το αποτέλεσμα ενός τύπου και να το αποθηκεύετε σε ένα κελί ή οπουδήποτε αλλού. Εάν αλλάξετε την τιμή ενός κελιού, μπορεί να αλλάξει ολόκληρο το υπολογιστικό φύλλο και να χαθούν όλες οι προηγούμενες υπολογιζόμενες τιμές. Ένας χρήστης του Excel μπορεί να αντιγράψει και να επικολλήσει κελιά, αλλά η διαδικασία αυτή εκτελείται από τον χρήση με μη αυτόματο τρόπο και όχι με τύπους.
Power Fx
Η λογική που δημιουργείτε στο Power Fx συμπεριφέρεται σε μεγάλο βαθμό όπως το Excel. Αντί να ενημερώνετε κελιά, μπορείτε να προσθέτετε στοιχεία ελέγχου σε οποιοδήποτε σημείο μιας οθόνης και να τα ονομάζετε έτσι ώστε να μπορούν να χρησιμοποιηθούν σε τύπους.
Για παράδειγμα στο Power Apps, μπορείτε να αναπαραγάγετε τη συμπεριφορά του Excel σε μια εφαρμογή, προσθέτοντας ένα στοιχείο ελέγχου τύπου Ετικέτα, με την ονομασία Label1 και δύο στοιχεία ελέγχου τύπου Εισαγωγή κειμένου με την ονομασία TextInput1 και TextInput2. Εάν, στη συνέχεια, ορίσετε την ιδιότητα Text του στοιχείου Label1 σε TextInput1.Text + TextInput2.Text, θα εμφανίζει πάντα αυτόματα το άθροισμα όποιων αριθμών βρίσκονται στα στοιχεία ελέγχου TextInput1 και TextInput2.
Παρατηρήστε ότι το στοιχείο ελέγχου Label1 είναι επιλεγμένο, εμφανίζοντας τον τύπο Text που χρησιμοποιεί στη γραμμή τύπων, στο επάνω μέρος της οθόνης. Εδώ έχουμε τον τύπο TextInput1.Text + TextInput2.Text. Αυτός ο τύπος δημιουργεί μια εξάρτηση ανάμεσα σε αυτά τα στοιχεία ελέγχου, όπως ακριβώς δημιουργούνται εξαρτήσεις μεταξύ κελιών σε ένα βιβλίο εργασίας του Excel. Ας αλλάξουμε την τιμή του TextInput1:
Ο τύπος για το Label1 έχει επανυπολογιστεί αυτόματα, εμφανίζοντας τη νέα τιμή.
Στο Power Fx, μπορείτε να χρησιμοποιήσετε τύπους για να προσδιορίσετε όχι μόνο την κύρια τιμή ενός στοιχείου ελέγχου, αλλά και ιδιότητες όπως η μορφοποίηση. Στο επόμενο παράδειγμα, ένας τύπος για την ιδιότητα Color της ετικέτας θα εμφανίζει αυτόματα τις αρνητικές τιμές με κόκκινο χρώμα. H συνάρτηση If θα πρέπει να φαίνεται οικεία από το Excel:
If( Value(Label1.Text) < 0, Color.Red, Color.Black )
Μπορείτε να χρησιμοποιήσετε τύπους για ένα ευρύ φάσμα σεναρίων:
- Χρησιμοποιώντας το GPS της συσκευής σας, ένα στοιχείο ελέγχου χάρτη μπορεί να εμφανίσει την τρέχουσα θέση σας με έναν τύπο που χρησιμοποιεί τις συναρτήσεις Location.Latitude και Location.Longitude. Καθώς μετακινείστε, ο χάρτης θα παρακολουθεί αυτόματα τη θέση σας.
- Άλλοι χρήστες μπορούν να ενημερώσουν τις προελεύσεις δεδομένων. Για παράδειγμα, άλλοι χρήστες από την ομάδα σας μπορούν να ενημερώνουν στοιχεία σε μια λίστα του SharePoint. Όταν ανανεώνετε ένα αρχείο προέλευσης δεδομένων, οι εξαρτημένοι τύποι επανυπολογίζονται αυτόματα ώστε να απεικονίζουν τα ενημερωμένα δεδομένα. Προχωρώντας το παράδειγμα, μπορείτε να ορίσετε την ιδιότητα Items μιας συλλογής στον τύπο Filter( SharePointList ), η οποία θα εμφανίσει αυτόματα το πρόσφατα φιλτραρισμένο σύνολο των εγγραφών.
Επιδόματα
Η χρήση τύπων για τη δημιουργία εφαρμογών έχει πολλά πλεονεκτήματα:
- Εάν γνωρίζετε το Excel, γνωρίζετε και το Power Fx. Η γλώσσα του μοντέλου και των τύπων είναι ίδια.
- Εάν έχετε χρησιμοποιήσει άλλα εργαλεία προγραμματισμού, σκεφτείτε πόσος κώδικας θα χρειαζόταν για την ολοκλήρωση αυτών των παραδειγμάτων. Στη Visual Basic, θα έπρεπε να γράψετε ένα πρόγραμμα χειρισμού συμβάντων για το συμβάν αλλαγής σε κάθε στοιχείο ελέγχου εισαγωγής κειμένου. Ο κώδικας για τον υπολογισμό καθενός από αυτά είναι περιττός και θα μπορούσε να βγει εκτός συγχρονισμού ή θα έπρεπε πρώτα να συντάξετε μια κοινή υπορουτίνα. Στο Power Fx, τα επιτυγχάνετε όλα αυτά με έναν μόνο τύπο μίας γραμμής.
- Για να δείτε από πού προέρχεται το κείμενο του στοιχείου Label1, γνωρίζετε πού ακριβώς να κοιτάξετε: στον τύπο της ιδιότητας Text. Δεν υπάρχει άλλος τρόπος να επηρεάσετε το κείμενο αυτού του στοιχείου ελέγχου. Σε ένα παραδοσιακό εργαλείο προγραμματισμού, κάθε πρόγραμμα χειρισμού συμβάντων ή υπορουτίνα θα μπορούσε να αλλάξει την τιμή της ετικέτας, από οποιοδήποτε σημείο του προγράμματος. Αυτό σας δυσκολεύει να προσδιορίσετε πότε και πού άλλαξε μια μεταβλητή.
- Εάν ο χρήστης αλλάξει ένα στοιχείο ελέγχου ρυθμιστικού και, στη συνέχεια, αλλάξει γνώμη, μπορεί να επαναφέρει το ρυθμιστικό πίσω στην αρχική του τιμή. Και θα είναι σαν να μην είχε αλλάξει ποτέ τίποτα: η εφαρμογή εμφανίζει τις ίδιες τιμές στοιχείων ελέγχου όπως και πριν. Δεν υπάρχουν συνέπειες για τον πειραματισμό και την εφαρμογή του ερωτήματος "what if", όπως δεν υπάρχουν και στο Excel.
Γενικά, εάν μπορείτε να επιτύχετε ένα αποτέλεσμα χρησιμοποιώντας έναν τύπο, θα είναι καλύτερα. Αφήστε τη μηχανή τύπων στο Power Fx να δουλέψει για λογαριασμό σας.
Μάθετε πότε πρέπει να χρησιμοποιείτε μεταβλητές
Ας αλλάξουμε τον απλό αθροιστή μας ώστε να λειτουργεί σαν παλιά αριθμομηχανή, με ένα τρέχον σύνολο. Εάν επιλέξετε το κουμπί Προσθήκη, θα προσθέσετε έναν αριθμό στο τρέχον σύνολο. Εάν επιλέξετε το κουμπί Απαλοιφή, θα επαναφέρετε το τρέχον σύνολο στην τιμή μηδέν.
Εμφάνιση | Περιγραφή |
---|---|
Όταν ξεκινήσει η εφαρμογή, το τρέχον σύνολο είναι 0. Η κόκκινη κουκκίδα αντιπροσωπεύει το δάχτυλο του χρήστη στο πλαίσιο εισαγωγής κειμένου, όπου ο χρήστης εισάγει το 77. |
|
Ο χρήστης επιλέγει το κουμπί Προσθήκη. | |
Το 77 προστίθεται στο τρέχον σύνολο. Ο χρήστης επιλέγει ξανά το κουμπί Προσθήκη. |
|
Το 77 προστίθεται ξανά στο τρέχον σύνολο, με αποτέλεσμα 154. Ο χρήστης επιλέγει το κουμπί Απαλοιφή. |
|
Το τρέχον σύνολο επανέρχεται σε 0. |
Η αριθμομηχανή μας χρησιμοποιεί κάτι που δεν υπάρχει στο Excel: ένα κουμπί. Σε αυτή την εφαρμογή, δεν μπορείτε να χρησιμοποιήσετε μόνο τύπους για τον υπολογισμό του τρέχοντος συνόλου, επειδή η τιμή του εξαρτάται από μια σειρά ενεργειών που εκτελεί ο χρήστης. Αντίθετα, η καταγραφή και η ενημέρωση του τρέχοντος συνόλου πρέπει να γίνουν με μη αυτόματο τρόπο. Τα περισσότερα εργαλεία προγραμματισμού αποθηκεύουν αυτές τις πληροφορίες σε μια μεταβλητή.
Μερικές φορές θα χρειαστείτε μια μεταβλητή για να συμπεριφερθεί η εφαρμογή σας με τον τρόπο που θέλετε. Ωστόσο, η προσέγγιση παρέχεται με προειδοποιήσεις:
- Πρέπει να ενημερώσετε με μη αυτόματο τρόπο το τρέχον σύνολο. Ο αυτόματος επανυπολογισμός δεν θα το κάνει για εσάς.
- Το τρέχον σύνολο δεν μπορεί πλέον να υπολογιστεί με βάση τις τιμές άλλων στοιχείων ελέγχου. Εξαρτάται από το πόσες φορές ο χρήστης επέλεξε το κουμπί Προσθήκη και ποια τιμή ήταν στο στοιχείο ελέγχου εισαγωγής κειμένου κάθε φορά. Μήπως ο χρήστης εισήγαγε 77 και επέλεξε το κουμπί Προσθήκη δύο φορές ή μήπως καθόρισε τις τιμές 24 και 130 για κάθε μία από τις αθροίσεις; Δεν μπορείτε να καταλάβετε τη διαφορά όταν το σύνολο φτάσει τον αριθμό 154.
- Οι αλλαγές στο σύνολο μπορεί να προέρχονται από διαφορετικές διαδρομές. Σε αυτό το παράδειγμα, τόσο το κουμπί Add όσο και το κουμπί Clear, ενημερώνουν το σύνολο. Εάν η εφαρμογή δεν συμπεριφέρεται με τον αναμενόμενο τρόπο, ποιο κουμπί προκαλεί το πρόβλημα;
Χρησιμοποιήστε μια καθολική μεταβλητή
Για να δημιουργήσετε την αριθμομηχανή μας, απαιτείται μια μεταβλητή που περιέχει το τρέχον σύνολο. Οι απλούστερες μεταβλητές για να εργαστείτε με το Power Fx είναι οι καθολικές μεταβλητές.
Πώς λειτουργούν οι καθολικές μεταβλητές:
- Ορίζετε την τιμή της καθολικής μεταβλητής με τη συνάρτηση Set. Set( MyVar, 1 ) ορίζει την καθολική μεταβλητή MyVar στην τιμή 1.
- Μπορείτε να χρησιμοποιήσετε την καθολική μεταβλητή αναφέροντας το όνομα που χρησιμοποιείται με τη συνάρτηση Set. Στην περίπτωση αυτή, το MyVar θα επιστρέψει την τιμή 1.
- Οι καθολικές μεταβλητές μπορεί να περιέχουν οποιαδήποτε τιμή, όπως συμβολοσειρές, αριθμούς, εγγραφές και πίνακες.
Ας δημιουργήσουμε εκ νέου την αριθμομηχανή χρησιμοποιώντας μια καθολική μεταβλητή:
Προσθέστε ένα στοιχείου ελέγχου "Κείμενο εισαγωγής", με την ονομασία TextInput1, και δύο κουμπιά, με την ονομασία Button1 και Button2.
Ορίστε την ιδιότητα Text του στοιχείου Button1 σε "Add" και την ιδιότητα Text του στοιχείου Button2 σε "Clear".
Για να ενημερώνεται το τρέχον σύνολο όταν ένας χρήστης επιλέγει το κουμπί Προσθήκη ορίστε την ιδιότητά του OnSelect στον παρακάτω τύπο:
Σύνολο ( RunningTotal, RunningTotal + TextInput1.Text )
Η απλή ύπαρξη αυτού του τύπου καθιερώνει το RunningTotal ως καθολική μεταβλητή που κατέχει έναν αριθμό λόγω του τελεστή +. Μπορείτε να κάνετε αναφορά του RunningTotal σε οποιοδήποτε σημείο της εφαρμογής. Όποτε ο χρήστης ανοίγει αυτήν την εφαρμογή, το RunningTotal έχει μια αρχική τιμή κενής.
Την πρώτη φορά που ένας χρήστης επιλέγει το κουμπί Προσθήκη και το Ορισμός εκτελείται, το RunningTotal ορίζεται στην τιμή RunningTotal + TextInput1.
Για να ορίσετε το τρέχον σύνολο σε 0 κάθε φορά που ο χρήστης επιλέγει το κουμπί Εκκαθάριση, ορίστε την ιδιότητα OnSelect στον παρακάτω τύπο:
Σετ ( RunningTotal, 0 )
Προσθέστε ένα στοιχείο ελέγχου Ετικέτα και ορίστε την ιδιότητα Κείμενο σε RunningTotal.
Αυτός ο τύπος θα υπολογιστεί αυτόματα και θα εμφανίσει στο χρήστη την αξία του RunningTotal που αλλάζει με βάση τα κουμπιά που επιλέγει ο χρήστης.
Πραγματοποιήστε προεπισκόπηση της εφαρμογής και θα έχετε την αριθμομηχανή όπως περιγράφεται παραπάνω. Πληκτρολογήστε έναν αριθμό στο πλαίσιο κειμένου και πατήστε το κουμπί Add μερικές φορές. Όταν είστε έτοιμοι, επιστρέψτε στο περιβάλλον σύνταξης χρησιμοποιώντας το πλήκτρο Esc.
Για να εμφανίσει την τιμή της καθολικής μεταβλητής, επιλέξτε το μενού Αρχείο και επιλέξτε Μεταβλητές στο αριστερό τμήμα παραθύρου.
Για να εμφανίσετε όλα τα σημεία όπου η μεταβλητή έχει οριστεί και χρησιμοποιηθεί, επιλέξτε την.
Τύποι μεταβλητών
Το Power Fx διαθέτει δύο τύπους μεταβλητών:
Τύπος μεταβλητών | Εμβέλεια | Description | Συναρτήσεις που καθορίζουν |
---|---|---|---|
Καθολικές μεταβλητές | Εφαρμογή | Η πιο απλή στη χρήση. Περιέχει έναν αριθμό, μια συμβολοσειρά κειμένου, μια δυαδική τιμή, μια εγγραφή, έναν πίνακα κ.λπ., με αναφορές από οπουδήποτε στην εφαρμογή. | Βάζω |
Συλλογές | Εφαρμογή | Περιέχει έναν πίνακα που μπορεί να αναφέρεται από οπουδήποτε στην εφαρμογή. Επιτρέπει την τροποποίηση των περιεχομένων του πίνακα αντί τον ορισμό τους ως σύνολο. Μπορεί να αποθηκευτεί στην τοπική συσκευή για μελλοντική χρήση. | Συλλέγω ClearCollect |
Όταν χρησιμοποιείται στο Power Apps, υπάρχει ένας τρίτος τύπος μεταβλητής:
Τύπος μεταβλητών | Scope | Περιγραφή | Συναρτήσεις που καθορίζουν |
---|---|---|---|
Μεταβλητές περιβάλλοντος | Οθόνη | Ιδανικό για τη διαβίβαση τιμών σε μια οθόνη, όπως περίπου οι παράμετροι μιας διαδικασίας σε άλλες γλώσσες. Μπορεί να αναφέρεται μόνο από μία οθόνη. | ΕνημέρωσηΠεριβάλλον Πλέω |
Δημιουργία και κατάργηση μεταβλητών
Όλες οι μεταβλητές δημιουργούνται σιωπηρά όταν εμφανίζονται σε μια συνάρτηση Set, UpdateContext, Navigate, Collect ή ClearCollect. Για να δηλώσετε μια μεταβλητή και τον τύπο της, θα πρέπει να τη συμπεριλάβετε μόνο σε οποιαδήποτε από αυτές τις συναρτήσεις οπουδήποτε στην εφαρμογή σας. Καμία από αυτές τις συναρτήσεις δεν δημιουργεί μεταβλητές. Γεμίζουν μόνο τις μεταβλητές με τις τιμές. Δεν δηλώνετε ποτέ τις μεταβλητές ρητά όπως ενδεχομένως σε ένα άλλο εργαλείο προγραμματισμού και όλη η πληκτρολόγηση είναι σιωπηρή από τη χρήση.
Για παράδειγμα, μπορεί να έχετε ένα στοιχείο ελέγχου κουμπιού με έναν τύπο OnSelect ίσο με το Set( X, 1 ). Αυτός ο τύπος καθορίζει το X ως μεταβλητή με έναν τύπο αριθμού. Μπορείτε να χρησιμοποιήσετε το X σε τύπους ως αριθμό και αυτή η μεταβλητή έχει μια τιμή κενού μετά το άνοιγμα της εφαρμογής, αλλά πριν επιλέξετε το κουμπί. Όταν επιλέγετε το κουμπί, δίνετε στο X την τιμή 1.
Εάν προσθέσατε ένα άλλο κουμπί και ορίσετε την ιδιότητα OnSelect σε Set( X, "Hello" ), θα εμφανιστεί ένα σφάλμα επειδή ο τύπος (συμβολοσειρά κειμένου) δεν ταιριάζει με τον τύπο του προηγούμενου Συνόλου (αριθμός). Όλοι οι σιωπηροί ορισμοί της μεταβλητής πρέπει να συμφωνούν σχετικά με τον τύπο. Και πάλι, όλα αυτά συνέβησαν επειδή αναφέρατε το X στους τύπους και όχι επειδή κάποιος από αυτούς τους τύπους είχε όντως εκτελεστεί.
Μπορείτε να καταργήσετε μια μεταβλητή καταργώντας όλες τις συναρτήσεις Set, UpdateContext, Navigate, Collect ή ClearCollect που καθορίζουν σιωπηρά τη μεταβλητή. Χωρίς αυτές τις συναρτήσεις, η μεταβλητή δεν υπάρχει. Επίσης, θα πρέπει να καταργήσετε τυχόν αναφορές στη μεταβλητή, επειδή θα προκαλέσουν σφάλμα.
Μεταβλητή διάρκεια ζωής και αρχική τιμή
Όλες οι μεταβλητές διατηρούνται στη μνήμη κατά την εκτέλεση της εφαρμογής. Μετά το κλείσιμο της εφαρμογής, οι τιμές που διατήρησαν οι μεταβλητές χάνονται.
Μπορείτε να αποθηκεύσετε τα περιεχόμενα μιας μεταβλητής σε μια προέλευση δεδομένων χρησιμοποιώντας τις συναρτήσεις Patch ή Collect. Επίσης, μπορείτε να αποθηκεύσετε τιμές σε συλλογές στην τοπική συσκευή χρησιμοποιώντας τη συνάρτηση SaveData.
Όταν ο χρήστης ανοίγει την εφαρμογή, όλες οι μεταβλητές έχουν μια αρχική τιμή κενή.
Ανάγνωση μεταβλητών
Χρησιμοποιείτε το όνομα της μεταβλητής για να διαβάσετε την τιμή της. Για παράδειγμα, μπορείτε να ορίσετε μια μεταβλητή με αυτόν τον τύπο:
Set( Radius, 12 )
Στη συνέχεια, μπορείτε απλώς να χρησιμοποιήσετε την Ακτίνα οπουδήποτε μπορείτε να χρησιμοποιήσετε έναν αριθμό και θα αντικατασταθεί με το 12:
Pi() * Power( Radius, 2 )
Εάν δώσετε σε μια μεταβλητή περιβάλλοντος το ίδιο όνομα με μια καθολική μεταβλητή ή μια συλλογή, η μεταβλητή περιβάλλοντος έχει προτεραιότητα. Ωστόσο, μπορείτε ακόμα να αναφέρετε την καθολική μεταβλητή ή συλλογή, εάν χρησιμοποιήσετε τον τελεστή αποσαφήνισης[@Radius].
Χρήση μιας μεταβλητής περιβάλλοντος (Power Apps μόνο)
Ας δούμε πώς θα δημιουργούσαμε την αριθμομηχανή μας χρησιμοποιώντας μια μεταβλητή περιβάλλοντος αντί για μια καθολική μεταβλητή.
Πώς λειτουργούν οι μεταβλητές περιβάλλοντος:
- Προσδιορίζετε έμμεσα και ορίζετε μεταβλητές περιβάλλοντος χρησιμοποιώντας τη συνάρτηση UpdateContext ή Πλοήγηση. Όταν ξεκινά η εφαρμογή, η αρχική τιμή όλων των μεταβλητών περιβάλλοντος είναι κενή.
- Ενημερώνετε τις μεταβλητές περιβάλλοντος με εγγραφές. Σε άλλα εργαλεία προγραμματισμού, χρησιμοποιείτε συχνά το "=" για την ανάθεση, όπως "x = 1". Για τις μεταβλητές περιβάλλοντος, χρησιμοποιήστε το { x: 1 } αντί για αυτό. Όταν χρησιμοποιείτε μια μεταβλητή περιβάλλοντος, χρησιμοποιήστε το όνομά της απευθείας χωρίς τη σύνταξη της εγγραφής.
- Μπορείτε επίσης να ορίσετε μια μεταβλητή περιβάλλοντος όταν χρησιμοποιείτε τη συνάρτηση Πλοήγηση για να εμφανίσετε μια οθόνη. Εάν θεωρήσετε μια οθόνη ως ένα είδος διαδικασίας ή υπορουτίνας, αυτή η προσέγγιση μοιάζει με τη διαβίβαση παραμέτρων σε άλλα εργαλεία προγραμματισμού.
- Εκτός από τη συνάρτηση Πλοήγηση, οι μεταβλητές περιβάλλοντος περιορίζονται στο περιβάλλον μίας οθόνης, από όπου παίρνουν το όνομά τους. Δεν μπορείτε να τις χρησιμοποιήσετε ή να τις ορίσετε έξω από αυτό το περιβάλλον.
- Οι μεταβλητές περιβάλλοντος μπορεί να περιέχουν οποιαδήποτε τιμή, όπως συμβολοσειρές, αριθμούς, εγγραφές και πίνακες.
Ας δημιουργήσουμε εκ νέου την αριθμομηχανή μας, χρησιμοποιώντας μια μεταβλητή περιβάλλοντος:
Προσθέστε ένα στοιχείου ελέγχου "Κείμενο εισαγωγής", με την ονομασία TextInput1, και δύο κουμπιά, με την ονομασία Button1 και Button2.
Ορίστε την ιδιότητα Text του στοιχείου Button1 σε "Add" και την ιδιότητα Text του στοιχείου Button2 σε "Clear".
Για να ενημερώνεται το τρέχον σύνολο όταν ένας χρήστης επιλέγει το κουμπί Προσθήκη ορίστε την ιδιότητά του OnSelect στον παρακάτω τύπο:
UpdateContext( { RunningTotal: RunningTotal + TextInput1.Text } )
Η απλή ύπαρξη αυτού του τύπου καθιερώνει το RunningTotal ως μεταβλητή περιβάλλοντος που κατέχει έναν αριθμό λόγω του τελεστή +. Μπορείτε να κάνετε αναφορά του RunningTotal σε οποιοδήποτε σημείο σε αυτήν την οθόνη. Όποτε ο χρήστης ανοίγει αυτήν την εφαρμογή, το RunningTotal έχει μια αρχική τιμή κενής.
Την πρώτη φορά που ένας χρήστης επιλέγει το κουμπί Προσθήκη και το UpdateContext εκτελείται, το RunningTotal ορίζεται στην τιμή RunningTotal + TextInput1.
Για να ορίσετε το τρέχον σύνολο σε 0 κάθε φορά που ο χρήστης επιλέγει το κουμπί Εκκαθάριση, ορίστε την ιδιότητα OnSelect στον παρακάτω τύπο:
UpdateContext( { RunningTotal: 0 } )
Και πάλι, το UpdateContext χρησιμοποιείται με τον τύπο UpdateContext( { RunningTotal: 0 } ).
Προσθέστε ένα στοιχείο ελέγχου Ετικέτα και ορίστε την ιδιότητα Κείμενο σε RunningTotal.
Αυτός ο τύπος θα υπολογιστεί αυτόματα και θα εμφανίσει στο χρήστη την αξία του RunningTotal που αλλάζει με βάση τα κουμπιά που επιλέγει ο χρήστης.
Πραγματοποιήστε προεπισκόπηση της εφαρμογής και θα έχετε την αριθμομηχανή όπως περιγράφεται παραπάνω. Πληκτρολογήστε έναν αριθμό στο πλαίσιο κειμένου και πατήστε το κουμπί Add μερικές φορές. Όταν είστε έτοιμοι, επιστρέψτε στο περιβάλλον σύνταξης χρησιμοποιώντας το πλήκτρο Esc.
Μπορείτε να ορίσετε την τιμή μιας μεταβλητής περιβάλλοντος κατά την περιήγηση σε μια οθόνη. Αυτό είναι χρήσιμο για τη διαβίβαση του "περιβάλλοντος" ή των "παραμέτρων" από μία οθόνη σε μια άλλη. Για να παρουσιάσετε αυτήν την τεχνική, εισαγάγετε μια οθόνη, εισαγάγετε ένα κουμπί και ορίστε την ιδιότητα OnSelect σε αυτόν τον τύπο:
Πλοήγηση (οθόνη1, καμία, { σύνολο τρεξίματος: -1000 } )
Κρατήστε πατημένο το πλήκτρο ALT ενώ επιλέγετε αυτό το κουμπί για να εμφανίσετε το Screen1 και να ορίσετε τη μεταβλητή περιβάλλοντος RunningTotal προς-1000.
Για να εμφανίσει την τιμή της μεταβλητής περιβάλλοντος, επιλέξτε το μενού Αρχείο και, έπειτα, επιλέξτε Μεταβλητές στο αριστερό τμήμα παραθύρου.
Για να εμφανίσετε πού έχει οριστεί και χρησιμοποιηθεί η μεταβλητή περιβάλλοντος, επιλέξτε την.
Χρήση μιας συλλογής
Τέλος, ας ρίξουμε μία ματιά στη δημιουργία της αριθμομηχανής με μια συλλογή. Επειδή η συλλογή περιέχει έναν πίνακα που είναι πολύ εύκολο να τροποποιηθεί, θα ρυθμίσουμε αυτή την αριθμομηχανή έτσι ώστε να διατηρεί μια "χαρτοταινία" για κάθε τιμή, καθώς καταχωρείται.
Πώς λειτουργούν οι συλλογές:
- Η δημιουργία και ο ορισμός των συλλογών γίνονται με χρήση της συνάρτησης ClearCollect. Στη θέση της, μπορείτε να χρησιμοποιήσετε τη συνάρτηση Συλλογή, αλλά ουσιαστικά θα απαιτηθεί μια άλλη μεταβλητή αντί για αντικατάσταση της παλιάς.
- Μια συλλογή είναι ένα είδος προέλευσης δεδομένων και, επομένως, ένας πίνακας. Για να αποκτήσετε πρόσβαση σε μία μόνο τιμή σε μια συλλογή, χρησιμοποιήστε τη συνάρτηση Πρώτο και εξαγάγετε ένα πεδίο από την εγγραφή που προκύπτει. Εάν χρησιμοποιήσατε μία μόνο τιμή με τη συνάρτηση ClearCollect, αυτή θα είναι το πεδίο Τιμή, όπως σε αυτό το παράδειγμα:
Πρώτα(VariableName). Τιμή
Ας δημιουργήσουμε ξανά την αριθμομηχανή, χρησιμοποιώντας μια συλλογή:
Προσθέστε ένα στοιχείο ελέγχου Κείμενο εισαγωγής, με την ονομασία TextInput1 και δύο κουμπιά με την ονομασία Button1 και Button2.
Ορίστε την ιδιότητα Text του στοιχείου Button1 σε "Add" και την ιδιότητα Text του στοιχείου Button2 σε "Clear".
Για να ενημερώνεται το τρέχον σύνολο όταν ένας χρήστης επιλέγει το κουμπί Προσθήκη ορίστε την ιδιότητά του OnSelect στον παρακάτω τύπο:
Συλλέξτε (PaperTape, TextInput1.Text)
Η απλή ύπαρξη αυτού του τύπου καθιερώνει το PaperTape ως συλλογή η οποία περιλαμβάνει έναν πίνακα με συμβολοσειρές κειμένου μίας στήλης. Μπορείτε να κάνετε αναφορά του PaperTape σε οποιοδήποτε σημείο αυτής της εφαρμογής. Κάθε φορά που ένας χρήστης ανοίγει αυτήν την εφαρμογή, το PaperTape είναι ένας κενός πίνακας.
Όταν αυτός ο τύπος εκτελείται, προσθέτει τη νέα τιμή στο τέλος της συλλογής. Επειδή προσθέτουμε μια μοναδική τιμή, η συνάρτηση Collect την τοποθετεί αυτόματα σε έναν πίνακα μίας μόνο στήλης και το όνομα της στήλης είναι Value που θα χρησιμοποιήσετε αργότερα.
Για να καταργείται την χαρτοταινία όταν ο χρήστης επιλέγει το κουμπί Clear, ορίστε την ιδιότητά του OnSelect στον παρακάτω τύπο:
Clear (Χαρτοταινία)
Για να εμφανίζεται το τρέχον σύνολο, προσθέστε μια ετικέτα και ορίστε την ιδιότητά της Text σε αυτόν τον τύπο:
Sum( Χαρτοταινία; Τιμή)
Για να εκτελέσετε την αριθμομηχανή, πατήστε το πλήκτρο F5 για να ανοίξετε την προεπισκόπηση, πληκτρολογήστε αριθμούς στο στοιχείο ελέγχου "Κείμενο εισαγωγής" και επιλέξτε κουμπιά.
Για να επιστρέψετε στον προεπιλεγμένο χώρο εργασίας, πατήστε το πλήκτρο Esc.
Για να εμφανίσετε την χαρτοταινία, εισαγάγετε ένα στοιχείο ελέγχου Πίνακας δεδομένων και ορίστε την ιδιότητά του Items σύμφωνα με αυτόν τον τύπο:
Χαρτοταινία
Στο δεξιό τμήμα παραθύρου, επιλέξτε Επεξεργασία πεδίων κι, έπειτα, επιλέξτε Προσθήκη πεδίου, επιλέξτε τη στήλη Τιμή κι, έπειτα, επιλέξτε Προσθήκη για να το εμφανίσετε.
Για να δείτε τις τιμές στη συλλογή σας, επιλέξτε Συλλογές από το μενού Αρχείο.
Για να αποθηκεύσετε και να ανακτήσετε τη συλλογή σας, προσθέστε δύο επιπλέον στοιχεία ελέγχου κουμπιού και ορίστε τις ιδιότητες Κείμενο σε Load Save. Ορίστε την ιδιότητα OnSelect του κουμπιού Load σε αυτόν τον τύπο:
Clear (PaperTape); LoadData (PaperTape; "StoredPaperTape", αληθές)
Πρέπει πρώτα να απαλείψετε τη συλλογή, επειδή το LoadData θα προσαρτήσει τις αποθηκευμένες τιμές στο τέλος της συλλογής.
Ορίστε την ιδιότητα OnSelect του κουμπιού Save σε αυτόν τον τύπο:
SaveData (PaperTape, "StoredPaperTape")
Κάντε ξανά προεπισκόπηση, πατώντας το πλήκτρο F5, πληκτρολογήστε τους αριθμούς στο στοιχείο ελέγχου εισαγωγής κειμένου και επιλέξτε τα κουμπιά. Επιλέξτε το κουμπί Save. Κλείστε και φορτώστε εκ νέου την εφαρμογή και επιλέξτε το κουμπί Load για να φορτώσετε εκ νέου τη συλλογή σας.