Megosztás a következőn keresztül:


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

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