Dalintis per


RecordOf ir Type funkcijos

Taikoma: drobės programoms

Sukuria vartotojo apibrėžtą tipą, skirtą naudoti su vartotojo apibrėžtomis funkcijomis ir neįvestomis reikšmėmis.

Svarbu

Aprašą

Kiekviena funkcija Power Fx apibrėžia reikšmių tipus, kuriuos galima perduoti kaip parametrus, ir išvesties tipą. Tipai tikrinami, kai rašote formulę, ir rodomos klaidos, jei jie nesutinka su tuo, ko tikimasi. Redaktorius taip pat naudoja tipus, kad pasiūlytų geras parinktis, ką perduoti į funkciją ir kuo anksčiau aptikti klaidas.

Kurdami savo vartotojo apibrėžtas funkcijas, turite nurodyti įvesties ir išvesties tipus. Paprastiems tipams, tokiems kaip dešimtainis arba tekstas, tai lengva, nes šie pagrindiniai tipai yra iš anksto nustatyti. Sudėtingesniems tipams, pvz., įrašams ar lentelėms, naudokite Type funkciją tipui sukurti.

Ši Type funkcija taip pat padeda lengviau dirbti su dinaminėmis reikšmėmis. Naudojant funkcijas ParseJSON, IsType ir AsType , dinaminę reikšmę galima konvertuoti į įvestą objektą, kurio naudojimo metu nebereikia atskirai įvesti stulpelių.

Funkcija TypeTypeSpecification priima kaip vienintelį argumentą. Paprasčiausia tipo specifikacija yra, pavyzdžiui Type( Text ), nurodyti esamą tipą. Įrašo arba lentelės tipo specifikacija yra panaši į įrašo ar lentelės su pažodinėmis reikšmėmis apibrėžimą, kur reikšmės pakeičiamos tipų pavadinimais. Pavyzdžiui,būtų {Name: "Jane"} įvestas su Type( {Name: Text} ). Lentelės nurodomos laužtiniais skliaustais, o ne funkcija Lentelė , ir galima pateikti tik vieną įrašą. Pavyzdžiui,būtų [1,2,3] įvestas su Type( [Number] ).

RecordOf Naudokite funkciją norėdami išskleisti įrašo tipą iš lentelės tipo. Pavyzdžiui,grąžintų Type( RecordOf( Library ) ) vienos knygos tipą iš bibliotekos. Norėdami, kad lentelės tipas būtų iš įrašo tipo, įrašo tipą rašykite laužtiniuose skliaustuose. Pavyzdžiui,apibrėžia Type( [ Book ] ) biblioteką. RecordOf galima naudoti tik funkcijoje Type .

Funkciją Type ir grąžinamą tipo reikšmę galima naudoti tik konkrečiose "Power Fx" vietose, pvz., antrame ParseJSON argumente. Drobės programėlėse Type funkciją galima naudoti su įvardyta formule App.Formulas.

Sintaksė

RecordOf( Lentelės tipas )

  • TableType – būtina. Lentelės tipo pavadinimas. Tai nepriima tipo specifikacijos, tai turi būti anksčiau apibrėžto lentelės tipo pavadinimas.

Type( TipasSpecifikacija )

  • TypeSpecification – būtina. Tipo specifikacija.

Pavyzdžiai

Type funkcija

Apsvarstykite šiuos "App.Formulas" apibrėžimus :

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

Atkreipkite dėmesį, kaip tikrasis pavadinimo tekstas "A Study in Scarlet" tipo specifikacijoje pakeičiamas tipo pavadinimu Text , bet kurios teksto reikšmės vietos rezervavimo ženklu. Parametras arba tipo BookType kintamasis gali laikyti vieną iš knygų Library, o LibraryType gali laikyti visą lentelę. Turėdami šiuos tipus, galime apibrėžti šias vartotojo apibrėžtas 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);

Taip pat galite naudoti BookType norėdami išanalizuoti JSON eilutę, kurioje yra knyga:

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

Naudojant BookType kaip antrąjį "ParseJSON " argumentą , gaunamas įvestas įrašas, kurį galima naudoti kaip bet kurį kitą Power Fx įrašą.

RecordOf funkcija

Type Funkcijos pavyzdyje pradėkite BookType nuo ir kuriate LibraryType keliant aplink ją lentelę. Šiuos tipus galėjome apibrėžti atvirkščiai:

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