Jaa


Power FxYAML-kaavan kielioppi

Muistiinpano

Microsoft Power Fx on pohjaan perustuvien sovellusten kaavakielen uusi nimi. Näitä liittyviä artikkeleita päivitetään, koska kieli on poimittu pohjaan perustuvasta sovelluksesta, integroitu toisten Microsoft Power Platform -tuotteiden kanssa ja määritetty käytettäväksi avoimena lähdekoodina. Aloita kielen esittelyn Microsoft Power Fx:n yleiskatsaus.

Microsoft Power Fx sisältää hyvin muodostetun kieliopin Exceliin perustuvia lausekkeita varten. Kun sitä käytetään Power Apps ja muissa isännissä, joissa käyttöliittymä sisältää kaavassa sidonnan nimestä lausekkeeseen, kaavan sidonnan muokkaamiselle tekstinä ei ole vakiotapaa.

Tätä sidontaa varten on valittu toimialan vakiokieli YAML. YAML-kielen käsittelemiseen on jo suuri määrä editoreita, työkaluja ja kirjastoja. Tässä artikkelissa käsitellään kaavojen esittämisestä YAML-kielellä.

Tällä hetkellä tuetaan vain YAML-kielen rajoitettua alijoukkoa. Vain tässä artikkelissa käsiteltyjä rakenteita tuetaan.

Kaikkia pohjaan perustuvan sovelluksen määrittäviä seikkoja ei esitetä tässä. Lisätietoja on muissa tiedostoissa, jotka työkalu muodostaa ja joita se käyttää.

Alussa oleva yhtäläisyysmerkki

Kaikkien lausekkeiden alussa on oltava johtava yhtäläisyysmerkki =:

Visible: =true
X: =34
Text: |
	="Hello, " &
	"World"

=-merkkiä käytetään tällä tavoin kolmesta syystä:

  • Se on yhdenmukaista Excelin kanssa. Siinä käytetään johtavaa yhtäläisyysmerkkiä =, joka sitoo lausekkeen soluun.
  • Se poistuu tehokkaasti kaavakielen syntaksista niin, että YAML ei yritä jäsentää sitä. Yleensä YAML käsittelee merkinnän text: 1:00 minuutteina ja sekunteina ja muuntaa sen numeroksi. Jos lisätään =, YAML ei käytä sen implisiittisiä kirjoitussääntöjä, eikä kaavoja muuteta. = kattaa lähes kaikki tapaukset. Poikkeukset kuvataan seuraavassa osassa, joka on Yhden rivin kaavat.
  • Tulevaisuudessa tuetaan sekä kaavoja (alussa on merkintä =) että muita kuin kaavoja (ei merkintää=) samassa tiedostossa samalla tavalla kuin Excelissä. Tämä tehdään YAML-tiedostoissa ja muissa kuin YAML-tiedostoissa Microsoft Power Platform lähdetiedostoissa. Aina kun kaavaa tuetaan, alussa oleva = erottelee Power Apps kaavalausekkeen staattisesta skalaariarvosta.

Yksiriviset kaavat

Yksiriviset kaavat kirjoitetaan seuraavassa muodossa:

Name:SPACE=Expression

Kaksoispisteen ja yhtäläisyysmerkin välillä on oltava välilyönti, jotta YAML-yhteensopivuus saavutetaan. Yhtäläisyysmerkki häiritsee YAML:n normaalia lausekkeen tulkintaa, joten rivin loppu voidaan tulkita Power Fx -muodossa. Esimerkki:

Text1: ="Hello, World"
Text2: ="Hello " & ", " & "World"
Number1: =34
Boolean1: =true
Time1: =1:34

Numeromerkki # ja kaksoispiste : eivät ole sallittuja missään yhden rivin kaavassa, vaikka ne olisivat tekstimerkkijono tai tunnisteen nimi lainausmerkkien sisällä. Jos haluat käyttää numeromerkkiä tai kaksoispistettä, kaava on ilmaistava monirivisenä kaavana. YAML tulkitsee numeromerkin kommentiksi ja kaksoispisteen YAML:n uuden nimen yhdistämismääritykseksi. Jos haluat lisätä kommentin yksiriviseen kommenttiin, käytä Power Fx:n rivin kommenttia, joka alkaa merkinnällä //.

Tavallisten YAML:n ohjausmerkkien käyttämistä yksinkertaisten lainausmerkkien ja C-kielen kaltaisten kenoviivojen kanssa ei tueta. Käytä sen sijaan monirivistä kaavaa. Tämä varmistaa yhdenmukaisuuden ja helpottaa leikkaa/liimaa-toiminnon käyttämistä kaavarivillä Power Apps Studio ja YAML:n lähdetiedostoissa.

Lisätietoja sallituista nimistä ja lausekerakenteista on operaattorien ja tunnisteiden ohjeissa.

Moniriviset kaavat

Kaavat voidaan kohdistaa useille riveille käyttämällä YAML:n lohkon skalaarin ilmaisimia seuraavasti:

Name:SPACE ( | tai |+ tai |- ) =Expression-LineExpression-Line ...

Kaikki lohkoon kuuluvat rivit on sisennettävä ainakin yhdellä välilyönnillä ensimmäisen rivin tasosta.

Esimerkki:

Text1: |
    ="Hello, World"
Text2: |
    ="Hello" &
    "," &
    "World"

Kaikki YAML:n monirivisen skalaarin merkintöjen muodot hyväksytään tuonnissa, myös esimerkiksi >+. Jos kuitenkin haluat varmistaa, että välilyönti säilytetään oikein, tuotetaan vain |, |+ tai |-.

