Funcțiile RecordOf și Type
Se aplică pentru: planșă de lucru aplicații
Construiește un tip definit de utilizator pentru a fi utilizat cu funcții definite de utilizator și cu valori netipizate.
Important
- Aceste funcții sunt experimentale.
- Funcțiile experimentale nu sunt destinate utilizării în producție și ar putea să nu fie complete. Aceste funcții sunt disponibile înainte de lansarea oficială, astfel încât să puteți obține acces anticipat și să oferi feedback. Mai multe informații: Înțelegeți caracteristicile experimentale, de previzualizare și perimate în aplicațiile create pe planșă
- Acest comportament este disponibil numai atunci când Tipuri definite de utilizator funcția experimentală din Setări > Funcții viitoare > a7>Experimental este activat (este dezactivat în mod implicit).
- Feedback-ul dvs. este valoros. Spuneți-ne părerea dvs. pe Power Apps forumul comunității cu funcții experimentale.
Descriere
Fiecare funcție din Power Fx definește tipurile de valori care pot fi transmise ca parametri și tipul de ieșire. Tipurile sunt verificate atunci când scrieți o formulă și erorile sunt afișate dacă nu sunt de acord cu ceea ce se așteaptă. Tipurile sunt, de asemenea, folosite de editor pentru a sugera opțiuni bune pentru ce să treacă în funcție și pentru a detecta erorile cât mai devreme posibil.
Când creați propriile funcții definite de utilizator, trebuie să specificați tipurile de intrare și de ieșire. Pentru tipurile simple precum Decimal sau Text, acest lucru este ușor, deoarece aceste tipuri de bază sunt predefinite. Pentru tipuri mai complexe, cum ar fi înregistrări sau tabele, utilizați funcția Type pentru a crea tipul.
Funcția Type face, de asemenea, mai ușor de lucrat cu obiectele netipizate. Cu funcțiile ParseJSON, IsType și AsType , un obiect fără tip poate fi convertit într-un obiect tipat în care coloanele nu mai trebuie să fie tastate individual la punctul de utilizare.
Funcția Type iține o TypeSpecification , deoarece este singurul argument. Cea mai simplă specificație de tip este de a face referire la un tip existent, de exemplu Type( Text )
. O specificație de tip pentru o înregistrare sau un tabel este similară cu definirea unei înregistrări sau a unui tabel cu valori literale, unde valorile sunt înlocuite cu nume de tip. De exemplu, {Name: "Jane"}
ar fi tastat cu Type( {Name: Text} )
. Tabelele sunt specificate cu paranteze drepte, nu cu funcția Tabel și poate fi furnizată o singură înregistrare. De exemplu, [1,2,3]
ar fi tastat cu Type( [Number] )
.
Utilizați funcția RecordOf pentru a extrage tip înregistrare dintr-un tip de tabel. De exemplu, Type( RecordOf( Library ) )
ar returna tipul unei singure cărți din bibliotecă. Pentru a face un tabel, tastați dintr-un tip înregistrare, Încapsulare tip înregistrare între paranteze drepte. De exemplu, Type( [ Book ] )
definește o bibliotecă.
RecordOf poate fi utilizat numai în cadrul funcției Type .
Funcția Type și valoarea tipului pe care o returnează pot fi utilizate numai în anumite locuri în Power Fx, cum ar fi al doilea argument pentru a46>ParseJSON. În aplicațiile planșă de lucru, funcția Type poate fi utilizată cu o formulă numită în App.Formulas.
Sintaxă
RecordOf( TableType )
- TableType – Obligatoriu. Numele tipului unui tabel. Aceasta nu acceptă o specificație de tip, trebuie să fie numele unui tip definit anterior pentru un tabel.
Tastați( TypeSpecification )
- TypeSpecification – Obligatoriu. O specificație de tip.
Exemple
Funcția de tip
Luați în considerare următoarele definiții în 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 ] );
Observați cum textul propriu-zis al titlului "A Study in Scarlet"
este înlocuit cu numele tipului Text
în specificația tipului, un substituent pentru orice valoare de text. Un parametru sau o variabilă de tip BookType
poate deține una dintre cărțile din Library
, în timp ce LibraryType
poate deține întregul tabel. Cu aceste tipuri în loc, putem defini aceste funcții definite de utilizator:
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);
De asemenea, puteți utiliza BookType
pentru a analiza un șir JSON care conține o carte:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
Utilizarea BookType
ca al doilea argument pentru ParseJSON are ca rezultat o înregistrare tipată care poate fi folosită ca orice altă Power Fx înregistrare.
Funcția RecordOf
În exemplul de funcție Type , începeți cu BookType
și construiți LibraryType
înfășurarea unui tabel în jurul acesteia. Am fi putut defini aceste tipuri invers cu:
// 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 ) );