Funktionerne RecordOf og Type
Gælder for: Lærredapps
Opretter en brugerdefineret type til brug sammen med brugerdefinerede funktioner og værdier uden type.
Vigtige oplysninger
- Disse funktioner er eksperimentelle.
- Eksperimentelle funktioner er ikke beregnet til produktion og kan være ufuldendte. Disse funktioner er tilgængelige før en officiel udgivelse, så du kan få tidlig adgang og give feedback. Flere oplysninger: Forstå eksperimentelle funktioner, funktioner i forhåndsversion og udgåede funktioner i lærredapps
- Den funktionsmåde, der beskrives i denne artikel, er kun tilgængelig, når Brugerdefinerede typers eksperimentelle funktion i Indstillinger > Kommende funktioner > Eksperimentel er slået til (den er deaktiveret som standard).
- Din feedback er værdifuld. Fortæl os, hvad du mener, i Power Apps-communityforummet for eksperimentelle funktioner.
Description
Hver funktion i Power Fx definerer de typer værdier, der kan overføres som parametre, og outputtypen. Typer kontrolleres, når du skriver en formel, og der vises fejl, hvis de ikke stemmer overens med det forventede. Typer bruges også af redaktøren til at foreslå gode muligheder for, hvad der skal overføres til funktionen og opdage fejl så tidligt som muligt.
Når du opretter dine egne brugerdefinerede funktioner, skal du angive input- og outputtyperne. For simple typer som Decimal eller Text er dette nemt, da disse grundlæggende typer er foruddefinerede. For mere komplekse typer, f.eks. poster eller tabeller, brug funktionen Type til at oprette typen.
Funktionen Type gør det også nemmere at arbejde med objekter uden type. Med funktionerne ParseJSON, IsType og AsType kan et objekt uden type konverteres til et typeobjekt, hvor kolonner ikke længere skal skrives individuelt på brugsstedet.
Funktionen Type bruger en TypeSpecification som det eneste argument. Den enkleste typespecifikation er at referere til en eksisterende type, f.eks. Type( Text )
. En typespecifikation for en post eller tabel svarer til at definere en post eller tabel med bogstavelige værdier, hvor værdierne erstattes af typenavne. For eksempel {Name: "Jane"}
ville blive tildelt en type med Type( {Name: Text} )
. Tabeller angives med kantede parenteser, ikke funktionen Tabel, og der kan kun angives én post. For eksempel [1,2,3]
ville blive tildelt en type med Type( [Number] )
.
Brug funktionen RecordOf til at udtrække posttypen fra en tabeltype. For eksempel Type( RecordOf( Library ) )
returnerer typen af en enkelt bog fra biblioteket. Hvis du vil oprette en tabeltype ud fra en posttype, skal du ombryde posttypen i kantede parenteser. For eksempel definerer Type( [ Book ] )
et bibliotek.
RecordOf kan kun bruges i funktionen Type.
Funktionen Type og den typeværdi, den returnerer, kan kun bruges bestemte steder i Power Fx, f.eks. det andet argument for ParseJSON. I Lærredsapps kan funktionen Type bruges sammen med en navngivet formel i App.Formulas.
Syntaks
RecordOf( TableType )
- TableType – påkrævet. Angiv navnet på en tabel. Dette accepterer ikke en typespecifikation. Det skal være navnet på en tidligere defineret type for en tabel.
Type( TypeSpecification )
- TypeSpecification - Påkrævet. En typeangivelse.
Eksempler
Funktionstype
Tag følgende definitioner i betragtning i 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 ] );
Bemærk, hvordan den faktiske titeltekst "A Study in Scarlet"
erstattes med typenavnet Text
i typespecifikationen, der er pladsholder for enhver tekstværdi. En parameter eller variabel af typen BookType
kan indeholde en af bøgerne Library
, mens LibraryType
den kan indeholde hele tabellen. Med disse typer på plads kan vi definere disse brugerdefinerede funktioner:
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);
Du kan også bruge BookType
til at fortolke en JSON-streng, der indeholder en bog:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
Hvis du bruger BookType
som det andet argument til ParseJSON, resulterer det i en typepost, der kan bruges som enhver anden Power Fx post.
RecordOf-funktion
I eksemplet med funktionen Type starter du med BookType
og bygger LibraryType
ved at ombryde en tabel omkring den. Vi kunne have defineret disse typer omvendt med:
// 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 ) );