Tyypittämättömän objektin tietotyyppi
tyypittämätön objekti on tietotyyppi, joka voi sisältää minkä tahansa tietorakenteen Power Fx , monimutkaisen tai yksinkertaisen. 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 kirjoittamattomien palveluntarjoajien 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 objektin UOValue
-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 | totuusarvo() | Kun muunnat tyypittämätöntä objektia totuusarvoksi, 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 | Arvo() | Kun muunnat tyypittämätöntä objektia numeroksi, 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 | Teksti() | Nämä tietotyypit ovat tekstitietotyyppejä, ja ne voidaan muuntaa tekstiksi ja käyttää sitten Power Fxissa. |
Vaihtoehto, Kahksi asetusta | Switch() tai If() | Vaihtoehdot ja kaksi vaihtoehtoa esitetään lokalisoituina merkkijonoina Power Fx. Valintojen tukena on numero ja kaksi vaihtoehtoa booleaneiksi. 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() -toiminnolla voidaan luoda taulukko, jossa on täysin kirjoitettuja tietueita. Katso lisätietoja tämän artikkelin jäljempänä olevista esimerkeistä. |
Viesti | Teksti() | 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 objektin UORecord
-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) } )