Přehled Microsoft Power Fx

Power Fx je jazyk s malým množstvím napsaného kódu, který se bude používat napříč Microsoft Power Platform. Je to obecný, deklarativní a funkční programovací jazyk se silným typováním.

Power Fx je vyjádřen lidsky srozumitelným textem. Jedná se o jazyk s minimem kódu, se kterým mohou tvůrci pracovat přímo v řádku vzorců podobném Excelu nebo textovému oknu Visual Studio Code. Použití minima kódu je možné díky stručné a jednoduché povaze jazyka, což usnadňuje tvůrcům i vývojářům běžné programovací úlohy. Jazyk umožňuje celé spektrum vývoje, od vývoje „bez kódu“ pro ty, kteří nikdy předtím neprogramovali, až po „profesionální kódování“ pro ostřílené profesionály, bez nutnosti učení nebo přepisování mezi těmito dvěma póly, což umožňuje různorodým týmům spolupracovat a šetřit čas a výdaje.

Poznámka:

  • Microsoft Power Fx je nový název pro jazyk vzorců v aplikacích plátna v Power Apps. Práce na tomto přehledu a přidružených článcích stále probíhá, jak extrahujeme jazyk z aplikací plátna, integrujeme jej s ostatními produkty Microsoft Power Platform a zpřístupňujeme jako open source. Chcete-li se o jazyce dozvědět více a zažít jej ještě dnes, začněte přečtením článku Začínáme se vzorci v aplikacích plátna v dokumentaci Power Apps a zaregistrujte si zdarma zkušební verzi Power Apps.
  • V tomto článku používáme označení tvůrci, když popisujeme funkci, kterou lze použít na obou koncích spektra programovacích dovedností. Označení vývojář používáme tehdy, když je funkce pokročilejší a pravděpodobně přesahuje rámec typického uživatele aplikace Excel.

Power Fx svazuje objekty dohromady pomocí deklarativních vzorců podobných tabulkovým procesorům. Představte si například vlastnost Viditelné ovládacího prvku uživatelského rozhraní jako buňku v listu aplikace Excel s přidruženým vzorcem, který vypočítá jeho hodnotu na základě vlastností jiných ovládacích prvků. Logika vzorce automaticky přepočítá hodnotu podobně jako tabulka, což ovlivní viditelnost ovládacího prvku.

Power Fx také v případě potřeby nabízí imperativní logiku. Listy obvykle nemají tlačítka, která mohou odesílat změny do databáze, ale aplikace často ano. Pro deklarativní i imperativní logiku se používá stejný výrazový jazyk.

Power Fx bude k dispozici jako software s otevřeným zdrojovým kódem. V současné době je integrován do aplikací plátna a právě probíhá jeho extrahování z Power Apps pro použití v jiných produktech Microsoft Power Platform a jako open source. Další informace: Microsoft Power Fx na GitHubu

Tento článek je přehledem jazyka a jeho zásad návrhu. Další informace o Power Fx naleznete v následujících článcích:

Tabulka Think

Co kdybyste mohli vytvořit aplikaci tak snadno jako list v aplikaci Excel?

Co kdybyste mohli využít své stávající znalosti tabulkových procesorů?

To byly otázky, které inspirovaly vznik Power Apps a Power Fx. Stovky milionů lidí vytvářejí každý den listy v Excelu. Umožněme jim snadno vytvářet aplikace a využít při tom konceptů Excelu, které již znají. Vyjmutím Power Fx mimo Power Apps na tyto otázky odpovíme v oblastech automatizace, virtuálního agenta nebo jiných domén.

Všechny programovací jazyky včetně Power Fx obsahují výrazy: způsob reprezentace výpočtu pracujícího s čísly, řetězci nebo jinými datovými typy. Například mass * acceleration ve většině jazyků vyjadřuje násobení mass a acceleration. Výsledek výrazu lze umístit do proměnné, použít jako argument procedury nebo vnořit do většího výrazu.

