Share via


Tippimata objekti andmetüüp

Tüüpimata objekt on Power Fx'i andmetüüp, mis võib sisaldada mis tahes keerukat või lihtsat andmestruktuuri. Seda ei saa otse kasutada ja see nõuab selgesõnalist teisendamist andmetüübiks. Tüüpimata objekti kirjete väljadele pääseb juurde punktitähistusega ja väljade olemasolu kontrollitakse ainult käitusajal.

Tüüpimata objekt on konkreetsete tüüpimata pakkujate tagastustüüp. Praegu tagastab ainult funktsioon ParseJSON()tüüpimata objekti.

Lihtsad tüübid

Muutuja tüübi tüüpimata objekt väärtust ei saa otse kasutada. Peate selle alati õigesti sisestama vastava tüübikonstruktori abil.

Järgmised näited teisendavad tüüpimata objekti muutuja nimega UOValue väärtuse.

Text(UOValue)
Value(UOValue)

Järgmises tabelis on loetletud andmetüübid ja vastavad funktsioonid, et teisendada tüüpimata objekt selleks andmetüübiks.

Andmete tüüp Function Kirjeldus
Loogiline Loogiline() Tippimata objekti teisendamisel kahendmuutujaks peab aluseks olev väärtus tähistama kahendmuutujat või tüüpi, mida saab automaatselt teisendada(nt string "true").
Värv ColorValue() või RGBA() Värve saab esitada Kaskaadlaadi leht (CSS) värvimääratlusmärgistuses stringina või üksikute RGBA komponentidena. Tüüpimata objekti saab teisendada otse Kaskaadlaadi leht (CSS) värvimääratlusstringist, kasutades ColorValue() funktsiooni või üksikutest RGBA numbritest värviliseks, kasutades RGBA() funktsiooni.
Valuuta, arv Väärtus() Kirjutamata objekti teisendamisel arvuks peab aluseks olev väärtus tähistama arvu või tüüpi, mida saab automaatselt teisendada (nt string "123.456").
Kuupäev, kuupäev ja kellaaeg, kellaaeg DateValue(), TimeValue() või DateTimeValue() Kuupäeva, kellaaega ja kuupäeva ja kellaaega saab otse teisendada tüüpimata objektist vastavaks tüübiks, kui need on esitatud ISO 8601 vormingus. Muud vormingud tuleb esmalt tekstiks teisendada, kasutades funktsiooni Tekst(), ja seejärel edastada DateValue(), TimeValue() või DateTimeValue(), mis kasutab vaikimisi praeguse kasutaja sätete keelt, et tõlgendada kuupäev ja kellaaeg.
GUID GUID() Tippimata objekti saab otse GUID-iks teisendada, kui aluseks olev objekt tähistab GUID-i või kui see tähistab stringi.
Hüperlink, pilt ja meedia Tekst() Need andmetüübid on teksti andmetüübid ja neid saab tekstiks teisendada ja seejärel rakenduses Power Fx kasutada.
Valik, kaks suvandit Vaheta() või Kui() Valikud ja kaks suvandit esitatakse rakenduses Power Fx lokaliseeritud stringidena. Valikuid toetavad numbri ja kahe suvandi loogilisus. Loogilisest, numbrist või stringist ei ole otsest teisendamist valikuga või kahe suvandiga, vaid Vaheta() või Kui() funktsiooni saab kasutada tõeväärtus, tekst või arvväärtus, et määrata õigesti valiku või kahe suvandi väärtus.
Kirje pole saadaval Tüüpimata objektilt ei toimu otsest teisendamist kirjestruktuuriks, kuid üksikuid välju saab hankida tüüpimata objektist, et luua uus kirje.
Kirjeviide pole saadaval Kirjeviited on andmeallikate jaoks ainulaadsed ja neil puudub tähenduslik esitus tüüpimata objektides.
Table Tabel() ja ForAll() Tüüpimata objekt võib esindada massiivi, mille saab teisendada tabeliks. Need objektid võivad olla kirjete massiivid või väärtuste massiivid, mis on sisuliselt üheveerulised tabelid. ForAll() saab kasutada täielikult tüübitud kirjetega tabeli loomiseks. Lisateabe saamiseks vaadake selle artikli all olevaid näiteid.
Tekstsõnum Tekst() Teksti saab otse teisendada. Kui tüüpimata objekt tähistab arvu, peate esmalt teisendama tüüpimata objekti numbriks, kasutades Väärtus() enne tekstiks teisendamist.

