Deli z drugimi prek


Power FxSlovnica formule YAML

opomba,

Microsoft Power Fx je novo ime za jezik formule za aplikacije s platnom. Ti članki so delo v teku, saj izvlečemo jezik iz aplikacij s platnom, ga integriramo z drugimi izdelki Microsoft Power Platform in damo na voljo odprtokodno. Začnite s člankom Pregled storitve Microsoft Power Fx za uvod v jezik.

Microsoft Power Fx ima dobro uveljavljeno slovnico izrazov, ki temeljijo na Excelu. Ko pa se uporablja v Power Apps in drugih gostiteljih, kjer uporabniški vmesnik zagotavlja navezavo imena na izraz za formulo, ni standardnega načina urejanja navezave formule kot besedila.

Izbrali smo panožni standard YAML kot naš jezik za to vezanje. Za delo z YAML-om že obstajajo številni urejevalniki, orodja in knjižnice. Ta članek opisuje, kako predstavljamo formule v YAML-u.

Trenutno podpiramo samo omejeno podskupino YAML-a. Podprti so samo konstrukti, opisani v tem članku.

Tu ni predstavljeno vse, kar opredeljuje aplikacijo s platnom; dodatne informacije se pretakajo skozi druge datoteke, ki jih orodje ustvari in porabi.

Začetni enačaj

Najpomembneje je, da se vsi izrazi začnejo z začetnim enačajem =:

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

Znak = uporabljamo na ta način iz treh razlogov:

  • To je dosledno z Excelom, ki uporablja začetni znak = za vezavo izraza na celico.
  • Učinkovito prezre sintakso jezika formule, tako da je jezik YAML ne poskuša razčleniti. Običajno bi jezik YAML text: 1:00 obravnaval kot minute in sekunde in to pretvoril v število. Z vstavljanjem znaka =, jezik YAML ne bo uporabljal svojih implicitnih pravil vnosa in formule ne bodo poškodovane. Uporaba znaka = zajema večino primerov, vendar ne vseh, te izjeme pa so opisane v naslednjem razdelku, Enovrstične formule.
  • V prihodnosti bomo v isti datoteki podpirali formule (z znakom = na začetku) in ne-formule (brez znaka =), tako kot to počne Excel, lahko to storimo v izvornih datotekah za datoteke, zapisane v jeziku YAML, in datoteke, ki niso zapisane v jeziku YAML na platformi Microsoft Power Platform. Kjerkoli je formula podprta, uvodni = razlikuje izraz formule Power Apps od statične skalarne vrednosti.

Enovrstične formule

Enovrstične formule so zapisane v naslednji obliki:

Ime:SPACE=Izraz

Razmik med dvopičjem in enačajem mora biti skladen z jezikom YAML. Enačaj moti jezik YAML pri normalni interpretaciji izraza, kar omogoča, da se preostali del vrstice razlaga kot Power Fx. Primer:

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

Številski znak # in dvopičje : nista dovoljena nikjer v enovrstičnih formulah, tudi če sta v besedilnem nizu ali imenu identifikatorja. Če želite uporabiti številčni znak ali dvopičje, morate formulo izraziti kot večvrstično formulo. Številčni znak se v jeziku YAML razlaga kot komentar, dvopičje pa kot nova imenska preslikava v jeziku YAML. Če želite dodati komentar v eno vrstico, uporabite komentar v vrstici Power Fx, ki se začne z //.

Uporaba običajnega prezrtja jezika YAML z enojnimi narekovaji in poševnicami, podobnimi C, ni podprta; namesto tega uporabite večvrstično formulo. Razlog za to je doslednost in lažje rezanje/lepljenje med vrstico formule v aplikaciji Power Apps Studio in izvornimi datotekami YAML.

Oglejte si dokumentacijo operatorjev in identifikatorjev aplikacij s platnom za podrobnosti o dovoljenih imenih in strukturi izraza.

Večvrstične formule

Formule lahko s skalarnimi kazalniki bloka YAML obsegajo več vrstic:

Ime:SPACE ( | ali |+ ali |- ) =Vrstica izrazaVrstica izraza ...

Vse vrstice, ki so del bloka, morajo biti zamaknjene vsaj za en presledek od ravni prve vrstice.

