Jaa


RecordOf- ja Type-funktiot

Koskee: Pohjaan perustuvat sovellukset

Muodostaa käyttäjän määrittämän tyypin, jota käytetään käyttäjän määrittämien funktioiden ja tyypittämättömien arvojen kanssa.

Tärkeää

Description

Jokainen Power Fx:n funktio määrittää parametrina välitettävien arvojen tyypit ja tulosteen tyypin. Tyypit tarkistetaan, kun kirjoitat kaavaa, ja virheet näytetään, jos ne eivät vastaa odotettua. Editori käyttää myös tyyppejä ehdottaakseen hyviä vaihtoehtoja siihen, mitä siirtää toimintoon ja havaita virheet mahdollisimman varhaisessa vaiheessa.

Kun luot omia käyttäjän määrittämiä toimintoja, sinun on määritettävä tulo- ja lähtötyypit. Yksinkertaisille tyypeille, kuten Decimal - tai Text, tämä on helppoa, koska nämä perustyypit on määritetty ennalta. Jos kyseessä on monimutkaisempi tyyppi, kuten tietueet tai taulukot, luo tyyppi Type-funktiolla.

Type-funktio helpottaa myös tyypittämättömien objektien käsittelyä. ParseJSON-, IsType- ja AsType-funktioilla tyypittämätön objekti voidaan muuntaa tyypitetyksi objektiksi, jossa sarakkeita ei enää tarvitse tyypittää yksitellen käyttöpaikassa.

Type-funktio ottaa TypeSpecification-argumentin ainoana argumenttina. Yksinkertaisin tyyppimäärittely on viitata olemassa olevaan tyyppiin, esimerkiksi Type( Text ). Tietueen tai taulukon tyyppimääritys muistuttaa kirjaimellisia arvoja sisältävän tietueen tai taulukon määrittämistä, jossa arvot korvataan tyyppinimillä. Esimerkiksi, {Name: "Jane"} tyypitetään seuraavasti: Type( {Name: Text} ). Taulukot määritetään hakasulkeilla, ei Table-funktiolla, ja vain yksi tietue voidaan antaa. Esimerkiksi, [1,2,3] tyypitetään seuraavasti: Type( [Number] ).

RecordOf-funktion avulla voit purkaa tietuetyypin taulukkotyypistä. Esimerkiksi Type( RecordOf( Library ) ) palauttaisi kirjastosta yksittäisen kirjan tyypin. Jos haluat tehdä taulukkotyypin tietuetyypistä, rivitä tietuetyyppi hakasulkeisiin. Esimerkiksi Type( [ Book ] ) määrittää kirjaston. RecordOf-funktiota voi vain käyttää Type-funktiossa.

Type-funktiota ja sen palauttamaa tyyppiarvoa voidaan vain käyttää tietyissä paikoissa Power Fx:ssä, kuten ParseJSON-funktion toisessa argumentissa. Pohjaan perustuvissa sovelluksissa Type-funktiota voidaan käyttää nimetyn kaavan kanssa: App.Formulas.

Syntaksi

RecordOf( TableType )

  • TableType – vaaditaan. Taulukon tyypin nimi. Tämä ei hyväksy tyyppimääritystä, vaan sen on oltava taulukon aiemmin määritetyn tyypin nimi.

Type( TypeSpecification )

  • TypeSpecification – pakollinen. Tyyppimääritys.

Esimerkkejä

Type-funktio

Harkitse seuraavia määritelmiä App.Formulas-kohdassa:

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

Huomaa, miten varsinainen otsikkoteksti "A Study in Scarlet" korvataan tyyppimäärityksen tyyppinimellä Text, joka on minkä tahansa tekstiarvon paikkamerkki. BookType-tyypin parametri tai muuttuja voi sisältää yhden Library-objektin kirjoista, kun taas LibraryType voi sisältää koko taulukon. Kun nämä tyypit ovat käytössä, voimme määrittää nämä käyttäjän määrittämät toiminnot:

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

Voit myös käyttää BookType-tyyppiä jäsentämään JSON-merkkijonon, joka sisältää kirjan:

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

Jos käytät BookType-tyyppiä toisena argumenttina ParseJSON-funktiolle, tuloksena on tyypitetty tietue, jota voidaan käyttää muiden Power Fx -tietueiden tavoin.

RecordOf-funktio

Type-funktioesimerkissä aloitat BookType-tyypillä ja rakennat LibraryType-tyypin paketoimalla taulukon sen ympärille. Olisimme voineet määritellä nämä tyypit käänteisesti:

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