Bendrinti naudojant


Funkcijos RecordOf ir Type

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 arba lentelėms, naudokite funkciją Type , kad sukurtumėte tipą.

Funkcija Tipas taip pat palengvina darbą su neįvestais objektais. Naudojant funkcijas ParseJSON, IsType ir AsType , neįvestą objektą galima konvertuoti į įvestą objektą, kuriame stulpelių nebereikia atskirai įvesti naudojimo vietoje.

Funkcija Tipas naudoja TypeSpecification 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] ).

Naudokite funkciją RecordOf, kad išskleistumėte į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 jos pateiktą tipo reikšmę galima naudoti tik konkrečiose vietose, pvz Power Fx., antrasis argumentas ParseJSON. Drobės programose funkciją Tipas galima naudoti su pavadinta formule App.Formulas.

Sintaksė

RecordOf( TableType )

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

Type( TypeSpecification )

  • TypeSpecification – būtina. Tipo specifikacija.

Pavyzdžiai

Funkcija Type

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šą.

Funkcija RecordOf

Funkcijos Tipas pavyzdyje pradedate BookType ir kuriate LibraryType apvyniodami 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 ) );