Kirje tüübid

Saate juurdepääsu tüüpimata objekti kirjet esindava muutuja väljadele, kasutades tavalist kirjete jaoks kasutatavat punktimärki. Väljade olemasolu kontrollitakse siiski alles käitusajal. Selle tulemusena pole saadaval ka IntelliSense. Kui välja pole olemas või selle aluseks on väärtus null, annab sellele juurdepääs väärtuse Tühi().

Kirje iga väli on samuti tüüpi tüüpimata objekt ja see tuleb õigesti sisestada. Väli võib olla lihttüübi tüüpimata kirje. Kui tegemist on kirjega, saate punktimärgistuse aheldada. Kui ahelas mõnda välja ei eksisteeri, tagastatakse Tühi().

Järgmistes näidetes kasutatakse välju tüüpimata objektist muutuja nimega UORecord.

Text(UORecord.StringField)
Value(UORecord.Field.ChildField)

Kui välja nimi koosneb kehtetust identifikaatori nimest, näiteks kui väljanimed algavad numbriga või sisaldavad kehtetuid märke, näiteks sidekriipsu, saate väljade nimed panna jutumärkidesse:

untyped.'01'
untyped.'my-field'

Massiivid

Muutuja tüüpimata objekt võib sisaldada massiivi. Kuigi massiiv võib olla kas kirjete massiiv või lihtsat tüüpi massiiv, teisendatakse tüüpimata objekti massiiv tabeliks, kasutades Tabel()annab alati üheveerulise tüüpimata objektide tabeli. Funktsioonid nagu ForAll() ja Register() ei nõua teilt esmalt Tabeli() loomist ja seetõttu ei pea te kasutama üheveerulist Value väli,

Näiteks teise numbri saamiseks tüüpimata objektist, mis sisaldab arvuväärtusi ( [1, 2, 3] ), saab kasutada järgmist valemit hankige tabeli teine rida ja teisendage veerg arvuks:

Value( Index( UOArray, 2 ) )

Kui tüüpimata objekt teisendati esmalt Tabel(), on tulemuse üheveerulise tabeli teine rida Value veerg, mis sisaldab tüüpimata objekti:

Value( Index( Table( UOArray ), 2 ).Value )

Kirjete massiivi puhul, millel on tekstiveerg nimega Field, kehtib sama loogika. Tüüpimata objektile pääseb juurde otse või funktsiooni Tabeli()kasutamise tulemuseks on tüüpimata objekti üheveeruline tabel.

Veerule Field pääseb juurde otse funktsiooni tüüpimata objekt tagastatud Register().

Text( Index( UORecordArray, 2 ).Field )

Funktsiooni Tabel() kasutamisel hankige esmalt üheveeruline veerg Value, et saada tüüpimata objekt, seejärel avage Field veerg:

Text( Index( Table( UORecordArray ), 2 ).Value.Field )

Kirjete massiivi teisendamiseks trükitud tabelisse saate kasutada funktsiooni ForAll() ja teisendada iga üksiku välja.

ForAll( UORecordArray, { FirstField: Value(ThisRecord.FirstField), SecondField: Text(ThisRecord.SecondField) } )

Kui tüüpimata objekt teisendatakse esmalt tabeliks, siis tuleb tüüpimata objekti üheveerulises tabelis jällegi kasutada Value veergu väljade saamiseks.

ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )