Dijeli putem


Power FxGramatika formule YAML

Napomena

Microsoft Power Fx novo je ime za jezik formula za aplikacije od gotovih gradivnih elemenata. Ovi su članci nedovršeni dok izdvajamo jezik iz aplikacija od gotovih gradivnih elemenata i integriramo ga s drugim Microsoft Power Platform proizvoda i činimo ga dostupnim kao otvoreni kod. Počnite s odjeljkom Pregled jezika Microsoft Power Fx za uvod u jezik.

Microsoft Power Fx ima dobro uspostavljenu gramatiku izraza utemeljenih na programu Excel. Međutim, kada se koristi u servisu Power Apps i drugim domaćinima gdje korisničko sučelje pruža povezivanje naziva u izraz za formulu, ne postoji standardni način uređivanja povezivanja formule kao teksta.

Odabrali smo industrijski standard YAML kao naš jezik za ovo povezivanje. Već postoji velik broj uređivača, alata i biblioteka za rad s YAML-om. Ovaj članak opisuje kako predstavljamo formule u YAML-u.

Trenutno podržavamo samo ograničeni podskup YAML-a. Podržani su samo konstrukti opisani u ovom članku.

Ovdje nije predstavljeno sve što definira aplikaciju od gotovih gradivnih elemenata; dodatne informacije protječu kroz druge datoteke koje alat izrađuje i upotrebljava.

Znak jednakosti na početku

Prvo i najvažnije, svi izrazi moraju započeti znakom jednakosti = na početku:

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

Na ovaj način koristimo = iz tri razloga:

  • Sukladan je programu Excelu koji koristi znak = na početku za povezivanje izraza s ćelijom.
  • Učinkovito izbjegava sintaksu jezika formule tako da ga YAML ne pokušava raščlaniti. Obično bi YAML tretirao text: 1:00 kao minute i sekunde, pretvarajući ih u broj. Umetanjem znaka = YAML neće koristiti svoja implicitna pravila tipkanja i formule neće biti oštećene. Koristeći znak = obuhvaća većinu slučajeva, ali ne sve, a te su iznimke opisane u sljedećem odjeljku Formule u jednom retku.
  • U budućnosti ćemo podržavati obje formule (započinje znakom =) i ne-formule (ne =) u istoj datoteci, baš kao što to čini Excel. To možemo učiniti u YAML i ne-YAML datotekama izvornih datoteka platforme Microsoft Power Platform. Gdje god je podržana formula, vodeći znak = razlikuje izraz formule servisa Power Apps od statičke skalarne vrijednosti.

Jednoredne formule

Jednoredne formule napisane su u obliku:

Naziv:SPACE=Izraz

Razmak izmeđuzareza i znaka jednakosti mora biti u skladu s YAML standardom. Znak jednakosti narušava YAML-ovu normalnu interpretaciju izraza jer dopušta da se ostatak retka tumači kao Power Fx. Na primjer:

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

Brojčani znak # i dvotočka: nisu dopušteni nigdje u formulama u jednom retku, čak i ako su u navedenom tekstualnom nizu ili imenu identifikatora. Da biste koristili brojčani znak ili dvotočku, morate izraziti formulu kao formulu u više redaka. Brojčani znak tumači se kao komentar u YAML-u, a dvotočka kao nova karta imena u YAML-u. Da biste dodali komentar komentaru u jednom retku, upotrijebite linijski komentar jezika Power Fx koji započinje znakom //.

Korištenje uobičajenog YAML-a s jednostrukim navodnicima i obrnutim crticama nalik na C nije podržano; umjesto toga upotrijebite formulu u više redaka. To je zbog dosljednosti i olakšavanja rezanja / lijepljenja između trake s formulama u aplikaciji Power Apps Studio i YAML izvornim datotekama.

Pogledajte dokumentaciju za operatore i identifikatore aplikacija od gotovih gradivnih elemenata za pojedinosti o dopuštenim nazivima i strukturi izraza.

Formule u više redaka

Formule mogu obuhvaćati više redaka pomoću YAML-ovih skalarnih pokazatelja bloka:

Naziv:SPACE ( | ili |+ ili |- ) =Redak izrazaRedak izraza ...

Svi redci koji su dio bloka moraju biti uvučeni najmanje jednim razmakom od razine prvog retka.