Na primer:

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

Pri uvozu so sprejete vse oblike večvrstičnih skalarnih zapisov YAML, vključno z na primer znakoma >+. Da pa zagotovimo pravilno ohranjenost presledka, se proizvedejo samo |, |+ ali |-.

Primerek komponente

Komponente se ustvarijo z zapisom objektov YAML. Tip predmeta se določi z operatorjem As kot del leve oznake YAML. Za kontrolnike vsebnikov je predmete mogoče ugnezditi.

ImeAsVrsta komponente [ .Predloga komponente ] : ( Enovrstična formula ali Večvrstična formula ali Primerek predmeta ) ...

Vse vrstice, ki so del bloka, morajo biti zamaknjene vsaj za en presledek od ravni prve vrstice.

Na primer:

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 je lahko katera koli komponenta ali kontrolnik platna. Osnovni tipi, kot so Številka, niso podprti.

Predloga komponente je neobvezno določilo za komponente, ki imajo drugačne predloge kot v Galeriji. Vse komponente nimajo predlog.

Če Ime vsebuje posebne znake in je obdano z enojnimi narekovaji, ne bo treba prezreti celotnega izraza na levi strani dvopičja. To lahko ustvarite na enega izmed naslednjih načinov:

  • Z enojnim narekovajem obdajte celotno levo stran, kar zahteva, da se obstoječe enojne narekovaje uporabi dvakrat:
    '''A name with a space'' As Gallery':
    
  • Z dvojnimi narekovaji obdajte celotno levo stran, vendar se prepričajte, da v imenu ni dvojnih narekovajev:
    "'A name with a space' As Gallery":
    

Definicija komponente

Komponente so prav tako definirane z ustvarjanjem primerka ene od podprtih osnovnih vrst. Ni mogoče neposredno ustvariti primerkov osnovnih vrst. Znotraj definicije predmeta lahko osnovni vrsti dodate lastnosti.

Podprte osnovne vrste so: CanvasComponent

Definicija enostavne lastnosti

Komponente uporabljajo lastnosti za komunikacijo z aplikacijo, v kateri gostujejo.

Ime: ( Enovrstični izraz ali Večvrstični izraz )

Vrsta formule se nanaša na vrsto izraza.

Za vhodne lastnosti bo izraz zagotovil privzeto vrednost, ki jo je treba vstaviti v aplikacijo ob namestitvi komponente. Ustvarjalec lahko po potrebi spremeni ta izraz, ne more pa spremeniti vrste.

Za izhodne lastnosti bo izraz zagotovil izračun, ki ga je treba izvesti. Ustvarjalec tega izraza ne more spremeniti, ovit je v komponento.

Trenutno so vse lastnosti samo tok podatkov in ne morejo vsebovati neželenih učinkov.

Trenutno tukaj niso opredeljeni dodatni metapodatki o lastnosti, ampak so namesto tega definirani v drugih datotekah datoteke .msapp, na primer v opisu lastnosti.

Na primer:

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

Združljivost z YAML

Komentarji YAML

Komentarji vrstice YAML, ločeni s številskim znakom # niso shranjeni nikjer v izvorni obliki. Namesto tega znotraj formule ločite komentarje vrstic z znaki // ali blokirajte komentarje z znakoma /* in */. Več informacij: Komentarji

Napake pri pogostih pasteh

Obstaja nekaj krajev, kjer sta slovnici Power Fx in YAML nezdružljivi ali morda uporabnika zmedeta. V teh primerih se vrne napaka.

Na primer v naslednjem primeru:

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

številski znak # je jezik YAML obravnaval kot komentar, čeprav je vdelan v tisto, kar Excel šteje za besedilni niz (v dvojnih narekovajih). V izogib zmedi bo ta primer med uvozom vrnil napako. Namesto tega je mogoče uporabiti večvrstični obrazec YAML.

V primeru vrednosti za record, YAML upošteva, da sta a: in b: še ena vezava imenske preslikave. YAML omogoča ponovno uporabo iste imenske preslikave, pri čemer zadnja tiho preglasi vse prejšnje definicije. Ker lahko to ustvarjalca z malo kode zmede in povzroči izgubo formule lastnosti, se napaka vrne, če dvakrat naletimo na isto ime.