Power Fx toto posouvá o krok dále. Samotný výraz neříká nic o tom, co počítá. Je na tvůrci, aby jej umístil do proměnné nebo předal funkci. V Power Fx namísto psaní výrazu, který nemá žádný konkrétní význam, napíšete vzorec, který sváže výraz s identifikátorem. Zapíšete force = mass * acceleration jako vzorec pro výpočet force. Jak se změní mass nebo acceleration, force se automaticky aktualizuje na novou hodnotu. Výraz popsal výpočet, vzorec dal tomuto výpočtu název a použil jej jako recept. To je důvod, proč Power Fx označujeme jako jazyk vzorců.

Například tento vzorec z přetečení zásobníku prohledá řetězec v opačném pořadí. V aplikaci Excel vypadá jako na následujícím obrázku.

Zpětné hledání

Snímek obrazovky řádku vzorců v aplikaci Excel se vzorcem: = RIGHT(A1,LEN (A1)- FIND ("|",SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Buňka A1 obsahuje text "Hello, World! Rád vás poznávám!“ Buňka A2 obsahuje text „vy!“

Power Fx pracuje se stejným vzorcem, přičemž odkazy na buňky jsou nahrazeny odkazy na vlastnosti ovládacího prvku:

Zpětné hledání Power Fx.

Snímek obrazovky řádku vzorců Power Fx v Power Apps. Vzorec je =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) V poli Vstup pod vzorcem je text "Hello, World! Je skvělé, že vás poznávám!“ se objevuje písmeno po písmenu. Zároveň se v poli Label (Popisek) zobrazí písmena posledního slova. Když se ve vstupním poli zobrazí celý text, slovo „you!“ se objevuje v poli Label.

Když se změní hodnota ovládacího prvku Input, ovládací prvek Label automaticky přepočítá vzorec a zobrazí novou hodnotu. Nejsou k dispozici žádné obslužné rutiny události OnChange, jak by to bylo běžné v jiných jazycích.

Další příklad, který používá vzorec pro barvu vyplnění (Fill) obrazovky. Jak se mění posuvníky, které ovládají červenou (red), zelenou (green) a modrou (blue) barvu, barva pozadí se při přepočtu automaticky změní.

Posuvník barvy.

Pro ovládací prvky posuvníků barev neexistují žádné události OnChange, jak by to bylo běžné v jiných jazycích. Neexistuje žádný způsob, jak explicitně nastavit vlastnost Fill. Pokud barva nefunguje podle očekávání, musíte se podívat na tento jediný vzorec, abyste pochopili, proč nefunguje. Nemusíte v aplikaci hledat části kódu, která nastavuje vlastnost v neočekávaném čase; neexistuje žádný časový prvek. Správné hodnoty vzorce jsou vždy zachovány.

Jelikož jsou posuvníky nastaveny na tmavou barvu, popisky pro červenou, zelenou a modrou se změní na bílé kvůli kompenzaci. To se provádí pomocí jednoduchého vzorce vlastnosti Color pro každý ovládací prvek popisku.

Barevné posuvníky Power Fx.

Skvělé na tom je, že je to izolováno od toho, co se děje pro barvu Fill: jedná se o dva zcela odlišné výpočty. Místo velkých monolitických postupů se logika Power Fx obvykle skládá ze spousty menších vzorců, které jsou nezávislé. To usnadňuje jejich pochopení a umožňuje vylepšení bez narušení existující logiky.

Power Fx je deklarativní jazyk, stejně jako Excel. Tvůrce definuje, jaké chování si přeje, ale je na systému, aby určil a optimalizoval, jak a kdy toho dosáhnout. Aby to bylo praktické, většina práce se provádí prostřednictvím čistých funkcí bez vedlejších účinků, což z Power Fx dělá také funkcionální jazyk (opět stejně jako Excel).

Vždy aktivní

Definujícím aspektem listů je, že jsou vždy živé a změny se projeví okamžitě. V listu neexistuje žádný režim kompilace ani běhu. Když je vzorec změněn nebo je zadána hodnota, list se okamžitě přepočítá, aby odrážel změny. Zjištěné chyby se zobrazí okamžitě a nezasahují do zbytku listu.

Totéž je implementováno pomocí Power Fx. Přírůstkový kompilátor se používá k nepřetržitému udržování programu v synchronizaci s daty, se kterými pracuje. Změny se automaticky šíří grafem programu a ovlivňují výsledky závislých výpočtů, které mohou ovlivňovat vlastnosti ovládacích prvků, jako je barva nebo poloha. Přírůstkový kompilátor také poskytuje bohaté prostředí pro úpravy vzorců s technologií IntelliSense, návrhy, automatickým doplňováním a kontrolou typů.

V animaci níže se číslo objednávky zobrazí v ovládacím prvku popisku závislém na ovládacím prvku posuvníku, přestože na popiscích pod ním jsou dvě chyby. Tato aplikace je velmi živá a interaktivní. První pokus o opravu vzorce zadáním .InvalidName má za následek okamžitou červenou čáru a zobrazí se chyba, jak by měla, ale aplikace běží dál.

Vždy aktivní.

Když je zadáno .Employee, podokno Data přidá tabulku Employees, pro tuto tabulku se načtou metadata a okamžitě se nabídnou návrhy na sloupce. Právě jsme si ukázali vztah jedné tabulky s druhou a systém provedl potřebné úpravy odkazů aplikace. Totéž se děje při přidání .Customer.

Po každé změně posuvník pokračuje svou poslední hodnotou a všechny proměnné si zachovají svoji hodnotu. Po celou dobu se číslo objednávky nadále zobrazuje v horním popisku, jak by mělo. Tato aplikace je živá a po celou dobu zpracovává skutečná data. Můžeme ji uložit, odejít a ostatní ji mohou otevřít a používat stejně jako Excel. Neexistuje žádný krok sestavení, žádná kompilace, existuje pouze krok publikování, který určí, která verze aplikace je připravena pro uživatele.

Minimum kódu

Power Fx popisuje obchodní logiku stručnými, ale přesto výkonnými vzorci. Většina logiky může být redukována na jeden řádek s výrazným dopadem a řízením pro složitější potřeby. Cílem je udržet počet konceptů, kterým musí tvůrce rozumět, na minimu, v ideálním případě ne více, než by již znal uživatel aplikace Excel.

Chcete-li například vyhledat křestní jméno zaměstnance pro objednávku, napište kód Power Fx, jak ukazuje následující animace. Kromě konceptů aplikace Excel je zde jediným použitým konceptem zápis pomocí tečky „.“ pro procházení k podrobnostem do datové struktury, v tomto případě .Employee.'First Name'. Animace ukazuje mapování mezi částmi vzorce Power Fx a pojmy, které je třeba explicitně zakódovat v ekvivalentním JavaScriptu.

Minimální kód JavaScript.

Podívejme se hlouběji na všechny ty věci, které Power Fx pro nás dělá, a na svobodu, kterou má k optimalizaci, protože vzorec byl deklarativní:

  • Asynchronní: Všechny datové operace v Power Fx jsou asynchronní. Tvůrce to nemusí specifikovat, ani nemusí synchronizovat operace po dokončení volání. Tvůrce nemusí tento koncept vůbec znát, nemusí vědět, co je příslib nebo funkce lambda.

  • Místní a vzdálené: Power Fx používá stejnou syntaxi a funkce pro data, která jsou lokální v paměti, a vzdáleně připojuje databázi nebo službu. Uživatel nemusí na tento rozdíl myslet. Power Fx automaticky deleguje, co může, na server, aby tam efektivněji zpracovával filtry a třídil.

  • Relační data: Objednávky a Zákazníci jsou dvě různé tabulky, které mají vztah N:1. Dotaz OData vyžaduje „$expand“ se znalostí cizího klíče, podobně jako u funkce Join v SQL. Vzorec nemá nic z toho, ve skutečnosti jsou databázové klíče dalším konceptem, o kterém tvůrce nemusí vědět. Tvůrce může použít jednoduchý tečkový zápis pro přístup k celému grafu vztahů ze záznamu.

  • Projekce: Při psaní dotazu zapíše mnoho vývojářů výraz select * from table, který vrací zpět všechny sloupce dat. Power Fx analyzuje všechny sloupce, které se používají v celé aplikaci, a to i napříč závislostmi vzorců. Projekce se automaticky optimalizuje a tvůrce opět nemusí vědět, co „projekce“ znamená.

  • Načtení pouze toho, co je potřeba: V tomto příkladu funkce LookUp implikuje, že by měl být načten pouze jeden záznam a to je vše, co je vráceno. Pokud je požadováno více záznamů pomocí funkce Filter, která by mohla vrátit tisíce záznamů, vrátí se vždy pouze jedna stránka dat se zhruba 100 záznamy na stránku. Uživatel musí procházet galerií nebo datovou tabulkou, aby viděl více dat, a ta se pro něj automaticky načtou. Tvůrce může uvažovat o velkých souborech dat, aniž by musel přemýšlet o omezení požadavků na data na zvládnutelné bloky.

  • Spuštění pouze v případě potřeby: Definovali jsme vzorec pro vlastnost Text ovládacího prvku popisku. Když se vybraná proměnná změní, funkce LookUp se automaticky přepočítá a popisek se aktualizuje. Tvůrce nemusel pro výběr psát obslužný program OnChange a nemusel si pamatovat, že tento popisek je na něm závislý. Toto je deklarativní programování, jak bylo popsáno dříve: tvůrce specifikoval, co chce mít v popisku, a ne jak a kdy to má být načteno. Pokud tento popisek není viditelný, protože je na obrazovce, která není viditelná, nebo její vlastnost Visible je false, můžeme tento výpočet odložit, dokud nebude popisek viditelný, a pokud se tak děje jen málokdy, pak jej efektivně odstranit.

  • Překlad syntaxe aplikace Excel: Excel používá mnoho uživatelů, z nichž většina ví, že ampersand (&) se používá pro zřetězení řetězců. JavaScript používá znaménko plus (+) a další jazyky používají tečku (.).

  • Zobrazované názvy a lokalizace: First Name se používá ve vzorci Power Fx, zatímco nwind_firstname se používá v ekvivalentu JavaScriptu. V Microsoft Dataverse a SharePoint mají sloupce a tabulky zobrazovaný název kromě jedinečného logického názvu. Zobrazované názvy jsou často mnohem uživatelsky přívětivější, jako v tomto případě, ale mají další důležitou vlastnost, že je lze lokalizovat. Pokud máte vícejazyčný tým, může každý člen týmu vidět názvy tabulek a polí ve svém vlastním jazyce. Ve všech případech použití Power Fx zajišťuje, že se do databáze automaticky odesílá správný logický název.

Bez kódu

Nemusíte číst a psát kód Power Fx, abyste začali formulovat logiku. Existuje spousta vlastních nastavení a logiky, které lze vyjádřit pomocí jednoduchých přepínačů a nástrojů pro tvorbu uživatelského rozhraní. Tyto nástroje bez psaní kódu byly vytvořeny pro čtení a zápis Power Fx, abychom zajistili, že existuje dostatek prostoru pro to, aby to někdo posunul dále, a zároveň uznáváme, že nástroje bez kódu nikdy nenabídnou veškerou expresivitu plného jazyka. I při použití s bezkódovými tvůrci je řádek vzorců centrem Power Apps, ve kterém se tvůrce dozví, co se dělá jejich jménem, aby se mohli začít učit Power Fx.

Podívejme se na několik příkladů. V Power Apps poskytuje panel vlastností přepínače a ovladače „bez kódu“ pro vlastnosti ovládacích prvků. V praxi je většina hodnot vlastností statická. Pomocí nástroje pro tvorbu barev můžete změnit barvu pozadí ovládacího prvku Gallery. Všimněte si, že řádek vzorců odráží tuto změnu a aktualizuje vzorec na jiné volání RGBA. Kdykoli můžete přejít do řádku vzorců a posunout tento krok dále. V tomto příkladu použitím ColorFade pro úpravu barvy. Vlastnost barvy se stále zobrazuje na panelu vlastností, ale při najetí myši se zobrazí ikona fx a budete přesměrováni do řádku vzorců. To plně funguje dvěma způsoby: odebrání volání ColorFade vrátí barvu něčemu, čemu rozumí panel vlastností, a můžete jej znovu použít k nastavení barvy.

Barva bez kódu.

Zde je složitější příklad. Galerie zobrazuje seznam zaměstnanců z Dataverse. Dataverse poskytuje zobrazení dat tabulky. Můžeme vybrat jedno z těchto zobrazení a vzorec se změní tak, aby používal funkci Filter s tímto názvem zobrazení. Dvě rozevírací nabídky lze použít ke konfiguraci správné tabulky a zobrazení bez použití řádku vzorců. Ale řekněme, že chcete jít dál a přidat řazení. Můžeme to udělat v řádku vzorců a panel vlastností znovu zobrazí ikonu fx a směruje úpravy do řádku vzorců. A znovu, pokud zjednodušíme vzorec na něco, co panel vlastností dokáže číst a zapsat, můžeme to znovu použít.

Třídění bez kódu.

Toto byly jednoduché příklady. Věříme, že Power Fx je skvělý jazyk pro popis interakcí bez kódu. Je stručný, výkonný a přehledný a poskytuje prostor, který je tak často potřebný, s ohromnými možnostmi i s minimem kódu.

Profesionální kód

Tvůrci používající minimum kódu někdy vytvářejí věci, které vyžadují pomoc odborníka nebo jsou převzaty profesionálním vývojářem, aby je zajistil a vylepšil. Profesionálové také oceňují, že vývoj s minimem kódu může být jednodušší, rychlejší a méně nákladný než vytváření profesionálního nástroje. Ne každá situace vyžaduje plný výkon aplikace Visual Studio.

Profesionálové chtějí používat profesionální nástroje, aby byli maximálně produktivní. Vzorce Power Fx mohou být uloženy ve zdrojových souborech YAML, které lze snadno upravovat v aplikaci Visual Studio Code, Visual Studio nebo v jakémkoli jiném textovém editoru, a Power Fx může být ukládán v systému správy zdrojového kódu (GitHub, Azure DevOps nebo jakýkoli jiný podobný systém).

Profesionální kód ve Visual Studio Code.

Profesionální kód GitHub.

Power Fx podporuje komponenty založené na vzorcích pro sdílení a opětovné použití. Ohlásili jsme podporu parametrů vlastností komponent, což umožňuje vytváření čistě uživatelsky definovaných funkcí s dalšími vylepšeními v budoucnu.

Power Fx je také skvělý při spojování komponent a služeb vytvořených profesionály. Předpřipravené konektory poskytují přístup ke stovkám zdrojů dat a webovým službám, vlastní konektory umožňují kódu Power Fx komunikovat s jakoukoli webovou službou REST, a komponenty kódu umožňují Power Fx interagovat s plně vlastním JavaScriptem na obrazovce a stránce.

Zásady návrhu

Jednoduchost

Power Fx je navržen tak, aby cílil na cílovou skupinu tvůrců, jehož členové nebyli vyškoleni jako vývojáři. Kdykoli je to možné, využíváme znalostí, které by tato cílová skupina již měla mít nebo mohla rychle získat. Počet konceptů potřebných k úspěchu je omezen na minimum.

Jednoduchost je dobrá také pro vývojáře. Pro cílovou skupinu vývojářů se snažíme být jazykem s minimem kódu, což zkracuje čas potřebný k sestavení řešení.

Podobnost s Excelem

Jazyk Microsoft Power Fx si hodně půjčuje z jazyka vzorců aplikace Excel. Snažíme se využívat znalosti a zkušenosti mnoha tvůrců s aplikací Excel. Sémantika typů, operátorů a funkcí je co nejpodobnější Excelu.

Pokud Excel nenabídne řešení, jdeme dále na SQL. Po Excelu je SQL dalším nejčastěji používaným deklarativním jazykem a může poskytnout řešení datových operací a silného typování, což Excel neumí.

Deklarativní

Tvůrce popisuje, co chce, aby jeho logika dělala, a ne tak úplně jak nebo kdy to má udělat. To umožňuje kompilátoru optimalizovat paralelní provádění operací, odložit práci, dokud není potřeba, a předběžně načítat a opětovně používat data v mezipaměti.

Například v listu aplikace Excel autor definuje vztahy mezi buňkami, ale Excel rozhodne, kdy a v jakém pořadí jsou vzorce vyhodnoceny. Podobně lze vzorce v aplikaci považovat za „přepočítání“ podle potřeby na základě akcí uživatele, změn v databázi nebo událostí časovače.

Funkčnost

Upřednostňujeme čisté funkce, které nemají vedlejší účinky. To má za následek logiku, která je snáze srozumitelná a dává kompilátoru největší volnost při optimalizaci.

Na rozdíl od aplikace Excel běžné aplikace ze své podstaty mění stav, například obsahují tlačítka, která ukládají změny záznamu v databázi. Některé funkce proto mají vedlejší účinky, i když to omezujeme do té míry, dokud je to praktické.

Skládání

Kde je to možné, přidaná funkčnost se dobře doplní s existující funkčností. Výkonné funkce lze rozložit na menší části, které lze snadněji použít samostatně.

Například ovládací prvek Galerie nemá samostatné vlastnosti Sort a Filter. Místo toho jsou funkce Sort a Filter sloučeny dohromady do jedné vlastnosti Items. Uživatelské rozhraní pro vyjádření chování Sort a Filter je navrstveno na vlastnosti Items pomocí obousměrného editoru pro tuto vlastnost.

Silná typová kontrola

Typy všech hodnot jsou známy v době kompilace. To umožňuje včasnou detekci chyb a bohaté návrhy při vytváření.

Polymorfní typy jsou podporovány, ale než je lze použít, musí být jejich typ připnut ke statickému typu a tento typ musí být znám v době kompilace. Funkce IsType a AsType jsou k dispozici pro typy testování a přetypování.

Odvození typu

Typy jsou odvozeny z jejich použití, aniž by byly deklarovány. Například nastavení proměnné na číslo způsobí, že se typ proměnné vytvoří jako číslo.

Konfliktní použití typu vede k chybě při kompilaci.

Oddělovače desetinných míst podle národního prostředí

V některých oblastech se jako oddělovač desetinných míst používá tečka (.), zatímco v jiných čárka (,). Tohle rovněž dělá Excel. Jiné programovací jazyky tohle běžně nedělají a obecně používají kanonickou tečku (.) jako oddělovač desetinných míst pro všechny uživatele na celém světě. Pro co největší přístupnost pro tvůrce na všech úrovních je důležité, že 3,14 je desetinné číslo pro osobu ve Francii, která tuto syntaxi používá celý svůj život.

Volba desetinného oddělovače má kaskádový dopad na oddělovač seznamu, který se používá pro argumenty volání funkcí, a operátor řetězení.

Oddělovač desetinných míst jazyka tvůrce Oddělovač desetinných míst Power Fx Oddělovač seznamu Power Fx Operátor řetězení Power Fx
, (tečka) , (tečka) , (čárka) ; (středník)
, (čárka) , (čárka) ; (středník) ;; (dvojitý středník)

Další informace: Globální podpora

Jazyk, který není objektově orientovaný

Excel není objektově orientovaný, a takový není ani Power Fx. Například v některých jazycích je délka řetězce vyjádřena jako vlastnost řetězce, například "Hello World".length v jazyce JavaScript. Excel a Power Fx to vyjádří pomocí funkce jako Len( "Hello World" ).

Komponenty s vlastnostmi a metodami jsou objektově orientované a kód Power Fx s nimi snadno pracuje. Pokud je to ale možné, dáváme přednost funkčnímu přístupu.

Rozšiřitelný

Tvůrci mohou vytvářet své komponenty a funkce pomocí samotného Power Fx. Vývojáři mohou vytvářet své komponenty a funkce zápisem kódu JavaScript.

Přátelský pro vývojáře

Ačkoli jsou naším primárním cílem tvůrci, snažíme se být přátelští k vývojářům, kdykoli je to možné. Pokud to není v rozporu s principy designu popsanými výše, děláme věci způsobem, který vývojář ocení. Například Excel nemá schopnost přidávat komentáře, takže používáme řádkové a vložené komentáře podobné jazyku C.

Vývoj jazyka

Vývoj programovacích jazyků je jak nutný, tak složitý. Každý je oprávněně znepokojen, že změna, bez ohledu na to, jak dobře je zamýšlená, může narušit stávající kód a vyžadovat, aby se uživatelé naučili nový vzor. Power Fx bere zpětnou kompatibilitu vážně, ale ne vždy se nám ji podaří dosáhnout napoprvé a společně se naučíme, co je nejlepší jako komunita. Musíme se vyvíjet a Power Fx podporuje evoluci jazyka od samého počátku.

Razítko jazykové verze je součástí každého dokumentu Power Fx, který je uložen. Pokud chceme provést nekompatibilní změnu, napíšeme to, co nazýváme „zpětně kompatibilní převodník“, který při příští úpravě automaticky přepíše vzorec. Pokud je změna něčím zásadním, o čem musíme uživatele poučit, zobrazíme také zprávu s odkazem na dokumentaci. Můžeme tak stále načítat aplikace, které byly vytvořeny ve verzích Preview aplikace Power Apps před mnoha lety navzdory všem změnám, které od té doby nastaly.

Například jsme zavedli funkci ShowError funkce pro zobrazení chybového pruhu s červeným pozadím.

Zobrazení chyby.

Uživatelé ji milovali, ale také nás požádali o způsob, jak zobrazit pruh úspěchu (zelené pozadí) nebo informační pruh (modré pozadí). Přišli jsme tedy s obecnější funkcí Notify, která převezme druhý argument jako druh oznámení. Mohli jsme jen přidat funkci Notify a zachovat funkci ShowError, jak byla, ale místo toho jsme nahradili funkci ShowError funkcí Notify. Odebrali jsme funkci, která byla dříve ve výrobě, a nahradili jsme ji něčím jiným. Protože by existovaly dva způsoby, jak udělat totéž, způsobilo by to zmatek, zejména pro nové uživatele, a co je nejdůležitější, přidalo by to na složitosti. Nikdo si nestěžoval, všichni ocenili změnu a začali používat novou funkci Notify.

Takto vypadá stejná aplikace po načtení do nejnovější verze Power Apps. Aby se tato transformace uskutečnila, uživatel nemusel provést žádnou akci, došlo k ní automaticky při otevření aplikace.

Funkce Notify nahradila funkci ShowError.

S touto výbavou se Power Fx může vyvíjet rychleji a agresivněji než většina programovacích jazyků.

Žádná nedefinovaná hodnota

Některé jazyky, například JavaScript, používají koncept nedefinované hodnoty pro neinicializované proměnné nebo chybějící vlastnosti. Pro zjednodušení jsme se tomuto konceptu vyhnuli. Instance, které by byly nedefinované v jiných jazycích, jsou považovány za chybu nebo prázdnou hodnotu. Například všechny neinicializované proměnné začínají prázdnou hodnotou. Nedefinovanou hodnotu mohou nabývat všechny datové typy.

Datové typy
Operátory a identifikátory
Tabulky
Proměnné
Imperativní logika
Globální podpora
Gramatika výrazů
Gramatika vzorců YAML
Vzorce v aplikacích plátna