Neapibrėžto tipo objektas duomenų tipas
neapibrėžto tipo objektas yra duomenų tipas Power Fx , kuriame gali būti bet kokia duomenų struktūra, sudėtinga ar paprasta. Jo negalima tiesiogiai naudoti, todėl reikia aiškiai konvertuoti į duomenų tipą. Įrašų laukai neapibrėžto tipo objektuose gali būti pasiekti naudojant taškų notavimą, o laukų egzistavimas tikrinamas tik vykdymo metu.
neapibrėžto tipo objektas yra konkrečių neįvestų paslaugų teikėjų grąžinimo tipas. Šiuo metu tik „ParseJSON()“ funkcija pateikia neapibrėžto tipo objektą.
Paprastieji tipai
Neapibrėžto tipo objekto kintamojo reikšmės tiesiogiai naudoti negalima. Visada turite teisingai įvesti jį naudodami atitinkamo tipo konstruktorių.
Toliau pateikti pavyzdžiai konvertuoja neapibrėžto tipo objekto kintamojo, pavadinto UOValue
, reikšmę.
Text(UOValue)
Value(UOValue)
Šioje lentelėje išvardyti duomenų tipai ir atitinkamos funkcijos, kurias naudojant neapibrėžto tipo objektas konvertuojamas į tą duomenų tipą.
Duomenų tipas | Funkcija | Aprašą |
---|---|---|
Bulio logikos | Bulio logikos() | Konvertuojant neapibrėžto tipo objektas į Bulio logikos, pagrindinė reikšmė turi atitikti Bulio logikos arba tipą, kurį galima automatiškai konvertuoti (pvz., eilutę "true"). |
Spalva | ColorValue() arba RGBA() | Spalvos gali būti perteiktos pakopinio stiliaus aprašo (CSS) spalvų aprašo notacija kaip eilutė arba kaip atskiri RGBA komponentai. Neapibrėžto tipo objektą galima konvertuoti tiesiai iš pakopinio stiliaus aprašo (CSS) spalvų aprašo eilutės naudojant funkciją ColorValue() arba iš atskirų RGBA numerių į spalvą naudojant RGBA() funkciją. |
Valiuta, skaičius | Reikšmė() | Konvertuojant neapibrėžto tipo objektas į skaičių, pagrindinė reikšmė turi atitikti skaičių arba tipą, kurį galima automatiškai konvertuoti (pvz., eilutę "123.456"). |
Data, DateTime, laikas | DateValue(), TimeValue() arba DateTimeValue() | Datą, laiką ir datetime galima tiesiogiai konvertuoti iš neapibrėžto tipo objekto į atitinkamą jų tipą, kai jis pateikiamas ISO 8601 formatu. Kitus formatus pirmiausia reikia konvertuoti į tekstą naudojant funkciją Text() ir tada perduodant į funkcijas DateValue(), TimeValue() arba DateTimeValue(), kurios pagal numatytuosius nustatymus naudos dabartinio vartotojo parametrų kalbą datai ir laikui interpretuoti. |
GUID | GUID() | An neapibrėžto tipo objektas galima tiesiogiai konvertuoti į GUID, jei pagrindinis objektas yra GUID arba jei jis yra eilutė. |
HyperLink, vaizdas, medija | Tekstas() | Šie duomenų tipai yra teksto duomenų tipai, juos galima konvertuoti į tekstą ir tada naudoti „Power Fx“. |
Pasirinkimas, dvi parinktys | Switch() arba If() | Pasirinkimai ir dvi parinktys pateikiamos kaip lokalizuotos eilutės Power Fx. Pasirinkimai yra paremti skaičiumi ir dviem variantais kaip bulio logika. Nėra tiesioginio konvertavimo iš Bulio logikos, skaičiaus ar eilutės į pasirinkimą arba dvi galimybes, bet funkcijos Switch() arba If() gali būti naudojamos Bulio logikos, teksto ar skaičiaus reikšmėms, kad būtų tinkamai priskirta pasirinkimo arba dviejų parinkčių reikšmė. |
Įrašas | netaikoma | Nėra tiesioginio konvertavimo iš neapibrėžto tipo objekto į įrašo struktūrą, bet atskiri laukai gali būti nuskaityti iš neapibrėžto tipo objekto, kad būtų galima sukurti naują įrašą. |
Įrašo nuoroda | netaikoma | Įrašų nuorodos yra unikalios duomenų šaltiniams ir neturi prasmingo vaizdavimo neapibrėžto tipo objektuose. |
Table | Table() ir ForAll() | Neapibrėžto tipo objektas gali simbolizuoti masyvą, kurį galima konvertuoti į lentelę. Šie objektai gali būti įrašų masyvai arba reikšmių masyvai, kurie iš esmės yra vieno stulpelio lentelės. ForAll() galima naudoti norint sukurti lentelę su visiškai įvestais įrašais. Norėdami gauti daugiau informacijos, peržiūrėkite šiame straipsnyje toliau pateiktus pavyzdžius. |
Tekstinė žinutė | Tekstas() | Tekstą galima tiesiogiai konvertuoti. Jei neapibrėžto tipo objektas atitinka skaičių, prieš konvertuodami į tekstą turite konvertuoti neapibrėžto tipo objektą į skaičių naudodami Value(). |
Įrašų tipai
Kintamojo, nurodančio neapibrėžto tipo objektą, laukus galite pasiekti naudodami įrašams naudojamą įprastą taškinę notaciją. Tačiau laukų egzistavimas nebus patikrintas tol, kol nebus atliktas vykdymas. Dėl šios priežasties taip pat nėra galimų „intellisense“. Jei lauko nėra arba jis turi pagrindinę nulinę reikšmę, jo vertinimas busBlank() reikšmė.
Kiekvienas įrašo laukas taip pat yra neapibrėžto tipo objektas ir jį reikia tinkamai įvesti. Laukas gali būti paprasto tipo neapibrėžto tipo įrašas. Jei tai įrašas, taškinį notavimą galite susieti. Jei nėra jokio lauko, esančio grandinėje, grąžinama Blank() reikšmė.
Toliau pateiktuose pavyzdžiuose naudojami laukai iš neapibrėžto tipo objekto kintamojo, pavadinto UORecord
.
Text(UORecord.StringField)
Value(UORecord.Field.ChildField)
Jei lauko pavadinimą sudaro netinkamas identifikatoriaus pavadinimas, pvz., kai laukų pavadinimai prasideda skaičiumi arba yra netinkamų simbolių, pvz., brūkšnelis, laukų pavadinimus galite rašyti viengubose kabutėse:
untyped.'01'
untyped.'my-field'
Masyvai
Neapibrėžto tipo objekto kintamajame gali būti masyvas. Net jei masyvas galėtų būti arba įrašų masyvas, arba paprastų tipų masyvas, konvertuodami neapibrėžto tipo objekto masyvą į lentelę naudodami funkciją Table(), funkcija visada bus vieno stulpelio neapibrėžto tipo objektų lentelė. Funkcijoms, tokioms kaip ForAll() ir Index() iš pradžių nereikia kurti Table(), todėl nereikia naudoti vieno stulpelio Value
lauko,
Pavyzdžiui, jei norite gauti antrą skaičių neapibrėžto tipo objekto masyve, kuriame yra skaičiaus reikšmės ( [1, 2, 3]
), antrai lentelės eilutei gauti ir stulpeliui į skaičių konvertuoti galima naudoti šią formulę:
Value( Index( UOArray, 2 ) )
Jei neapibrėžto tipo objektas pirmiau buvo konvertuotas į Table(), antra eilutė vieno stulpelio lentelėje yra Value
neapibrėžto tipo objekto stulpelis:
Value( Index( Table( UOArray ), 2 ).Value )
Įrašų, kurių teksto stulpelis pavadintas Field
, masyvui taikoma ta pati logika. Neapibrėžto tipo objektą galima pasiekti tiesiogiai arba, jei naudojant funkciją Table(), bus pateikta neapibrėžto tipo objekto vieno stulpelio lentelė.
Stulpelį Field
galima pasiekti tiesiai iš neapibrėžto tipo objekto, kurį grąžino Index() funkcija.
Text( Index( UORecordArray, 2 ).Field )
Naudodami funkciją Table(), pirmiausia nuskaitykite vieno stulpelio Value
stulpelį, kad gautumėte neapibrėžto tipo objektą, tada pasiekite stulpelį Field
:
Text( Index( Table( UORecordArray ), 2 ).Value.Field )
Jei norite konvertuoti įrašų masyvą į įrašytą lentelę, galite naudoti funkciją FoAll() ir konvertuoti kiekvieną atskirą lauką.
ForAll( UORecordArray, { FirstField: Value(ThisRecord.FirstField), SecondField: Text(ThisRecord.SecondField) } )
Jei neapibrėžto tipo objektas pirmiau yra konvertuojamas į lentelę, dar kartą, neapibrėžto tipo objekto lentelė reikalaus, kad naudotumėte Value
stulpelį, kad gautumėte šiuos laukus.
ForAll( Table(UORecordArray), { FirstField: Value(ThisRecord.Value.FirstField), SecondField: Text(ThisRecord.Value.SecondField) } )