Συναρτήσεις RecordOf και Type
Ισχύει σε: Εφαρμογές καμβά
Δημιουργεί έναν τύπο καθορισμένο από το χρήστη για χρήση με συναρτήσεις καθορισμένες από το χρήστη και μη πληκτρολογημένες τιμές.
Σημαντικό
- Αυτές οι λειτουργίες είναι πειραματικές.
- Οι πειραματικές δυνατότητες δεν προορίζονται για χρήση παραγωγής και ενδέχεται να μην είναι ολοκληρωμένες. Αυτές οι δυνατότητες είναι διαθέσιμες πριν από μια επίσημη κυκλοφορία έτσι ώστε να μπορείτε να έχετε πρόσβαση από νωρίς και να κάνετε σχόλια. Περισσότερες πληροφορίες: Κατανοήστε τις πειραματικές, αποσυρμένες δυνατότητες και δυνατότητες προεπισκόπησης σε εφαρμογές καμβά
- Αυτή η συμπεριφορά που περιγράφεται σε αυτό το άρθρο είναι διαθέσιμη μόνο όταν η πειραματική δυνατότητα Τύποι καθορισμένοι από τον χρήστη στις Ρυθμίσεις > Προσεχείς δυνατότητες > Πειραματικές είναι ενεργοποιημένες (είναι απενεργοποιημένες από προεπιλογή).
- Τα σχόλιά σας είναι πολύτιμα. Πείτε μας τη γνώμη σας στο φόρουμ κοινότητας πειραματικών λειτουργιών του Power Apps.
Description
Κάθε συνάρτηση στο Power Fx καθορίζει τους τύπους τιμών που μπορούν να μεταβιβαστούν ως παράμετροι και τον τύπο της εξόδου. Οι τύποι ελέγχονται όταν γράφετε μια φόρμουλα και εμφανίζονται σφάλματα εάν δεν συμφωνούν με το αναμενόμενο. Οι τύποι χρησιμοποιούνται επίσης από τον επεξεργαστή για να προτείνουν καλές επιλογές για το τι πρέπει να περάσει στη λειτουργία και να εντοπίσει σφάλματα όσο το δυνατόν νωρίτερα.
Όταν δημιουργείτε τις δικές σας λειτουργίες καθορισμένες από το χρήστη, πρέπει να καθορίσετε τους τύπους εισόδου και εξόδου. Για απλούς τύπους όπως δεκαδικός ή κείμενο, αυτό είναι εύκολο καθώς αυτοί οι βασικοί τύποι είναι προκαθορισμένοι. Για πιο σύνθετους τύπους, όπως εγγραφές ή πίνακες, χρησιμοποιήστε τη συνάρτηση Τύπος για να δημιουργήσετε τον τύπο.
Η συνάρτηση Τύπος διευκολύνει επίσης την εργασία με μη τυπολογημένα αντικείμενα. Με τις συναρτήσεις ParseJSON, IsType και AsType ένα μη τυπολογημένο αντικείμενο μπορεί να μετατραπεί σε τυπολογημένο αντικείμενο στο οποίο οι στήλες δεν χρειάζεται πλέον να τυπολογούνται μεμονωμένα στο σημείο χρήσης.
Η συνάρτηση Τύπος λαμβάνει ένα TypeSpecification ως το μόνο όρισμα. Η απλούστερη προδιαγραφή τύπου είναι, για παράδειγμα Type( Text )
, η αναφορά σε έναν υπάρχοντα τύπο. Μια προδιαγραφή τύπου για μια εγγραφή ή έναν πίνακα είναι παρόμοια με τον ορισμό μιας εγγραφής ή ενός πίνακα με κυριολεκτικές τιμές, όπου οι τιμές αντικαθίστανται από ονόματα τύπων. Για παράδειγμα, το {Name: "Jane"}
θα πληκτρολογηθεί με Type( {Name: Text} )
. Οι πίνακες καθορίζονται με αγκύλες, όχι με τη συνάρτηση Πίνακας και μπορεί να παρέχεται μόνο μία εγγραφή. Για παράδειγμα, το [1,2,3]
θα τυπολογηθεί με Type( [Number] )
.
Χρησιμοποιήστε τη συνάρτηση RecordOf για να εξαγάγετε τον τύπο εγγραφής από έναν τύπο πίνακα. Για παράδειγμα, το Type( RecordOf( Library ) )
θα επιστρέψει τον τύπο ενός μεμονωμένου βιβλίου από τη βιβλιοθήκη. Για να δημιουργήσετε έναν τύπο πίνακα από τύπο εγγραφής, τυλίξτε τον τύπο εγγραφής σε αγκύλες. Για παράδειγμα, το Type( [ Book ] )
ορίζει μια βιβλιοθήκη. Το RecordOf μπορεί να χρησιμοποιηθεί μόνο εντός της συνάρτησης Τύπος.
Η συνάρτηση Τύπος και η τιμή τύπου που επιστρέφει μπορούν να χρησιμοποιηθούν μόνο σε συγκεκριμένα σημεία Power Fx, όπως το δεύτερο όρισμα στο ParseJSON. Στις εφαρμογές καμβά, η συνάρτηση Τύπος μπορεί να χρησιμοποιηθεί με έναν ονομασμένη φόρμουλα στο App.Formulas.
Σύνταξη
RecordOf( TableType )
- TableType – Απαιτείται. Το όνομα τύπου ενός πίνακα. Αυτό δεν δέχεται μια προδιαγραφή τύπου, πρέπει να είναι το όνομα ενός προηγουμένως καθορισμένου τύπου για έναν πίνακα.
Τύπος( TypeSpecification )
- TypeSpecification – Απαιτείται. Μια προδιαγραφή τύπου.
Παραδείγματα
Συνάρτηση τύπου
Λάβετε υπόψη τους ακόλουθους ορισμούς στο App.Formulas:
Library =
[ { Title: "A Study in Scarlet", Author: "Sir Arthur Conan Doyle", Published: 1887 },
{ Title: "And Then There Were None", Author: "Agatha Christie", Published: 1939 },
{ Title: "The Marvelous Land of Oz", Author: "L. Frank Baum", Published: 1904 } ];
// Type definition for a single book
BookType := Type( { Title: Text, Author: Text, Published: Number } );
// Type definition for a table of books
LibraryType := Type( [ BookType ] );
Παρατηρήστε πώς αντικαθίσταται το πραγματικό κείμενο τίτλου "A Study in Scarlet"
με το όνομα τύπου Text
στην προδιαγραφή τύπου, ένα σύμβολο κράτησης θέσης για οποιαδήποτε τιμή κειμένου. Μια παράμετρος ή μεταβλητή τύπου BookType
μπορεί να κρατήσει ένα από τα βιβλία Library
, ενώ το LibraryType
μπορεί να κρατήσει ολόκληρο τον πίνακα. Με αυτούς τους τύπους στη θέση τους, μπορούμε να ορίσουμε αυτές τις λειτουργίες που ορίζονται από το χρήστη:
SortedBooks( books: LibraryType ): LibraryType =
SortByColumns( Library, Author, SortOrder.Ascending, Title, SortOrder.Ascending );
PublishedInLeapYear( book: BookType ): Boolean =
Mod( book.Published, 4 ) = 0 And
(Mod( book.Published, 100 ) <> 0 Or Mod( book.Published, 400 ) = 0);
Μπορείτε επίσης να χρησιμοποιήσετε το BookType
για να αναλύσετε μια συμβολοσειρά JSON που περιέχει ένα βιβλίο:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
Η χρήση του BookType
ως δεύτερου ορίσματος στο ParseJSON έχει ως αποτέλεσμα μια τυποποιημένη εγγραφή που μπορεί να χρησιμοποιηθεί όπως οποιαδήποτε άλλη Power Fx εγγραφή.
RecordOf function
Στο παράδειγμα της συνάρτησης Τύπος, ξεκινάτε με BookType
και δημιουργείτε LibraryType
αναδιπλώνοντας έναν πίνακα γύρω από αυτό. Θα μπορούσαμε να ορίσουμε αυτούς τους τύπους αντίστροφα με:
// Type definition for a table of books
RecordOfLibraryType := Type( [ { Title: Text, Author: Text, Published: Number } ] );
// Type definition for a single book
RecordOfBookType := Type( RecordOf( RecordOfLibraryType ) );