Kopīgot, izmantojot


RecordOf un Type funkcijas

Attiecas uz: Audekla programmām

Konstruē lietotāja definētu tipu lietošanai ar lietotāja definētām funkcijām un neierakstītām vērtībām.

Svarīgi

Apraksts

Katra funkcija Power Fx definē vērtību tipus, kurus var nodot kā parametrus, un izvades veidu. Tipi tiek pārbaudīti, kad rakstāt formulu, un kļūdas tiek parādītas, ja tie neatbilst gaidītajam. Tipus redaktors izmanto arī, lai ieteiktu labas iespējas, ko nodot funkcijai un pēc iespējas ātrāk atklāt kļūdas.

Veidojot savas lietotāja definētās funkcijas, jums jānorāda ievades un izvades veidi. Vienkāršiem tipiem, piemēram , decimāldaļai vai tekstam, tas ir vienkārši, jo šie pamatveidi ir iepriekš definēti. Sarežģītākiem tipiem, piemēram, ierakstiem vai tabulām, izmantojiet Type funkciju, lai izveidotu tipu.

Šī Type funkcija arī atvieglo darbu ar dinamiskajām vērtībām. Izmantojot funkcijas ParseJSON,IsType un AsType , dinamisko vērtību var pārvērst par ierakstītu objektu, kurā kolonnas lietošanas brīdī vairs nav jāievada atsevišķi.

Funkcija Type kā vienīgo argumentu izmanto TypeSpecification . Vienkāršākā tipa specifikācija ir, piemēram Type( Text ), atsaukties uz esošu tipu. Tipa specifikācija ierakstam vai tabulai ir līdzīga ieraksta vai tabulas ar burtiskām vērtībām definēšanai, kur vērtības tiek aizstātas ar tipu nosaukumiem. Piemēram,tiktu {Name: "Jane"} rakstīts ar Type( {Name: Text} ). Tabulas ir norādītas ar kvadrātiekavām, nevis funkciju Tabula , un var nodrošināt tikai vienu ierakstu. Piemēram,tiktu [1,2,3] rakstīts ar Type( [Number] ).

Izmantojiet funkciju, RecordOf lai izvilktu ieraksta tipu no tabulas tipa. Piemēram,atgrieztu Type( RecordOf( Library ) ) vienas grāmatas veidu no bibliotēkas. Lai tabulas tipu izveidotu no ieraksta tipa, aptiniet ieraksta tipu kvadrātiekavās. Piemēram, Type( [ Book ] ) definē bibliotēku. RecordOf var izmantot tikai funkcijas ietvaros Type .

Funkciju Type un tās atgriezto tipa vērtību var izmantot tikai noteiktās Power Fx vietās, piemēram, otrajā argumentā ParseJSON. Audekla programmās Type funkciju var izmantot ar nosauktu formulu programmā App.Formulas.

Sintakse

RecordOf( Tabulas tips )

  • TableType - Obligāts. Tabulas tipa nosaukums. Tas nepieņem tipa specifikāciju, tam ir jābūt iepriekš definēta tabulas tipa nosaukumam.

Type( Tipa specifikācija )

  • TypeSpecification – Obligāts. Tipa specifikācija.

Piemēri

Type funkcija

Apsveriet tālāk norādītās definīcijas programmā 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 ] );

Ievērojiet, kā faktiskais virsraksta teksts "A Study in Scarlet" tiek aizstāts ar tipa nosaukumu Text tipa specifikācijā, kas ir jebkuras teksta vērtības vietturis. Tipa parametrs vai mainīgais BookType var turēt vienu no grāmatām Library, bet LibraryType var turēt visu galdu. Izmantojot šos tipus, mēs varam definēt šīs lietotāja definētās funkcijas:

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);

Varat arī izmantot, BookType lai parsētu JSON virkni, kurā ir grāmata:

ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)

Izmantojot BookType kā otro argumentu ParseJSON , tiek iegūts ierakstīts ieraksts, ko var izmantot tāpat kā jebkuru citu Power Fx ierakstu.

RecordOf funkcija

Funkcijas Type piemērā jūs sākat ar BookType un veidojat LibraryType , aptverot tabulu ap to. Mēs būtu varējuši definēt šos veidus apgrieztā veidā ar:

// 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 ) );