Funkcie RecordOf a Type
Platí pre: aplikácie Canvas
Vytvorí užívateľom definovaný typ na použitie s užívateľsky definovanými funkciami a nezadanými hodnotami.
Dôležité
- Tieto funkcie sú experimentálne.
- Experimentálne funkcie nie sú určené na produkčné použitie a nemusia byť úplné. Tieto funkcie sú k dispozícii pred oficiálnym vydaním, takže môžete získať skorý prístup a poskytnúť spätnú väzbu. Ďalšie informácie: Vysvetlenie experimentálnych, ukážkových a vyradených funkcií v aplikácii plátna
- Toto správanie je dostupné iba v prípade, ak je experimentálna funkcia Typy definované používateľom v Nastavenia > Nadchádzajúce funkcie > Experimentálne je zapnuté (v predvolenom nastavení je vypnuté).
- Vaša spätná väzba je cenná. Dajte nám vedieť, čo si myslíte v Power Apps komunitnom fóre experimentálnych funkcií.
Description
Každá funkcia v Power Fx definuje typy hodnôt, ktoré možno odovzdať ako parametre a typ výstupu. Typy sa kontrolujú pri písaní vzorca a chyby sa zobrazujú, ak nesúhlasia s tým, čo sa očakáva. Typy tiež používa editor na navrhnutie dobrých možností, čo odovzdať do funkcie, a čo najskôr odhaliť chyby.
Pri vytváraní vlastných užívateľom definovaných funkcií musíte zadať typy vstupu a výstupu. Pre jednoduché typy ako Decimal alebo Text je to jednoduché, keďže tieto základné typy sú preddefinované. Pre zložitejšie typy, ako sú záznamy alebo tabuľky, použite na vytvorenie typu funkciu Typ .
Funkcia Typ tiež uľahčuje prácu s netypizovanými objektmi. S funkciami ParseJSON, IsType a AsType , možno netypovaný objekt previesť na písaný objekt, v ktorom už nie je potrebné jednotlivé stĺpce písať v bode použitia.
Funkcia Typ má ako jediný argument Špecifikáciu typu . Najjednoduchšia špecifikácia typu je odkazovať na existujúci typ, napríklad Type( Text )
. Typová špecifikácia pre záznam alebo tabuľku je podobná definovaniu záznamu alebo tabuľky s doslovnými hodnotami, kde sú hodnoty nahradené názvami typov. Napríklad {Name: "Jane"}
by ste zadali s Type( {Name: Text} )
. Tabuľky sú špecifikované v hranatých zátvorkách, nie pomocou funkcie Tabuľka a je možné poskytnúť iba jeden záznam. Napríklad [1,2,3]
by ste zadali s Type( [Number] )
.
Na extrahovanie typu záznamu z typu tabuľky použite funkciu RecordOf . Napríklad Type( RecordOf( Library ) )
vráti typ jednej knihy z knižnice. Ak chcete vytvoriť typ tabuľky z typu záznamu, zabaľte typ záznamu do hranatých zátvoriek. Napríklad Type( [ Book ] )
definuje knižnicu.
RecordOf je možné použiť iba v rámci funkcie Typ .
Funkciu Typ a hodnotu typu, ktorú vracia, možno použiť iba na konkrétnych miestach v Power Fx, ako je napríklad druhý argument pre ParseJSON. V aplikáciách Canvas je možné použiť funkciu Typ s pomenovaným vzorcom v App.Formulas.
Syntax
Záznam( Typ tabuľky )
- TableType – povinné. Názov typu tabuľky. Toto neprijíma špecifikáciu typu, musí to byť názov predtým definovaného typu pre tabuľku.
Typ( Špecifikácia typu )
- TypeSpecification – povinné. Typová špecifikácia.
Príklady
Typ funkcie
Zvážte nasledujúce definície v 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 ] );
Všimnite si, ako je skutočný text nadpisu "A Study in Scarlet"
nahradený názvom typu Text
v špecifikácii typu, čo je zástupný symbol pre ľubovoľnú textovú hodnotu. Parameter alebo premenná typu BookType
môže obsahovať jednu z kníh v Library
, zatiaľ čo LibraryType
môže obsahovať celú tabuľku. S týmito typmi môžeme definovať tieto používateľom definované funkcie:
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);
Môžete tiež použiť BookType
na analýzu reťazca JSON, ktorý obsahuje knihu:
ParseJSON( "{""Title"":""Gulliver's Travels"", ""Author"": ""Jonathan Swift"", ""Published"": 1900}", BookType
)
Použitie BookType
ako druhého argumentu na ParseJSON výsledkom je typizovaný záznam, ktorý možno použiť ako ktorýkoľvek iný Power Fx záznam.
Funkcia RecordOf
V príklade funkcie Typ začnete s BookType
a zostavíte LibraryType
obalením tabuľky. Tieto typy by sme mohli definovať naopak:
// 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 ) );