Jaa


Tyypittämättömän objektin tietotyyppi

Tyypittämätön objekti on Power Fx:n tietotyyppi, joka voi sisältää minkä tahansa monimutkaisen tai yksinkertaisen tietorakenteen. Sitä ei voi käyttää suoraan ja se edellyttää eksplisiittistä muuntamista tietotyypiksi. Tyypittämättömän objektin tietueiden kenttiä voi käyttää pistenotaation avulla, ja kenttien olemassaolo tarkistetaan vasta suorituksen aikana.

Tyypittämätön objekti on tiettyjen tyypittämättömien palveluiden palautustyyppi. Tällä hetkellä vain ParseJSON()-funktio palauttaa tyypittämättömän objektin.

Yksinkertaiset tyypit

Tyypittämätön objekti -tyyppisen muuttujan arvoa ei voi käyttää suoraan. Sinun täytyy muuttaa se aina oikeaan tyyppiin käyttämällä vastaavaa tyypin konstruktoria.

Seuraavat esimerkit muuntavat tyypittämättömän objektinUOValue-muuttujan arvon.

Text(UOValue)
Value(UOValue)

Seuraavassa taulukossa on esitetty tietotyypit ja vastaavat funktiot, jotka muuntavat tyypittämättömän objektin kyseiseksi tietotyypiksi.

Tietotyyppi Function Description
Totuusarvo Boolean() Kun muunnat tyypittämätöntä objektiatotuusarvoksi, perustana olevan arvon on oltava totuusarvo tai tyyppi, joka voidaan muuntaa automaattisesti (esimerkiksi merkkijono "tosi").
Color ColorValue() tai RGBA() Väriejä voidaan esittää Cascading Style Sheet (CSS) -värimääritelmien notaatiossa merkkijonona tai yksittäisinä RGBA-komponentteina. Tyypittämätön objekti voidaan muuntaa suoraan Cascading Style Sheet (CSS) -värimääritelmän merkkijonosta käyttämällä funktiota ColorValue() tai yksittäisistä RGBA-numeroista väriksi käyttämällä funktiota RGBA().
Valuutta, Numero Value() Kun muunnat tyypittämätöntä objektianumeroksi, perustana olevan arvon on oltava numero tai tyyppi, joka voidaan muuntaa automaattisesti (esimerkiksi merkkijono "123,456").
Päivämäärä, Päivämäärä ja aika, Aika DateValue(), TimeValue() tai DateTimeValue() Päivämäärä-, aika- ja päivämäärä/aika-tyypit voidaan muuntaa suoraan tyypittämättömästä objektista niitä vastaavaksi tyypiksi, kun ne on esitetty ISO 8601 -muodossa. Muut muodot täytyy muuntaa ensin tekstiksi käyttämällä funktiota Text() ja välittää sitten funktioon DateValue(), TimeValue() tai DateTimeValue(), joka käyttää päivämäärän ja kellonajan tulkitsemiseen oletusarvoisesti tämänhetkisen käyttäjän asetusten kieltä.
GUID GUID() Tyypittämätön objekti voidaan muuntaa suoraan GUID-tunnukseksi, jos taustalla oleva objekti esittää GUID-tunnusta tai merkkijonoa.
Hyperlinkki, Kuvia, Media Text() Nämä tietotyypit ovat tekstitietotyyppejä, ja ne voidaan muuntaa tekstiksi ja käyttää sitten Power Fxissa.
Vaihtoehto, Kahksi asetusta Switch() tai If() Vaihtoehdot ja kahden asetuksen kentät esitetään Power Fx:ssä lokalisoituina merkkijonoina. Vaihtoehtojen perässä on numero ja kahden asetuksen kenttien perässä on totuusarvo. Totuusarvoa, numeroa tai merkkijonoa ei voi muuntaa suoraan vaihtoehdoksi tai kahden asetuksen kentäksi, mutta Switch()- ja If()-funktioita voidaan käyttää totuusarvo-, teksti- tai numeroarvolle vaihtoehdon tai kahden asetuksen kentän arvon delegoimiseksi oikein.
Nauhoita Ei käytettävissä Tyypittämätöntä objektia ei voi muuntaa suoraan tietuerakenteeksi, mutta tyypittämättömästä objektista voidaan noutaa yksittäisiä kenttiä uuden tietueen luomiseksi.
Tietueviittaus Ei käytettävissä Tietueviittaukset ovat yksilöllisiä tietolähteille, eikä niillä ole merkityksellistä esitysmuotoa tyypittämättömissä objekteissa.
Table Table() ja ForAll() Tyypittämätön objekti voi esittää matriisia, joka voidaan muuntaa taulukoksi. Nämä objektit voivat olla tietueiden matriiseja tai arvojen matriiseja, jotka ovat käytännössä yksisarakkeisia taulukoita. ForAll()-funktiota voidaan käyttää täysin tyypitettyjä tietueita sisältävän taulukon luomiseen. Katso lisätietoja tämän artikkelin jäljempänä olevista esimerkeistä.
Viesti Text() Teksti voidaan muuntaa suoraan. Jos tyypittämätön objekti edustaa numeroa, sinun täytyy muuntaa tyypittämätön objekti numeroksi Value()-funktiolla ennen sen muuntamista tekstiksi.

