Power Fx-i YAML-i valemi grammatika

Märkus

Microsoft Power Fx on lõuendirakenduste valemikeele uus nimi. Need artiklid on pooleli töö, kuna ekstraktime keele lõuendirakendustest, integreerime selle teiste Microsoft Power Platform toodetega ja teeme selle kättesaadavaks avatud allikana. Alustage Microsoft Power Fx ülevaatega sissejuhatuseks keelde.

Microsoft Power Fx omab Exceli põhjal hästi loodud avaldiste jaoks avaldisi. Kui seda kasutatakse Power Appsis ja muudes hostides, kus kasutajaliides pakub valemile nime ja avaldise sidumist, pole standardset viisi valemi sidumise tekstina redigeerimiseks.

Oleme valinud valdkonna standardi YAML teie õppekeeleks. YAML-iga töötamiseks on juba olemas suur hulk redaktoreid, tööriistu ja teeke. Selles artiklis kirjeldatakse, kuidas me YAML-i valemeid tähistame.

Praegu toetame ainult YAML-i piiratud alamhulka. Toetatakse ainult selles artiklis kirjeldatud konstruktsioone.

Siin ei ole esitatud kõike, mis lõuendirakendust määratleb; lisateave jõuab läbi muude failide, mida tööriist tekitab ja kasutab.

Juhtiv võrdusmärk

Kõigepealt peavad kõik avaldised algama juhtiva võrdusmärgiga =:

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

Kasutame = sel viisil kolmel põhjusel.

  • See on kooskõlas Exceliga, mis kasutab = avaldise viimist lahtrisse.
  • See pääseb tõhusalt valemikeele süntaksist, nii et YAML ei püüa seda sõeluda. Tavaliselt töötleks YAML selle text: 1:00 minutite ja sekunditega arvuks. Sisestades =, ei kasuta YAML oma kaudset tippimisreeglit ja valemeid ei saa kasutada. Kasutades = hõlmab see enamikku teenindusjuhtumeid, kuid mitte kõiki ja neid erandeid on kirjeldatud järgmistes jaotistes üherealised valemid.
  • Edaspidi toetame me samas failis nii valemeid (algab sellega =) kui mittevalemeid (ei =) samas failis, nagu Excel seda teha saab YAML ja mitte YAML failides nagu Microsoft Power Platform lähtefailides. Kõikjal, kus valemit toetatakse, eristab eesliide = Power Appsi valemi avaldist staatilisest skalaarväärtusest.

Üherealised valemid

Üherealised valemid kirjutatakse vormil järgmiselt.

Nimi : SPACE = avaldis

NII kooloni kui ka võrdusmärgi vaheline tühik peab olema YAML-iga kooskõlas. Võrdusmärk katkestab YAML-i tavalise väljendamise, võimaldades ülejäänud rea ülekirjutamist Power Fx-ks. Näiteks:

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

Numbrimärki # ja koolonit : ei lubata ühekordsetes valemites kuskil kasutada, isegi kui need on hinnapakkumisetekstistringi või identifikaatori nimes. Arvumärgi või kooloni kasutamiseks peate väljendama valemi mitmerealise valemina. Numbrimärki tõlgendatakse YAML kommentaarina ja koolonit YAML uue nimekaardina. Kommentaari lisamiseks ühele rea kommentaarile alustage Power Fx-i rea kommentaari valemiga //.

Tavalise YAMLi abil pääsemist üksikute jutumärkide ja C-sarnaste tagasilöökidega ei toetata: kasutage selle asemel mitmerealist valemit. See on ühtsuse huvides ning hõlbustab lõikamist/kleepimist valemiriba ja Power Apps Studio YAML-i lähtefailide vahel.

Lisateavet lubatud nimede ja avaldise struktuuri kohta leiate lõuendirakenduste tehtemärkide ja identifikaatorite dokumentatsioonist.

Mitmerealised valemid

Valemid võivad hõlmata mitut rida, kasutades YAML-i plokkskaala näitajaid:

Nimi : SPACE ( | või |+ või |- )  = avaldise ridaavaldise rida  ...

Kõik read, mis on ploki osad, peavad olema taandatud vähemalt ühe tühiku võrra, võrreldes esimese rea algusega.

Näiteks:

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