Na primjer:

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

Svi oblici YAML višerednih skalarnih notacija prihvaćeni su pri uvozu, uključujući znak >+, na primjer. Međutim, kako bi se osiguralo da se razmak pravilno očuva, samo se prikazuju |, |+ ili |-.

Navođenje komponente

Komponente se primjenjuju pomoću oznake YAML objekata. Vrsta objekta utvrđuje se pomoću operatera As kao dio lijeve YAML oznake. Za kontrole spremnika, objekti se mogu ugnijezditi.

NazivAsVrsta komponente [ .Predložak komponente ] : ( Jednoredna formula ili Višeredna formula ili Instanca objekta ) ...

Svi redci koji su dio bloka moraju biti uvučeni najmanje jednim razmakom od razine prvog retka.

Na primjer:

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
            ) 

Vrsta komponente može biti bilo koja komponenta ili kontrola radnog područja. Osnovni tipovi, kao što je Broj, nisu podržani.

Predložak komponente je neobavezni specifikator za komponente koje imaju različite predloške, poput Galerije. Predloške nemaju sve komponente.

Ako Naziv sadrži posebne znakove i omotan je navodnicima, cjelokupna fraza s lijeve strane dvotočke morat će se izostaviti. To se može napraviti na jedan od sljedećih načina.

  • Upotrijebite jednostruke navodnike za umotavanje cijele lijeve strane, što zahtijeva da se postojeći pojedinačni navodnici upotrijebe dvaput:
    '''A name with a space'' As Gallery':
    
  • Upotrijebite dvostruke navodnike da biste omotali cijelu lijevu stranu, ali provjerite da u nazivu nema dvostrukih navodnika:
    "'A name with a space' As Gallery":
    

Definicija komponente

Slično tome, komponente se definiraju stvaranjem instance jedne od podržanih osnovnih vrsta. Osnovne vrste ne mogu se izravno instalirati. Unutar definicije objekta svojstva se mogu dodati onome što pruža osnovna vrsta.

Podržane osnovne vrste su: komponenta radnog područja

Jednostavna definicija svojstva

Komponente koriste svojstva za komunikaciju s aplikacijom u kojoj su udomaćene.

Naziv: ( Jednoredni izraz ili Višeredni izraz )

Vrsta izraza implicira vrstu formule.

Za svojstva unosa, izraz pruža zadani unos u aplikaciju kada se komponenta navodi. Autor može izmijeniti ovaj izraz onako kako smatra prikladnim, ali ne može promijeniti vrstu.

Za svojstva izlaza, izraz pruža izračun koji treba izvršiti. Autor ne može modificirati ovaj izraz, on je dio komponente.

Trenutačno su sva svojstva samo tok podataka i ne mogu sadržavati nuspojave.

Trenutačno dodatni metapodaci o svojstvu nisu ovdje definirani, već su definirani u drugim datotekama datoteke .msapp, na primjer opisu svojstva.

Na primjer:

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

Kompatibilnost YAML-a

Komentari YAML-a

Komentari u YAML retku odvojeni brojčanim znakom # nisu sačuvani nigdje u izvornom formatu. Umjesto toga, unutar formule razdvojite retke komentara znakovima // ili blokirajte komentare znakovima /* i */. Više informacija: Komentari

Pogreške za uobičajene zamke

Postoji nekoliko mjesta na kojima su gramatike jezika Power Fx i YAML-a nespojive ili mogu zbuniti korisnika. U tim slučajevima dolazi do pogreške.

Na primjer, razmotrite sljedeći primjer:

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

Brojčani znak # YAML tretira kao komentar, iako je ugrađen u ono što Excel smatra tekstnim nizom (omotan dvostrukim navodnicima). Da bi se izbjegla zabuna, u ovom će slučaju doći do pogreške tijekom uvoza. Umjesto njega može se koristiti YAML-ov višeredni obrazac.

U slučaju vrijednosti za record, YAML uzima u obzir a: i b: za još jedan naziv mapa koji povezuje. YAML omogućuje ponovnu upotrebu istoimene mape, s tim da je zadnja tiho nadjačala sve prethodne definicije. Budući da to može zbuniti autora niskog koda i može rezultirati gubitkom formule svojstva, pojavljuje se pogreška ako se dva puta upotrebljava isto ime.