Dijeli putem


RecordOfi funkcije Type

Primjenjuje se na sljedeće: Aplikacije radnog područja

Konstruira korisnički definirani tip za korištenje s korisnički definiranim funkcijama i netipiziranim vrijednostima.

Važno

Opis

Svaka funkcija u Power Fx definira vrste vrijednosti koje se mogu proslijediti kao parametri i vrstu izlaza. Vrste se provjeravaju prilikom pisanja formule, a pogreške se prikazuju ako se ne slažu s očekivanjima. Uređivač također koristi tipove kako bi predložio dobre opcije za što proslijediti u funkciju i otkrio pogreške što je prije moguće.

Prilikom stvaranja vlastitih korisnički definiranih funkcija morate navesti vrste ulaza i izlaza. Za jednostavne vrste kao što su Decimal ili Text, to je jednostavno jer su ove osnovne vrste unaprijed definirane. Za složenije vrste, kao što su zapisi ili tablice Type , koristite funkciju za stvaranje vrste.

Funkcija Type olakšava i rad s dinamičnim vrijednostima. Uz funkcije ParseJSON, IsType i AsType dinamička se vrijednost može pretvoriti u tipkani objekt u kojem stupce više nije potrebno pojedinačno upisovati u trenutku korištenja.

Funkcija Type kao jedini argument uzima TypeSpecification . Najjednostavnija specifikacija tipa je referenciranje postojećeg tipa, na primjer Type( Text ). Specifikacija vrste za zapis ili tablicu slična je definiranju zapisa ili tablice s doslovnim vrijednostima, gdje se vrijednosti zamjenjuju nazivima vrsta. Na primjer, {Name: "Jane"} upisao bi se sa Type( {Name: Text} ). Tablice su navedene u uglatim zagradama, a ne u funkciji Tablica , a može se unijeti samo jedan zapis. Na primjer, [1,2,3] upisao bi se sa Type( [Number] ).

Pomoću funkcije RecordOf izdvojite vrstu zapisa iz vrste tablice. Na primjer, Type( RecordOf( Library ) ) vratit će vrstu jedne knjige iz biblioteke. Da biste stvorili vrstu tablice iz vrste zapisa, Zamatanje vrsta zapisa u uglate zagrade. Na primjer, Type( [ Book ] ) definira biblioteku. RecordOf može se koristiti samo unutar Type funkcije.

Funkcija Type i vrsta vrijednosti koju vraća mogu se koristiti samo na određenim mjestima u dodatku Power Fx, kao što je drugi argument argumenta ParseJSON. U aplikacijama Platno funkcija Type se može koristiti s imenovanom formulom u aplikaciji App.Formulas.

Sintaksa

RecordOf( Vrsta Tablice )

  • TableType – obavezno. Naziv vrste tablice. Ovo ne prihvaća specifikaciju tipa, to mora biti naziv prethodno definiranog tipa za tablicu.

Type( TypeSpecification )

  • TypeSpecification – Obavezno. Specifikacija tipa.

Primjeri

Type funkcija

Razmotrite sljedeće definicije u 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 ] );

Primijetite kako se stvarni tekst "A Study in Scarlet" naslova zamjenjuje nazivom Text vrste u specifikaciji tipa, rezerviranim mjestom za bilo koju vrijednost teksta. Parametar ili varijabla tipa BookType može držati jednu od knjiga Library, dok LibraryType može držati cijelu tablicu. S ovim vrstama možemo definirati ove korisnički definirane funkcije:

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

Također možete koristiti za BookType raščlanjivanje JSON niza koji sadrži knjigu:

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

Korištenje BookType kao drugog argumenta za ParseJSON rezultira tipiziranim zapisom koji se može koristiti kao i svaki drugi Power Fx zapis.

RecordOf funkcija

U primjeru Type funkcije počinjete s i gradite BookType prelamanjem LibraryType tablice oko njega. Mogli smo definirati ove tipove obrnuto sa:

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