Deli putem


RecordOf i Type funkcije

Odnosi se na: Canvas aplikacije

Konstruiše korisnički definisani tip za upotrebu sa korisnički definisanim funkcijama i netipisanim vrednostima.

Važno

Opis

Svaka funkcija u Power Fx definiše tipove vrednosti koje se mogu preneti kao parametri i tip izlaza. Tipovi se proveravaju kada pišete formulu i greške se prikazuju ako se ne slažu sa onim što se očekuje. Tipovi se takođe koriste od strane urednika da predloži dobre opcije za ono što treba da prenese u funkciju i otkrije greške što je ranije moguće.

Prilikom kreiranja sopstvenih korisnički definisanih funkcija, potrebno je da navedete tipove ulaza i izlaza. Za jednostavne tipove kao što su Decimal ili Tekst, ovo je lako jer su ovi osnovni tipovi unapred definisani. Za složenije tipove, kao što su zapisi ili tabele, koristite Type funkciju da biste kreirali tip.

Funkcija Type takođe olakšava rad sa dinamičkim vrednostima. Pomoću funkcija "ParseJSON", " IsType" i " AsType ", dinamička vrednost može da se konvertuje u otkucani objekat u kojem kolone više ne moraju pojedinačno da se kucaju na mestu korišćenja.

Funkcija Type uzima funkciju TypeSpecification kao jedini argument. Najjednostavnija specifikacija tipa je da se upućuje na postojeći tip, na primer Type( Text ). Specifikacija tipa za zapis ili tabelu je slična definisanju zapisa ili tabele sa bukvalnim vrednostima, gde su vrednosti zamenjene imenima tipa. Na primer, {Name: "Jane"} biće otkucano sa Type( {Name: Text} ). Tabele su navedene sa uglatim zagradama, a ne sa funkcijom Tabela , i može se obezbediti samo jedan zapis. Na primer, [1,2,3] biće otkucano sa Type( [Number] ).

Koristite RecordOf funkciju za izdvajanje tipa zapisa iz tipa tabele. Na primer, Type( RecordOf( Library ) ) vratio bi tip jedne knjige iz biblioteke. Da napravite tip tabele iz vrsta zapisa, Umotavanje vrsta zapisa u uglate zagrade. Na primer, Type( [ Book ] ) definiše biblioteku. RecordOf može da se koristi samo u okviru funkcije Type .

Funkcija Type i vrednost tipa koju vraća mogu da se koriste samo na određenim mestima u programskom dodatku Power Fx, kao što je drugi argument " ParseJSON". U aplikacijama platna, funkcija može da Type se koristi sa imenovanim formulom u aplikaciji App.Formulas.

Sintaksa

RecordOf( Tip tabele )

  • TableType – Obavezno. Ime tipa tabele. Ovo ne prihvata specifikaciju tipa, to mora biti ime prethodno definisanog tipa za tabelu.

Type( TypeSpecification )

  • TypeSpecification – Obavezno. Specifikacija tipa.

Primeri

Type Funkciju

Razmotrite sledeć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 ] );

Obratite pažnju na to kako je stvarni tekst "A Study in Scarlet" naslova zamenjen imenom Text tipa u specifikaciji tipa, rezervnim mestom za bilo koju tekstualnu vrednost. Parametar ili varijabla tipa BookType može da drži jednu od knjiga Library, dok LibraryType može da drži celu tabelu. Sa ovim tipovima na mestu, možemo definisati ove korisnički definisane 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đe možete koristiti da BookType parsujete JSON string koji sadrži knjigu:

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

Korišćenje BookType kao drugi argument za ParseJSON rezultira otkucanim zapisom koji se može koristiti kao i bilo koji drugi Power Fx zapis.

RecordOf Funkciju

U primeru Type funkcije počinjete sa i gradite BookType tako što LibraryType prelamate tabelu oko njega. Mogli smo definisati 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 ) );