Tietuetyypit

Voit käyttää tyypittämättömän objektin tietuetta edustavan muuttujan kenttiä käyttämällä tietueille käytettyä pistenotaatiota. Kenttien olemassaolo vahvistetaan kuitenkin vasta suorituksen aikana. Tämän vuoksi intellisense ei ole myöskään käytettävissä. Jos kenttää ei ole olemassa tai sillä on null-arvo taustalla, sen käyttö johtaa Blank()-arvoon.

Myös tietueen kaikkien kenttien tyyppi on tyypittämätön objekti, ja ne täytyy muuttaa oikeaan tyyppiin. Kenttä voi olla yksinkertainen tyypittämätön tietue. Jos se on tietue, voit ketjuttaa pistenotaation. Jos jotain ketjun kenttää ei ole olemassa, funktio palauttaa Blank()-arvon.

Seuraavat esimerkit käyttävät tyypittämättömän objektinUORecord-muuttujan kenttiä.

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

Jos kentän nimi sisältää virheellisen tunnistenimen, esimerkiksi silloin, kun kenttien nimien alussa on numero tai jos siinä on virheellisiä merkkejä, kuten tavuviivaa, voit lisätä kenttien nimet yksinkertaisiin lainausmerkkeihin:

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

Matriisit

Tyypittämättömän objektin muuttuja voi sisältää matriisin. Vaikka matriisi voi olla joko tietueiden matriisi tai yksinkertaisten tyyppien matriisi, tyypittämättömän objektin matriisin muutaminen taulukoksi Table()-funktiolla johtaa aina tyypittämättömien objektien yksisarakkeiseen taulukkoon. Funktiot, kuten ForAll() ja Index() eivät edellytä, että ensin luodaan Table() eivätkä sen vuoksi edellytä käytettäväksi yksisarakkeista Value -kenttää,

Jos esimerkiksi haluat saada toisen numeron tyypittämättömän objektin matriisista, joka sisältää numeroarvot ([1, 2, 3]), voit käyttää seuraavaa kaavaa noutaaksesi taulukon toisen numeron ja muuntaaksesi yksisarakkeisen taulukon sarakkeen numeroksi:

Value( Index( UOArray, 2 ) )

Jos tyypittämätön objekti muunnettiin ensin tyypiksi Table(), tuloksena saatavan yksisarakkeisen taulukon toinen rivi on Value-sarake, joka sisältää tyypittämättömän objektin:

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

Jos tietuematriisi sisältää tekstisarakkeen, jonka nimi on Field, käytetään samaa logiikkaa. Tyypittämätöntä objektia voidaan käyttää suoraan. Jos käytössä on Table()-funktio, tuloksena on yksisarakkeisen tyypittämätön objekti -taulukon.

Field-saraketta voi käyttää suoraan tyypittämättömästä objektista, jonka Index()-funktio palautti.

Text( Index( UORecordArray, 2 ).Field )

Käytettäessä Table() -funktiota noudetaan ensin yksisarakkeinen Value-sarake, jolla saadaan tyypittämätön objektin, ja sitten käytetään Field-saraketta:

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

Jos haluat muuntaa tietueiden matriisin tyypitetyksi taulukoksi, voit käyttää ForAll()-funktiota ja muuntaa kunkin yksittäisen kentän.

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

Jos tyypittämätön objekti muunnetaan ensin taulukoksi, tuloksena saatava yksisarakkeinen tyypittämätön objekti -taulukko edellyttää Value-sarakkeen käyttöä kenttien saamiseksi.

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