Importimisel aktsepteeritakse kõik YAML-i mitmerealise skaleeritava väärtuse vorme, sealhulgas >+ näiteks. Kuid tühiku nõuetekohase säilitamise tagamiseks toodetakse ainult |, |+ või |-.

Komponendi lisamine

Komponendid on eksemplarid, kasutades YAML-i objektitunnust. Objekti tüüp luuakse operaatori As abil vasakpoolsele YAML-sildi osana. Konteineri juhtelementide korral saab objekte pesastada.

NimiAsKomponendi tüüp [ .Komponendi mall ] :  ( Üherealine valem või Mitmerealine valem või Objekti eksemplar )  ...

Kõik read, mis on ploki osad, peavad olema taandatud vähemalt ühe tühiku võrra, võrreldes esimese rea algusega.

Näiteks:

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
            ) 

Komponendi tüüp võib olla mis tahes lõuendikomponent või -juhtelement. Baastüüpe nagu näiteks Arv ei toetata.

Komponendi mall on valikuline identifikaator erinevate mallidega (nt galerii) komponentide jaoks. Kõigil komponentidel malle pole.

Kui nimi sisaldab erimärke ja on pakitud ühekordsete jutumärkidega, tuleb kooloni vasakus servas asuvat fraasi muuta. Seda saab teha ühel järgmistest viisidest:

  • Kogu vasaku külje pakkimiseks kasutage üksikuid jutumärke, mis nõuab olemasolevate üksikute jutumärkide kasutamist kaks korda:
    '''A name with a space'' As Gallery':
    
  • Kogu vasaku külje pakkimiseks kasutage kahekordseid jutumärke, kuid veenduge, et nimes ei oleks kahekordseid jutumärke.
    "'A name with a space' As Gallery":
    

Komponendi määratlus

Komponendid määratletakse sarnaselt, luues ühe toetatud baastüübi eksemplari. Baastüüpe ei saa otse näiteks tuua. Objektimääratluses saab atribuute lisada sellele, mida baastüüp pakub.

Toetatud baastüübid on: CanvasComponent

Lihtsa atribuudi määratlus

Komponendid kasutavad atribuute, et suhelda rakendusega, kus neid majutatakse.

Nimi : ( Üherealine avaldis või Mitmerealine avaldis )

Valemi tüüp sõltub avaldise tüübist.

Sisendatribuutide korral annab avaldis vaikeväärtuse, mis lisatakse rakendusse komponendi lisamisel. Tegija saab seda avaldist muuta vastavalt sellele, kuidas ta sobivaks peab, kuid ei saa tüüpi muuta.

Väljundatribuudi korral võimaldab avaldis arvutada. Tegija ei saa seda avaldist muuta, see on lisatud komponenti.

Praegu on kõik atribuudid ainult andmevoog ja need ei saa sisaldada kõrvaltoimeid.

Praegu pole siin siin määratletud täiendavaid atribuudi metaandmeid, vaid need määratletakse selle asemel faili muudes failides .msapp (nt atribuudi kirjelduses).

Näiteks:

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-i ühilduvus

YAML-i kommentaarid

YAML rea kommentaarid on piiritletud numbrimärgiga # ja ei säilitata kuskil lähtevormingus. Selle asemel eraldage valemis rea kommentaarid // märkidega või blokeerige kommentaarid märkidegaga /* ja */. Lisateavet leiate siit: Kommentaarid

Levinud lõksude tõrked

On mõned kohad, kus Power Fx ja YAML grammatikad on ühildamatud või võivad kasutaja jaoks segadust tekitada. Neil juhtudel ilmneb tõrge.

Näiteks järgmine näide:

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

numbrimärki # käsitletakse YAML kommentaarina, kuigi see on manustatud sellesse, mida Excel peab tekstistringiks (sisestatud kahekordsetesse jutumärkidesse). Segaduste vältimiseks viskab see juhtum importimisel vea. Selle asemel võib kasutada YAML-i mitmerealist vormi.

Väärtuse record korral peab YAML a: ja b: seda siduvaks mõneks teise nimekaardiga. YAML võimaldab sama nimekaarti uuesti kasutada, viimasena liitsutab vaikselt kõik eelmised määratlused. Kuna see võib madala koodiga tegija jaoks segadust tekitada ja võib põhjustada atribuudivalemi kaotsimineku, ilmneb tõrge, kui sama nime kuvatakse kaks korda.