Power FxYAML képletek nyelvtana
Feljegyzés
A Microsoft Power Fx a vászonalapú alkalmazások képletnyelvének új neve. Ezek a cikkek még nem véglegesek; miközben kinyerjük a vászonalapú alkalmazás nyelvét, integráljuk más Microsoft Power Platform-termékekkel, és nyílt forráskódúként elérhetővé tesszük. A nyelv megismeréséhez először olvassa el A Microsoft Power Fx áttekintése című cikket.
A Microsoft Power Fx bevált nyelvtant használ az Excel-alapú kifejezésekhez. Ha azonban a Power Apps-ben és más hosztokban használják, ahol a felhasználói felület a képletek név-kifejezés kötését biztosítja, a képletkötést nem lehet szabványos módon szövegként szerkeszteni.
A kötés nyelveként az iparági standard megoldást, a YAML-t választottuk. Már számos szerkesztő, eszköz és függvénytár van a YAML használatához. Ez a cikk ismerteti, hogyan reprezentáljuk a képleteket a YAML-ben.
Jelenleg a YAML nyelvnek csak egy korlátozott készletét támogatjuk. Csak a cikkben ismertetett konstrukciók támogatottak.
Itt nem szerepel minden, vászonalapú alkalmazásnak minősülő megoldás; a további információk az eszköz által előállított és felhasznált egyéb fájlokon keresztül mozognak.
Bevezető egyenlőségjel
Mindenekelőtt minden kifejezésnek egyenlőségjellel (=
) kell kezdődnie:
Visible: =true
X: =34
Text: |
="Hello, " &
"World"
Az =
jelt három okból használjuk így:
- Az Excel ugyanezt a megoldást használja: a kifejezések cellákhoz kötéséhez bevezető
=
karaktert kell használni. - Ez hatékonyan megkerüli a képletnyelv szintaxisát, így a YAML nem próbálja meg elemezni. Normál körülmények között a YAML a
text: 1:00
kifejezést percekként és másodpercekként kezelné, és számmá konvertálná. Ha beszúr egy=
karaktert, akkor a YAML nem használja majd az implicit beírási szabályait, és a képletek nem sérülnek. Az=
ugyan a legtöbb esetben használható – azonban nem mindig. Ezeket a kivételeket az Egysoros képletek rész ismerteti. - A jövőben ugyanabban a fájlban képletet (ami
=
karakterrel kezdődik) és nem képletet (=
nélkül) is lehet majd használni, akárcsak az Excel esetében. Ez a YAML-fájlokra és a nem YAML-fájlokra is érvényes lesz a Microsoft Power Platform-forrásfájlokban. Bárhol, ahol egy képlet támogatott a sorlejei=
megkülönböztet egy Power Apps képletkifejezést egy statikus skálaértékről.
Egysoros képletek
Az egysoros képletek formátuma a következő:
Név:
SPACE
=
kifejezés
A YAML-kompatibilitáshoz a kettőspont és az egyenlőségjel között szóköznek kell lennie. Az egyenlőségjel megszakítja a kifejezés normál YAML-értelmezését, így a rendszer a sor további részét Power Fx-ként értelmezheti majd. Például:
Text1: ="Hello, World"
Text2: ="Hello " & ", " & "World"
Number1: =34
Boolean1: =true
Time1: =1:34
Kettőskereszt (#
) és kettőspont (:
) még akkor sem használható a képletben, ha idézett szöveges karakterláncban vagy azonosító nevében szerepel. Kettőskereszt vagy kettőspont használatához többsoros képletként kell kifejezni a képletet. A YAML a kettőskeresztet hozzászólásként, a kettőspontot pedig új névleképzésként értelmezi. Ha egysoros megjegyzéshez szeretne megjegyzést felvenni, használja a Power Fx-sor //
kezdetű megjegyzését.
A YAML normál escape-karaktereinek aposztrófokkal és fordított C-perjelekkel való használata nem támogatott; használjon többsoros képletet. Ez a konzisztencia biztosítása, illetve a Power Apps Studio képletsávja és a YAML-forrásfájlok közötti kivágás/beillesztés művelet elősegítése érdekében van így.
Az engedélyezett nevekre és a kifejezések szerkezetére vonatkozó részleteket a vászonalapú alkalmazás operátorai és az azonosítói dokumentáció tartalmazza.
Többsoros képletek
A képletek – a YAML blokkskaláris mutatóit használva – több sorba is feloszthatók:
Név:
SPACE
( |
vagy |+
vagy |-
) =
Kifejezés-sorKifejezés-sor ...
A blokk részét képező minden sort be kell húzni legalább egy szóközzel az első sor szintjétől.
Például:
Text1: |
="Hello, World"
Text2: |
="Hello" &
"," &
"World"
A rendszer a YAML többsoros skalárjelöléseinek valamennyi formáját elfogadja (többek között a >+
jelölést is). A térközkarakterek megfelelő megőrzésének biztosítása érdekében viszont csak |
, |+
vagy |-
létrehozására kerül sor.
Összetevőpéldány
Az összetevők példányainak készítése YAML-objektumjelöléssel történik. Az objektum típusának megállapítása az As
operátor bal oldali YAML-címke részeként való használatával történik. Tárolóvezérlők esetén az objektumok egymásba ágyazhatóak.
NévAs
Component-Type [ .
Component-Template ] :
( Egysoros képlet vagy többsoros képlet vagy objektumpéldány ) ...
A blokk részét képező minden sort be kell húzni legalább egy szóközzel az első sor szintjétől.
Például:
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
)
A Component-Type bármilyen vászon összetevő vagy vezérlő lehet. Az alaptípusok – például a Szám – nem támogatottak.
A Component-Template opcionális specifikátor a különböző sablonokkal rendelkező összetevőkhöz, például a katalógushoz. Nem minden összetevő tartalmaz sablonokat.
Ha a Név különleges karaktereket tartalmaz és aposztrófok között van, akkor a kifejezés kettősponttól balra lévő részét teljes egészében át kell léptetni. Ez az alábbi megoldások valamelyikével lehetséges:
- A bal oldal egészét aposztrófok közé kell helyezni; ehhez a meglévő aposztrófokat kétszer kell használni:
'''A name with a space'' As Gallery':
- A bal oldal egészét dupla idézőjelek közé kell helyezni; ügyeljen arra, hogy a névben ne legyen dupla idézőjel:
"'A name with a space' As Gallery":
Összetevődefiníció
Az összetevőket hasonlóképpen az egyik támogatott alaptípus példányának létrehozásával lehet definiálni. Az alaptípusok példányai nem hozhatók létre közvetlenül. Az objektumdefiníción belül az alaptípus által biztosított tulajdonságok adhatók hozzá.
A támogatott alaptípusok: CanvasComponent
Definíció egy tulajdonsággal
Az összetevők tulajdonságok használatával kommunikálnak azzal az alkalmazással, amelyben üzemelnek.
Név:
( Egysoros kifejezés vagy Többsoros kifejezés )
A képlet típusát a kifejezés típusa határozza meg.
A bemeneti tulajdonságok esetén a kifejezés biztosítja az alkalmazásba beszúrandó alapértéket az összetevő példányozása során. A készítő igény szerint módosíthatja ezt a kifejezést, a típust viszont nem tudja módosítani.
A kimeneti tulajdonságok esetén a kifejezés biztosítja az elvégzendő számítást. A készítő nem tudja módosítani ezt a kifejezést, mert a kifejezés az összetevőbe van beágyazva.
Jelenleg minden tulajdonság csak adatfolyam, és nem biztosíthat semmilyen mellékhatást.
Jelenleg a tulajdonságra vonatkozó további metaadatok definiálása nem itt, hanem a .msapp
fájl másik fájljaiban történik (például a tulajdonság leírásában).
Például:
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-kompatibilitás
YAML-megjegyzések
A YAML-sor kettőskereszttel (#
) elválasztott megjegyzéseit a rendszer a forrásformátum egyik részében sem őrzi meg. Ehelyett a képleteken belül a sorokban lévő megjegyzéseket //
karakterekkel választhatja el, vagy a /*
és a */
használatával blokkolhatja a megjegyzéseket. További információ: Megjegyzések
Hibák a gyakori buktatókhoz
Néhány helyen a Power Fx és a YAML nyelvtana nem kompatibilis, illetve nem egyértelmű a felhasználók számára. Ezekben az esetekben hibát jelez a rendszer.
Ez történik például a következő esetben:
Text: ="Hello #PowerApps"
Record: ={ a: 1, b: 2 }
a kettőskeresztet (#
) a YAML még akkor is megjegyzésként kezeli, ha olyan elembe van beágyazva, amit az Excel szöveges karakterláncként érzékel (dupla idézőjelek közé téve). Hogy a helyzet egyértelmű legyen, a rendszer ilyen esetben hibát jelez az importálás során. Ehelyett használható többsoros YAML-űrlap.
A record
értékeként a YAML úgy vesz, hogy az a:
és a b:
egy másik névleképezés-kötés. A YAML lehetővé teszi ugyanannak a névleképezésnek az újbóli felhasználását; az utolsó példány a háttérben felülírja az összes korábbi definíciót. Mivel ez zavaró lehet a minimális programozást igénylő kódokat készítők számára, illetve a tulajdonságok képleteinek elvesztését eredményezheti, a rendszer hibaüzenetet küld, ha kétszer találkozik egy adott névvel.