Netypový objekt typ údajov
netypový objekt je dátový typ v Power Fx , ktorý môže obsahovať akúkoľvek dátovú štruktúru, komplexnú alebo jednoduchú. Nedá sa použiť priamo a vyžaduje explicitnú konverziu na typ údajov. K poliam v záznamoch v netypovanom objekte možno pristupovať pomocou bodového zápisu a existencia polí sa overuje iba za behu.
netypový objekt je návratový typ konkrétnych poskytovateľov bez typu. V súčasnosti iba funkcia ParseJSON() vracia netypový objekt.
Jednoduché typy
Hodnotu premennej typu netypovaný objekt nemožno použiť priamo. Vždy ho musíte správne napísať pomocou príslušného typového konštruktora.
Nasledujúce príklady konvertujú hodnotu netypového objektu premennej s názvom UOValue
.
Text(UOValue)
Value(UOValue)
Nasledujúca tabuľka uvádza typy údajov a zodpovedajúce funkcie na konverziu netypového objektu na daný typ údajov.
Typ údajov | Function | Description |
---|---|---|
Boolean | Boolean() | Pri konverzii netypový objekt na boolovskú hodnotu musí základná hodnota predstavovať boolovskú hodnotu alebo typ, ktorý možno automaticky nastaviť konvertovaný (napríklad reťazec "true"). |
Color | ColorValue() alebo RGBA() | Farby môžu byť reprezentované v zápise definície farieb Cascading Style Sheet (CSS) ako reťazec alebo ako jednotlivé komponenty RGBA. Netypový objekt možno skonvertovať priamo z kaskádového štýlu (CSS) reťazca definície farieb pomocou ColorValue() alebo z jednotlivých RGBA čísel do farby pomocou funkcie RGBA(). |
Mena, číslo | hodnota() | Pri prevode netypový objekt na číslo musí základná hodnota predstavovať číslo alebo typ, ktorý možno automaticky skonvertovaný (napríklad reťazec "123.456"). |
Date, DateTime, Time | DateValue(), TimeValue() alebo DateTimeValue() | Date, time a datetime a čas je možné previesť priamo z netypovaného objektu na ich príslušný typ, keď sú reprezentované vo formáte ISO 8601. Ostatné formáty sa musia najprv previesť na text pomocou funkcie Text() a potom odovzdať do funkcie DateValue(), TimeValue() alebo DateTimeValue(), ktorá na interpretáciu dátumu a času štandardne použije jazyk aktuálnych nastavení používateľa. |
GUID | GUID() | netypový objekt je možné priamo previesť na GUID, ak podkladový objekt predstavuje GUID alebo ak predstavuje reťazec. |
Hypertextový odkaz, obrázok, médiá | Text() | Tieto typy údajov sú textové typy údajov a možno ich previesť na text a potom použiť v Power Fx. |
Výber, dve možnosti | Switch() alebo If() | Možnosti a dve možnosti sú prezentované ako lokalizované reťazce v Power Fx. Voľby sú podložené číslom a dvomi možnosťami ako boolovské hodnoty. Neexistuje žiadna priama konverzia z logickej hodnoty, čísla alebo reťazca na možnosť alebo dve možnosti, ale funkcie Switch() alebo If() možno použiť na boolovskú, textovú alebo číselnú hodnotu na správne priradenie hodnoty výber alebo dve možnosti. |
Record | nevzťahuje sa | Neexistuje priama konverzia z netypovaného objektu na štruktúru záznamu, ale jednotlivé polia možno získať z netypovaného objektu a vytvoriť nový záznam. |
Odkaz na záznam | nevzťahuje sa | Odkazy na záznamy sú jedinečné pre zdroje údajov a nemajú žiadnu zmysluplnú reprezentáciu v netypovaných objektoch. |
Table | Table() a ForAll() | Netypovaný objekt môže predstavovať pole, ktoré možno previesť na tabuľku. Tieto objekty môžu byť polia záznamov alebo polia hodnôt, ktoré sú v skutočnosti tabuľkami s jedným stĺpcom. ForAll() možno použiť na vytvorenie tabuľky s plne napísanými záznamami. Ďalšie informácie nájdete v príkladoch nižšie v tomto článku. |
SMS správa | Text() | Text je možné priamo previesť. Ak netypovaný objekt predstavuje číslo, musíte netypovaný objekt najskôr previesť na číslo pomocou Value() pred konverziou na text. |
Typy záznamov
K poliam premennej reprezentujúcej záznam netypovaný objekt môžete pristupovať pomocou bežnej bodovej notácie používanej pre záznamy. Existencia polí sa však overí až pri spustení. V dôsledku toho nie je k dispozícii ani funkcia Intellisense. Ak pole neexistuje alebo má základnú hodnotu null, prístup k nemu bude mať za následok hodnotu Blank().
Každé pole v zázname je tiež typu netypovaný objekt a musí byť správne napísané. Pole môže byť netypovaný záznam jednoduchého typu. V prípade, že ide o záznam, môžete reťaziť bodkový zápis. Ak žiadne pole v reťazci neexistuje, vráti sa Blank().
Nasledujúce príklady používajú polia z netypového objektu premennej s názvom UORecord
.
Text(UORecord.StringField)
Value(UORecord.Field.ChildField)
V prípade, že názov poľa pozostáva z neplatného názvu identifikátora, napríklad ak názvy polí začínajú číslom alebo obsahujú neplatné znaky, ako je spojovník, môžete názvy polí vložiť do jednoduchých úvodzoviek:
untyped.'01'
untyped.'my-field'
Polia
Premenná Netypovaný objekt môže obsahovať pole. Aj keď pole môže byť buď pole záznamov, alebo pole jednoduchých typov, po prevode poľa netypový objekt na tabuľku pomocou funkcie Table() bude vždy výsledkom tabuľka netypového objektu s jedným stĺpcom. Funkcie ako napr. ForAll() a Index() nevyžadujú, aby ste najprv vytvorili Table() a v dôsledku toho nemusíte používať jednostĺpcové pole Value
,
Ak chcete napríklad získať druhé číslo v poli netypových objektov obsahujúcich číselné hodnoty ([1, 2, 3]
), môžete použiť nasledujúci vzorec na získanie druhého riadku v tabuľke a previesť stĺpec na číslo:
Value( Index( UOArray, 2 ) )
Ak bol netypový objekt najskôr skonvertovaný na Table(), druhý riadok vo výslednej jednostĺpcovej tabuľke je stĺpec Value
obsahujúci netypový objekt :
Value( Index( Table( UOArray ), 2 ).Value )
Pre pole záznamov, ktoré majú textový stĺpec s názvom Field
, platí rovnaká logika. K netypovému objektu je možné pristupovať priamo, alebo ak použijete funkciu Table(), výsledkom bude jedno- stĺpcová tabuľka netypového objektu.
K stĺpcu Field
je možné pristupovať priamo z nevytypového objektu vráteného funkciou Index().
Text( Index( UORecordArray, 2 ).Field )
Pri použití funkcie Table() najskôr načítajte stĺpec s jednostĺpcovou Value
, aby ste získali netypový objekt, potom prejdite do stĺpca Field
:
Text( Index( Table( UORecordArray ), 2 ).Value.Field )
Ak chcete skonvertovať pole záznamov na typizovanú tabuľku, môžete použiť funkciu ForAll() a skonvertovať každé jednotlivé pole.
ForAll( UORecordArray, { FirstField: Value(ThisRecord.FirstField), SecondField: Text(ThisRecord.SecondField) } )
Ak sa netypovaný objekt najskôr skonvertuje na tabuľku, výsledná jednostĺpcová tabuľka netypovaného objektu bude vyžadovať, aby ste na získanie polí použili stĺpec Value
.
ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )