RecordOf és Type függvények
A következőkre vonatkozik: Vászonalapú alkalmazások
Felhasználó által definiált típust hoz létre a felhasználó által definiált függvényekkel és nem típusos értékekkel való használatra.
Fontos
- Ezek a funkciók kísérleti jellegűek.
- A kísérleti funkciók nem éles környezetben használhatók, és előfordulhat, hogy nem teljesek. Ezek a funkciók a hivatalos kiadás előtt érhetők el, így korai hozzáférést kaphat, és visszajelzést küldhet. További információ: A vászonalapú alkalmazások kísérleti, előzetes verziójú és kivezetett funkcióinak áttekintése
- Ez a viselkedés csak akkor érhető el, ha a Felhasználó által definiált típusok kísérleti funkció be van kapcsolva a Beállítások > Közelgő funkciók > kísérleti funkciójában (alapértelmezés szerint ki van kapcsolva).
- Visszajelzése értékes. Ossza meg velünk véleményét a Power Apps kísérleti funkciók közösségi fórumán.
Description
Minden függvény Power Fx meghatározza a paraméterként átadható értékek típusát és a kimenet típusát. A képlet írásakor a rendszer ellenőrzi a típusokat, és megjeleníti a hibákat, ha nem egyeznek meg a várttal. A típusokat a szerkesztő arra is használja, hogy jó lehetőségeket javasoljon arra, hogy mit kell átadni a funkciónak, és a lehető leghamarabb észlelje a hibákat.
Saját felhasználó által definiált függvények létrehozásakor meg kell adnia a bemeneti és kimeneti típusokat. Az olyan egyszerű típusok esetében, mint a Decimális vagy a Szöveg, ez egyszerű, mivel ezek az alaptípusok előre definiáltak. Összetettebb típusok, például rekordok vagy táblák esetén használja a Type függvényt a típus létrehozásához.
A Szöveg funkció a nem gépelt objektumokkal való munkát is megkönnyíti. A ParseJSON,IsType ésAsType függvényekkel a nem típusolt objektumok gépelt objektummá alakíthatók, amelyben az oszlopokat már nem kell egyenként beírni a használat helyén.
A Type függvény TypeSpecification argumentumot vesz fel. A legegyszerűbb típusspecifikáció például Type( Text )
egy meglévő típusra való hivatkozás. Egy rekord vagy tábla típusspecifikációja hasonló egy literális értékekkel rendelkező rekord vagy tábla definiálásához, ahol az értékeket típusnevek helyettesítik. Például be lenne írva {Name: "Jane"}
. Type( {Name: Text} )
A táblák szögletes zárójelekkel vannak megadva, nem a Table függvénnyel, és csak egy rekord adható meg. Például be lenne írva [1,2,3]
. Type( [Number] )
A RecordOf függvénnyel kinyerheti a rekordtípust egy táblatípusból.
Type( RecordOf( Library ) )
Például egyetlen könyv típusát adja vissza a könyvtárból. Ha rekordtípusból szeretne táblatípust létrehozni, szögletes zárójelek közé fűzze a rekordtípust. Például meghatároz egy könyvtárat Type( [ Book ] )
.
A RecordOf csak a Type függvényen belül használható.
A Type függvény és az általa visszaadott típusérték csak bizonyos helyeken Power Fx használható, például a ParseJSON második argumentumában. A vászonalapú alkalmazásokban a Type függvény használható egy elnevezett képlettel az App.Formulas-ban.
Szintaxis
RecordOf(TableType)
- TableType – kötelező. A tábla típusneve. Ez nem fogadja el a típusspecifikációt, egy tábla korábban definiált típusának nevének kell lennie.
Típus( típusspecifikáció )
- TypeSpecification – Kötelező. Típusspecifikáció.
Példák
Type függvény
Tekintse meg a következő definíciókat az App.Formulas fájlban:
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 ] );
Figyelje meg, hogy a tényleges címszöveget "A Study in Scarlet"
hogyan helyettesíti a típusspecifikációban szereplő típusnév Text
, amely bármely szöveges érték helyőrzője. Egy paraméter vagy változó BookType
elfér az egyik könyvben Library
, miközben LibraryType
elfér benne a teljes táblázat. Ezekkel a típusokkal definiálhatjuk ezeket a felhasználó által definiált funkciókat:
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);
A használatával BookType
könyvet tartalmazó JSON-sztringet is elemezhet:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
A ParseJSON BookType
második argumentumaként való használata egy beírt rekordot eredményez, amely bármely más Power Fx rekordhoz hasonlóan használható.
RecordOf függvény
A Type függvény példájában a következőből BookType
indul ki, és LibraryType
egy táblázatot csomagol köré. Ezeket a típusokat fordítva is definiálhattuk volna:
// 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 ) );