Lasīt angliski

Kopīgot, izmantojot


Funkcijas RecordOf un Type

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 funkciju Tips , lai izveidotu tipu.

Funkcija Type arī atvieglo darbu ar neierakstītiem objektiem. Izmantojot funkcijas ParseJSON, IsType un AsType , neierakstītu objektu var pārvērst par ierakstītu objektu, kurā lietošanas vietā vairs nav atsevišķi jāraksta kolonnas.

Funkcijai Type tiek izmantots parametrs TypeSpecific , jo tas ir vienīgais arguments. 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 funkcijā Type .

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

Sintakse

RecordOf( TableType )

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

Type( TypeSpecification )

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

Piemēri

Tipa 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.

Funkcijas RecordOf funkcija

Funkcijas Type piemērā jūs sākat ar BookType un veidojat LibraryType , aptinot ap to tabulu. 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 ) );