Komponenttiesiintymä

Komponenttien esiintymät määritetään käyttämällä YAML:n objektin merkintää. Objektin tyyppi on muodostettu As-operaattorin avulla osana vasemmalla puolella olevaa YAML-tunnistetta. Oliot voidaan asettaa sisäkkäin säilöohjausobjekteissa.

NameAsComponent-Type [ .Component-Template ] : ( Single-Line-Formula tai Multi-Line-Formula tai Object-instance ) ...

Kaikki lohkoon kuuluvat rivit on sisennettävä ainakin yhdellä välilyönnillä ensimmäisen rivin tasosta.

Esimerkki:

Gallery1 As Gallery.horizontalGallery:
    Fill: = Color.White
    Label1 As Label:
        Text: ="Hello, World"
        X: =20
        Y: =40
        Fill: |
            =If( Lower( Left( Self.Text, 6 ) ) = "error:",
                Color.Red,
                Color.Black
            ) 

Component-Type voi olla mikä tahansa kaaviokomponentti tai ohjausobjekti. Perustyyppejä, numeroa, ei tueta.

Component-Template on sellaisten komponenttien valinnainen määrite, joissa on erilaisia malleja, kuten Valikoima. Kaikilla komponenteilla ei ole malleja.

Jos nimi sisältää erikoismerkkejä ja se on yksinkertaisten lainausmerkkien sisällä, kaksoispisteen vasemmalla puolella olevassa koko lauseessa on käytettävä ohjausmerkkejä. Seuraavassa on esimerkkejä siitä, kuinka tämä voidaan tehdä:

  • Käytä yksinkertaisia lainausmerkkejä koko vasemmalla puolella. Olemassa olevia yksinkertaisia lainausmerkkejä on käytettävä kaksi kertaa seuraavasti:
    '''A name with a space'' As Gallery':
    
  • Sulje koko vasen puoli lainausmerkkeihin, mutta varmista, että seuraavalla nimellä ei ole lainausmerkkejä:
    "'A name with a space' As Gallery":
    

Komponentin määritelmä

Komponentit määritetään vastaavasti luomalla jonkin tuetun perustyypin esiintymä. Perustyypeille ei voi määrittää esiintymää suoraan. Oliomääritelmässä voidaan lisätä ominaisuuksia perustyypin sisältöön.

Tuetut perustyypit: CanvasComponent

Yksinkertainen ominaisuuden määritelmä

Komponentit käyttävät ominaisuuksia ollessaan yhteydessä sen sovelluksen kanssa, jossa niitä isännöidään.

Name: ( Single-Line-Expression tai Multi-Line-Expression )

Lausekkeen tyyppi ilmaiseen kaavan tyypin epäsuorasti.

Syöteominaisuuksien osalta lausekkeessa on sovellukseen lisättävä oletus, kun komponentista tehdään esiintymä. Tekijä voi muokata lauseketta sopivaksi katsomallaan tavalla, mutta hän ei voi muuttaa tyyppiä.

Tulosominaisuuksien osalta lausekkeessa on suoritettava laskutoimitus. Tekijä ei voi muokata tätä lauseketta. Se on eristetty komponentista.

Tällä hetkellä kaikki ominaisuudet ovat vain tietovuota, eikä ne voi sisältää epätoivottuja vaikutuksia.

Tällä hetkellä ominaisuuden lisämetatietoja ei ole määritetty tässä, vaan ne määritetään tiedoston .msapp muissa tiedostoissa. Näin tehdään esimerkiksi ominaisuuden kuvauksen kohdalla.

Esimerkki:

DateRangePicker As CanvasComponent:
    DefaultStart: |-
		=// input property, customizable default for the component instance
		Now()                      
    DefaultEnd: |-
		=// input property, customizable default for the component instance
		DateAdd( Now(), 1, Days )    
    SelectedStart: =DatePicker1.SelectedDate   // output property
    SelectedEnd: =DatePicker2.SelectedDate     // output property

YAML-yhteensopivuus

YAML-kommentit

YAML-rivin kommentteja, jotka on eroteltu numeromerkillä # ei säilytetä missään lähdemuodossa. Sen sijaan kaavassa rivikommentit erotetaan merkkien // avulla tai kommentit estetään merkin /* ja */ avulla. Lisätietoja: Kommentit

Yleisten ongelmakohtien virheet

Power Fx:n ja YAML:n kieliopit ovat muutamassa kohdassa yhteensopimattomia tai ne voivat hämmentää käyttäjää. Tällöin palautetaan virhe.

Esimerkiksi seuraavassa esimerkissä

Text: ="Hello #PowerApps"
Record: ={ a: 1, b: 2 }

YAML käsittelee numeromerkkiä # kommenttina , vaikka se on upotettu ja Excel pitää sitä tekstimerkkijonona (joka on lainausmerkkien sisällä). Jotta vältytään sekaannukselta, tämä tapaus palauttaa virheen tuonnin aikana. Sen sijaan voidaan käyttää YAML:n monirivilomaketta.

Jos arvo on record, YAML pitää kohteita a: ja b: toisena nimen yhdistämismäärityksen sidontana. YAML mahdollistaa saman nimen yhdistämismäärityksen käyttämisen uudelleen niin, että viimeinen hiljaa korvaa kaikki edelliset määritykset. Koska tämä voi aiheuttaa sekaannuksia tekijöille, jotka käyttävät vain vähän koodia, ja ominaisuuden kaavan menettämiseen, palautetaan virhe, jos sama nimi löytyy kaksi kertaa.