Zdieľať cez


Prehľad služby Microsoft Power Fx

Power Fx je jazyk s minimálnym programovaním, ktorý sa bude používať v rámci Microsoft Power Platform. Je to univerzálny, „strong-typed“, deklaratívny a funkčný programovací jazyk.

Power Fx je vyjadrený v texte, ktorý je prívetivý pre ľudí. Je to jazyk s minimálnym programovaním, s ktorým môžu tvorcovia pracovať priamo v riadku vzorcov ako v programe Excel alebo v textovom okne Visual Studio Code. „Nízka úroveň“ alebo minimálna potreba programovania je spôsobená stručnou a jednoduchou povahou jazyka, ktorá uľahčuje bežné programovacie úlohy tvorcom aj vývojárom. Umožňuje celé spektrum vývoja od „nulového programovania“ pre tých, ktorí nikdy predtým neprogramovali, až po „profesionálne programovanie“ pre ostrieľaného profesionála, bez zdĺhavého učenia a zmeny zvyklostí, čo umožňuje rôznym tímom spolupracovať a šetriť čas a náklady.

Poznámka

  • Microsoft Power Fx je nový názov jazyka vzorcov pre aplikácie plátna v Power Apps. Tento prehľad a súvisiace články sú rozpracované, pretože jazyk extrahujeme z aplikácií plátna a integrujeme ho s ostatnými produktmi Microsoft Power Platform, aby sme ho sprístupnili ako open source. Ak sa chcete dozvedieť viac o tomto jazyku a vyskúšať ho ešte dnes, začnite s článkom Začíname so vzorcami v aplikáciách plátna v dokumentácii Power Apps a zaregistrujte si zadarmo skúšobnú verziu Power Apps.
  • V tomto článku odkazujeme na tvorcov, keď popisujeme funkciu, ktorá by sa mohla použiť na ktoromkoľvek konci spektra programovacích schopností. Používateľa označujeme ako vývojára, ak je funkcia pokročilejšia a je pravdepodobne nad možnosti bežného používateľa programu Excel.

Power Fx spája objekty spolu s deklaratívnymi tabuľkovými vzorcami. Napríklad uvažujme nad vlastnosťou Viditeľné ovládacieho prvku používateľského rozhrania ako nad bunkou v hárku programu Excel s priradeným vzorcom, ktorý počíta jeho hodnotu na základe vlastností iných ovládacích prvkov. Logika vzorca automaticky prepočíta hodnotu, podobne ako tabuľkový procesor, čo ovplyvňuje viditeľnosť ovládacieho prvku.

Power Fx tiež ponúka nevyhnutnú logiku, ak je to potrebné. Hárky listy zvyčajne nemajú tlačidlá, ktoré umožňujú odosielať zmeny do databázy, ale aplikácie to často majú. Pre deklaratívnu aj imperatívnu logiku sa používa rovnaký výrazový jazyk.

Power Fx bude sprístupnený ako softvér s otvoreným zdrojovým kódom. Momentálne je integrovaný do aplikácií plátna a sme v procese jeho extrahovania z Power Apps na použitie v iných produktoch Microsoft Power Platform v podobe open source. Ďalšie informácie: Microsoft Power Fx v službe GitHub

Tento článok ponúka prehľad jazyka a jeho princípov návrhu. Ak sa chcete o Power Fx dozvedieť viac, prečítajte si nasledujúce články:

Myslite tabuľkovo

Čo keby ste mohli vytvoriť aplikáciu tak ľahko, ako by ste vytvárali hárok v programe Excel?

Čo ak by ste mohli využiť svoje súčasné vedomosti o tabuľkách?

To boli otázky, ktoré inšpirovali vznik Power Apps a Power Fx. Stovky miliónov ľudí vytvárajú každý deň hárky v programe Excel; poďme im priniesť tvorbu aplikácií, ktorá je jednoduchá a využíva koncepty programu Excel, ktoré už poznajú. Vytiahnutím Power Fx z Power Apps odpovieme na tieto otázky týkajúce sa automatizácie tvorby alebo virtuálneho agenta alebo iných oblastí.

Všetky programovacie jazyky vrátane Power Fx používajú spôsob výrazy: na reprezentáciu výpočtu čísel, reťazcov alebo iných typov údajov. Napríklad mass * acceleration vo väčšine jazykov vyjadruje násobenie mass a acceleration. Výsledok výrazu je možné umiestniť do premennej, použiť ho ako argument postupu alebo vnoriť do väčšieho výrazu.

Power Fx to posúva o krok ďalej. Samotný výraz nič nehovorí o tom, čo počíta. Je na výrobcovi, či ho umiestni do premennej alebo odovzdá funkcii. V Power Fx namiesto toho, aby ste písali iba výraz, ktorý nemá konkrétny význam, napíšete vzorec, ktorý viaže výraz na identifikátor. Píšete force = mass * acceleration ako vzorec na výpočet force. Keď sa mass aleboacceleration zmení, force sa automaticky aktualizuje na novú hodnotu. Výraz popisoval výpočet, vzorec dal tomuto výpočtu názov a použil ho ako recept. Z tohto dôvodu označujeme Power Fx ako jazyk vzorcov.

Napríklad tento vzorec zo Stack Overflow prehľadá reťazec v opačnom poradí. V programe Excel to vyzerá ako na nasledujúcom obrázku.

Spätné vyhľadávanie

Snímka obrazovky s riadkom vzorcov v programe Excel so vzorcom: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Bunka A1 obsahuje text „Hello, World! Je skvelé, že vás spoznávam!" Bunka A2 obsahuje text "vy!"

Power Fx pracuje s rovnakým vzorcom, pričom odkazy na bunky sú nahradené odkazmi na vlastnosť ovládacieho prvku:

Power Fx spätné vyhľadávanie.

Snímka obrazovky z lišty vzorcov Power Fx v Power Apps. Vzorec je =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) Vo vstupnom poli pod vzorcom sa zobrazí text „Hello, World! Je skvelé, že vás spoznávam!" objavuje sa písmeno po písmene. Zároveň sa v poli Označenie objavia písmená posledného slova. Keď sa vo vstupnom poli zobrazí celý text, slovo „vy!“ sa zobrazí v boxe Označenie.

Keď sa hodnota ovládacieho prvku Input zmení, ovládací prvok Label automaticky prepočíta vzorec a zobrazí novú hodnotu. Nie sú tu k dispozícii žiadne obsluhy udalostí OnChange, ako by to bolo bežné v iných jazykoch.

Ďalší príklad, ktorý používa vzorec pre farbu výplne Fill obrazovky. Keď sa zmenia posúvače ovládajúce červenú, zelenú a modrú farbu, farba pozadia sa pri prepočítavaní automaticky zmení.

Posuvník farieb.

Nie sú k dispozícii žiadne udalosti OnChange pre posuvné ovládače, ako by to bolo bežné v iných jazykoch. Neexistuje spôsob, ako explicitne nastaviť hodnotu vlastnosti Fill. Ak farba nefunguje podľa očakávaní, musíte sa pozrieť na tento jeden vzorec, aby ste pochopili, prečo nefunguje. Na nájdenie kódu, ktorý nastaví vlastnosť v neočakávanom čase, nemusíte prehľadávať aplikáciu. Nie je tam žiadny časový prvok. Správne hodnoty vzorca sú vždy zachované.

Keď sú posúvače nastavené na tmavú farbu, označenia červenej, zelenej a modrej sa z dôvodu kompenzácie zmenia na biele. To sa deje pomocou jednoduchého vzorca vo vlastnosti Color pre každý ovládací prvok označenia.

Power Fx Farebné posuvníky.

Skvelé na tom je, že je to izolované od toho, čo sa deje pre vlastnosť Fill farby: ide o dva úplne odlišné výpočty. Namiesto veľkých monolitických postupov sa logika Power Fx zvyčajne skladá z množstva menších vzorcov, ktoré sú nezávislé. To uľahčuje ich pochopenie a umožňuje vylepšenia bez narušenia existujúcej logiky.

Power Fx je deklaratívny jazyk, rovnako ako Excel. Výrobca definuje, aké správanie chcú, ale je na systéme, aby určil a optimalizoval, ako a kedy ho dosiahnuť. Aby to bolo praktické, väčšina práce sa deje prostredníctvom čistých funkcií bez vedľajších účinkov, vďaka čomu je Power Fx tiež funkčným jazykom, (opäť rovnako ako je to v programe Excel).

Vždy naživo

Definujúcim aspektom hárkov je, že sú vždy živé a zmeny sa prejavia okamžite. V hárku nie je žiadny režim kompilácie ani spustenia. Po úprave vzorca alebo zadaní hodnoty sa hárok okamžite prepočíta, aby odrážal zmeny. Všetky zistené chyby sa zobrazia okamžite a nezasahujú do zvyšku hárka.

To isté je implementované aj pri Power Fx. Inkrementálny kompilátor sa používa na nepretržitú synchronizáciu programu s údajmi, na ktorých pracuje. Zmeny sa automaticky šíria v grafe programu a ovplyvňujú výsledky závislých výpočtov, ktoré môžu ovplyvňovať vlastnosti ovládacích prvkov, napríklad farbu alebo polohu. Inkrementálny kompilátor tiež poskytuje bohaté možnosti úpravy vzorcov s technológiou IntelliSense, návrhmi, automatickým dopĺňaním a kontrolou typu.

V animácii nižšie je poradové číslo zobrazené v ovládacom prvku štítku závislom od posuvného ovládača, aj keď na štítkoch pod ním sú dve chyby. Aplikácia je veľmi živá a interaktívna. Prvý pokus o opravu vzorca zadaním .InvalidName má za následok okamžitú červenú čiaru a zobrazenú chybu, podľa očakávaní, ale aplikácia je stále spustená.

Vždy žiť.

Keď je zadané .Employee, tabla Data pridá tabuľku Zamestnanci, načítajú sa metaúdaje tejto tabuľky a okamžite sa ponúknu návrhy pre stĺpce. Práve sme prešli vzťahom od jednej tabuľky k druhej a systém vykonal potrebné úpravy odkazov na aplikáciu. To isté sa stane pri pridávaní .Customer.

Po každej zmene posúvač pokračuje so svojou poslednou hodnotou a všetky premenné si zachovajú svoju hodnotu. Počas celej doby sa číslo objednávky naďalej zobrazovalo v hornom označení tak, ako sa malo. Aplikácia je aktívna a neustále spracováva skutočné údaje. Môžeme ju uložiť, odísť a ostatní ju môžu otvoriť a používať rovnako ako Excel. Neexistuje žiadny krok zostavenia, žiadna kompilácia, existuje iba krok zverejnenia na určenie, ktorá verzia aplikácie je pre používateľov pripravená.

Nízka potreba programovania

Power Fx popisuje obchodnú logiku stručnými, ale zároveň výkonnými vzorcami. Väčšinu logiky je možné zredukovať na jeden riadok s dostatočnými možnosťami vyjadrenia a kontroly pre zložitejšie potreby. Cieľom je udržať počet konceptov, ktorým musí tvorca porozumieť, na minime – v ideálnom prípade nie viac, ako ovláda používateľ programu Excel.

Ak napríklad chcete vyhľadať krstné meno zamestnanca pre objednávku, napíšete Power Fx, ako je znázornené v nasledujúcej animácii. Okrem konceptov programu Excel je tu použitý iba pridaný koncept zápisu bodky „.“ na vnorenie do dátovej štruktúry, v tomto prípade .Employee.'First Name'. Animácia zobrazuje mapovanie medzi časťami vzorca Power Fx a konceptmi, ktoré je potrebné explicitne kódovať v ekvivalentnom jazyku JavaScript.

JavaScript vyžadujúci iba minimálne programovanie.

Pozrime sa podrobnejšie na všetky veci, ktoré pre nás Power Fx robí, a na slobodu jeho optimalizácie, pretože vzorec bol deklaratívny:

  • Asynchrónne: Všetky dátové operácie v Power Fx sú asynchrónne. Výrobca to nemusí špecifikovať, ani výrobca nemusí synchronizovať operácie po ukončení volania. Výrobca nemusí tento koncept vôbec poznať, nemusí vedieť, čo je sľub alebo funkcia lambda.

  • Miestne a vzdialené: Power Fx používa rovnakú syntax a funkcie pre údaje, ktoré sú lokálne v pamäti alebo vzdialené v databáze alebo službe. Používateľ nemusí myslieť na tento rozdiel. Power Fx automaticky deleguje čo môže na server, aby tam efektívnejšie spracovával filtre a triedenia.

  • Relačné údaje: Objednávky a zákazníci sú dve rôzne tabuľky, ktoré majú vzťah typu „jedna k jednej“. Dotaz OData vyžaduje „$expand“ so znalosťou cudzieho kľúča, podobne ako v prípade funkcie Join v SQL. Vzorec nemá nič z toho, v skutočnosti sú databázové kľúče ďalším konceptom, o ktorom tvorca nemusí vedieť. Tvorca môže pomocou jednoduchého zápisu s bodkami získať prístup k celému grafu vzťahov zo záznamu.

  • Projekcia: Pri písaní dotazu píše veľa vývojárovselect * from table, ktorý vracia všetky stĺpce údajov. Power Fx analyzuje všetky stĺpce, ktoré sa používajú v celej aplikácii, a to aj v závislosti vzorcov. Projekcia sa automaticky optimalizuje a tvorca opäť nemusí vedieť, čo znamená „projekcia“.

  • Načítajte iba to, čo je potrebné: V tomto príklade funkcia LookUp znamená, že by sa mal načítať iba jeden záznam, a to je všetko, čo sa vráti. Ak sa vyžaduje viac záznamov pomocou Filterfunkcie – na ktoré by sa mohli kvalifikovať tisíce záznamov – naraz sa vráti iba jedna stránka s údajmi, rádovo 100 záznamov na stránku. Používateľ musí gestom prechádzať galériou alebo tabuľkou s údajmi, aby zobrazil viac údajov, a automaticky sa k nim dostane. Tvorca môže uvažovať o veľkých množinách údajov bez toho, aby musel premýšľať o obmedzení požiadaviek na údaje na zvládnuteľné bloky.

  • Beží iba v prípade potreby: Definovali sme vzorec pre vlastnosť Text ovládacieho prvku označenie. Keď sa vybraná premenná zmení, LookUp sa automaticky prepočíta a označenie sa aktualizuje. Výrobca nemusel písať obslužný program OnChange pre výber a nemusel si pamätať, že toto označenie na ňom závisí. Toto je deklaratívne programovanie, o ktorom sme hovorili už skôr: tvorca špecifikoval, čo chce mať na označení, a nie ako a kedy sa má načítať. Ak toto označenie nie je viditeľné, pretože je na obrazovke, ktorá nie je viditeľná, alebo ktorej vlastnosť Visible je nepravda, môžeme tento výpočet odložiť, kým označenie nie je viditeľné, a ak sa to zriedka stane, efektívne ho vylúčiť.

  • Preklad syntaxe programu Excel: Excel používa mnoho používateľov, z ktorých väčšina vie, že znak & (&) sa používa na zreťazenie reťazcov. JavaScript používa znamienko plus (+) a ďalšie jazyky používajú bodku (.).

  • Zobrazované mená a lokalizácia: First Name sa používa vo vzorci Power Fx, zatiaľ čo nwind_firstname sa používa v ekvivalente JavaScript. V Microsoft Dataverse a SharePoint existuje okrem jedinečného logického názvu aj zobrazovaný názov pre stĺpce a tabuľky. Zobrazované názvy sú často oveľa používateľsky prívetivejšie, ako v tomto prípade, ale majú ďalšiu dôležitú kvalitu v tom, že je možné ich lokalizovať. Ak máte viacjazyčný tím, môže každý člen tímu vidieť názvy tabuliek a polí vo svojom vlastnom jazyku. Power Fx vo všetkých prípadoch použitia zaisťuje, aby sa do databázy automaticky odosielal správny logický názov.

Žiadne programovanie

Aby ste mohli začať vyjadrovať logiku, nemusíte čítať a písať Power Fx. Existuje veľa prispôsobení a logík, ktoré je možné vyjadriť prostredníctvom jednoduchých prepínačov a nástrojov na vytváranie používateľského rozhrania. Tieto nástroje bez potreby programovania boli vyvinuté na čítanie a zápis Power Fx, aby zabezpečili dostatok priestoru pre niekoho, kto by to posunul ďalej, a zároveň uznáva, že nástroje bez potreby programovania nikdy neponúknu všetku expresivitu komplexného jazyka. Lišta vzorcov je aj pri použití s nástrojmi na tvorbu bez potreby programovania centrom Power Apps a informuje tvorcov o tom, čo sa robí v ich mene, aby sa mohli začať učiť pracovať s jazykom Power Fx.

Poďme sa pozrieť na niekoľko príkladov. V Power Apps panel vlastností poskytuje prepínače a gombíky bez potreby programovania pre vlastnosti ovládacích prvkov. V praxi je väčšina hodnôt vlastností statická. Pomocou nástroja na tvorbu farieb môžete zmeniť farbu pozadia Gallery. Všimnite si, že panel vzorcov odráža túto zmenu a aktualizuje vzorec na iné volanie RGBA. Kedykoľvek môžete prejsť na riadok vzorcov a posunúť ho o krok ďalej – v tomto príklade pomocou ColorFade na úpravu farby. Vlastnosť farby sa stále zobrazuje na paneli vlastností, ale ikona fx ikona sa zobrazí pri umiestnení kurzora myši a budete presmerovaní na panel vzorcov. Toto funguje dvoma spôsobmi: odstránením volania ColorFade sa vráti farba na niečo, čomu panel vlastností dokáže porozumieť, a vy ju môžete znova použiť na nastavenie farby.

Farba bez kódu.

Tu je komplikovanejší príklad. V galérii sa zobrazuje zoznam zamestnancov z Dataverse. Dataverse poskytuje pohľady na údaje tabuľky. Môžeme vybrať jedno z týchto zobrazení a vzorec sa zmení tak, aby používal funkciu Filter s týmto názvom zobrazenia. Tieto dve rozbaľovacie ponuky možno použiť na volanie správnej tabuľky a zobrazenie bez toho, aby ste sa dotkli panela vzorcov. Ale povedzme, že chcete ísť ďalej a pridať triedenie. Môžeme to urobiť na paneli vzorcov a paneli vlastností sa znova zobrazí ikona fx a zmeny sa nasmerujú na riadok vzorcov. A opäť, ak vzorec zjednodušíme na niečo, čo panel vlastností dokáže čítať a zapisovať, dá sa znova použiť.

Zoradenie bez kódu.

Toto boli jednoduché príklady. Veríme, že Power Fx je skvelým jazykom na popisovanie interakcií bez potreby programovania. Je stručný, výkonný, ľahko sa analyzuje a poskytuje priestor, ktorý je tak často potrebný, bez „úskalí“ až po minimálne programovanie.

Profesionálne programovanie

Tvorcovia aplikácií s minimálnou potrebou programovania niekedy vytvárajú veci, ktoré si vyžadujú údržbu odborníka alebo ktoré pre svoju údržbu a vylepšenie prevezme profesionálny vývojár. Odborníci tiež oceňujú, že vývoj s minimálnou potrebou programovania môže byť ľahší, rýchlejší a menej nákladný ako vývoj profesionálneho nástroja. Nie každá situácia vyžaduje komplexné možnosti, ktoré ponúka Visual Studio.

Profesionáli chcú používať profesionálne nástroje, aby boli čo najproduktívnejší. Vzorce Power Fx je možné uložiť do zdrojových súborov YAML, ktoré sa dajú ľahko upravovať pomocou Visual Studio Code, Visual Studio, alebo akýkoľvek iným textovým editorom, čo umožňuje, aby sa Power Fx dostal pod kontrolu pomocou GitHubu, Azure DevOps alebo akéhokoľvek iného systému riadenia zdrojového kódu.

Kód profesionálneho kódu Visual Studio .

Pro kód GitHub.

Power Fx podporuje komponenty založené na vzorcoch na zdieľanie a opätovné použitie. Ohlásili sme podporu parametrov vlastností súčastí, čo umožňuje vytváranie čisto používateľom definovaných funkcií s ďalšími vylepšeniami na ceste.

Power Fx je tiež vynikajúci v spájaní komponentov a služieb vytvorených profesionálmi. Vopred pripravené konektory poskytujú prístup k stovkám zdrojov údajov a webových služieb, vlastné konektory umožňujú aplikácii Power Fx komunikovať s ľubovoľnou webovou službou REST a súčasti kódu umožňujú aplikácii Power Fx komunikovať s úplne prispôsobeným jazykom JavaScript na obrazovke a stránke.

Princípy návrhu

Jednoduchý

Power Fx je navrhnutý tak, aby zameral pozornosť na tvorcov, ktorých členovia neboli vyškolení ako vývojári. Vždy, keď je to možné, využívame vedomosti, ktoré by táto cieľová skupina už mala vedieť alebo dokázala rýchlo nadobudnúť. Počet konceptov potrebných na úspech je minimálny.

Jednoduchosť je dobrá aj pre vývojárov. Pre cieľovú skupinu vývojárov sa snažíme ponúkať jazyk s malou potrebou programovania, ktorý skracuje čas potrebný na vytvorenie riešenia.

Konzistentnosť s programom Excel

Jazyk Microsoft Power Fx si výrazne požičiava od vzorcového jazyka Excel. Snažíme sa využívať znalosti a skúsenosti s programom Excel u mnohých tvorcov, ktorí tiež používajú program Excel. Sémantika typov, operátorov a funkcií sa v maximálnej miere približuje programu Excel.

Ak Excel nemá odpoveď, potom sa pozrieme na SQL. Po programe Excel je ďalším najčastejšie používaným deklaratívnym jazykom jazyk SQL, ktorý poskytuje pokyny k operáciám s údajmi a prístup „strong typing“, ktoré Excel neumožňuje.

Deklaratívne

Tvorca popisuje, čo vyžaduje od svojej logiky, a nie tak úplne ako alebo kedy by to mala robiť. To umožňuje kompilátoru optimalizovať paralelné vykonávanie operácií, odkladanie práce, kým to nie je potrebné, a predbežné načítanie a opätovné použitie údajov z medzipamäte.

Napríklad v hárku programu Excel autor definuje vzťahy medzi bunkami, ale Excel rozhodne, kedy a v akom poradí sa budú vzorce hodnotiť. Podobne je možné vzorce v aplikácii považovať za potrebné podľa potreby „prepočítavať“ na základe akcií používateľa, zmien v databáze alebo udalostí časovača.

Funkčný

Uprednostňujeme čisté funkcie, ktoré nemajú vedľajšie účinky. Výsledkom je logika, ktorá je ľahšie pochopiteľná a dáva kompilátoru najväčšiu slobodu pri optimalizácii.

Na rozdiel od programu Excel majú aplikácie podľa svojej povahy mutovaný stav – napríklad aplikácie majú tlačidlá, ktoré ukladajú zmeny záznamu do databázy. Niektoré funkcie preto majú vedľajšie účinky, aj keď to obmedzujeme na minimum.

Kompozícia

Kde je to možné, pridaná funkcia sa dobre skladá s existujúcou funkčnosťou. Výkonné funkcie sa dajú rozložiť na menšie časti, ktoré sa dajú ľahšie používať nezávisle.

Napríklad ovládací prvok Galéria nemá samostatné vlastnosti Sort aFilter. Namiesto toho funkcie Sort a Filter funkcie sú zložené dohromady do jednej vlastnosti Items. Používateľské rozhranie na vyjadrovanie správania Sort aFilter je navrstvené na vlastnosť Items pomocou obojsmerného editora pre túto vlastnosť.

Silne typový

Typy všetkých hodnôt sú známe v čase kompilácie. To umožňuje včasné odhalenie chýb a bohaté návrhy pri vytváraní.

Polymorfné typy sú podporované, ale skôr ako ich bude možné použiť, je potrebné ich typ pripnúť na statický typ a tento typ musí byť známy v čase kompilácie. Funkcie IsType a AsType sú poskytované funkcie pre typy testovania a prenášania.

Inferencia typu

Typy sú odvodené od ich použitia bez toho, aby boli deklarované. Napríklad nastavenie premennej na číslo spôsobí, že sa typ premennej stanoví ako číslo.

Konfliktné použitie typu vedie k chybe pri kompilácii.

Desatinné oddeľovače citlivé na miestne nastavenie

V niektorých oblastiach sveta sa oddeľovač desatinných miest označuje ako bodka (.) a v iných sa používa čiarka (,). Toto robí aj Excel. Toto sa bežne nerobí v iných programovacích jazykoch, ktoré zvyčajne používajú kanonickú bodku (.) ako oddeľovač desatinných miest pre všetkých používateľov na celom svete. Aby to bolo čo najprístupnejšie pre tvorcov na všetkých úrovniach, je dôležité, aby 3,14 bolo desatinné číslo pre osobu vo Francúzsku, ktorá používa túto syntax celý život.

Voľba desatinného oddeľovača má kaskádový vplyv na oddeľovač zoznamu, ktorý sa používa pre argumenty volania funkcií, a na operátora reťazenia.

Oddeľovač desatinných miest v jazyku autora Oddeľovač desatinných miest Power Fx Oddeľovač zoznamov Power Fx Operátor reťazenia Power Fx
, (bodka) , (bodka) , (čiarka) ; (bodkočiarka)
, (čiarka) , (čiarka) ; (bodkočiarka) ;; (dvojitá bodkočiarka)

Viac informácií: Globálna podpora

Bez orientácie na objekty

Excel nie je objektovo orientovaný a nie je ním ani Power Fx. Napríklad v niektorých jazykoch je dĺžka reťazca vyjadrená ako vlastnosť reťazca, ako napr. "Hello World".length v jazyku JavaScript. Excel a Power Fx namiesto toho používajú vyjadrenie pomocou funkcie ako Len( "Hello World" ).

Komponenty s vlastnosťami a metódami sú objektovo orientované a Power Fx s nimi ľahko pracuje. Ale pokiaľ je to možné, uprednostňujeme funkčný prístup.

Rozšíriteľný

Tvorcovia môžu vytvárať svoje súčasti a funkcie pomocou samotného Power Fx. Vývojári môžu vytvárať svoje komponenty a funkcie písaním kódu JavaScript.

Priateľský pre vývojárov

Aj keď sú naším primárnym cieľom tvorcovia, snažíme sa byť všade, kde je to možné, priateľskí k vývojárom. Ak to nie je v rozpore s vyššie popísanými princípmi návrhu, robíme veci spôsobom, ktorý vývojár ocení. Napríklad Excel nemá schopnosť pridávať komentáre, takže používame priame a vložené komentáre podobné jazyku C.

Evolúcia jazyka

Vývoj programovacích jazykov je nevyhnutný aj zložitý. Každý – oprávnene – je znepokojený, že zmena, nech už je akokoľvek dobre mienená, môže narušiť existujúci kód a vyžadovať, aby sa používatelia naučili nový vzorec. Power Fx berie spätnú kompatibilitu vážne, ale tiež vieme, že sa nám to nepodarí vždy na prvýkrát a spoločne sa naučíme, čo je najlepšie pre komunitu. Musíme sa vyvíjať a Power Fx od začiatku navrhoval podporu pre vývoj jazykov.

Pečiatka jazykovej verzie je súčasťou každého dokumentu Power Fx, ktorý je uložený. Ak chceme vykonať nekompatibilnú zmenu, napíšeme takzvaný „spätný kompatibilný prevodník“, ktorý vzorec automaticky prepisuje pri najbližšej úprave. Ak je zmenou niečo zásadné, o čom potrebujeme poučiť používateľa, zobrazíme tiež správu s odkazom na dokumenty. Pomocou tohto riešenia môžeme stále načítať aplikácie, ktoré boli vytvorené s ukážkovými verziami aplikácie Power Apps spred mnohých rokov, napriek všetkým zmenám, ktoré sa odvtedy udiali.

Napríklad sme predstavili funkciu ShowError na zobrazenie chybového bannera s červeným pozadím.

Zobraziť chybu.

Používateľom sa to páčilo, ale požiadali nás tiež o spôsob, ako zobraziť banner úspechu (zelené pozadie) alebo informačný banner (modré pozadie). Vymysleli sme teda všeobecnejšiu funkciu Notify, ktorá berie druhý argument pre druh oznámenia. Mohli sme len pridať Notify a zachovať ShowError bezo zmeny, ale namiesto toho sme nahradili ShowError s Notify. Odstránili sme funkciu, ktorá bola predtým vo výrobe, a nahradili sme ju niečím iným. Pretože by mohli existovať dva spôsoby, ako urobiť to isté, spôsobilo by to zmätok – najmä pre nových používateľov – a čo je najdôležitejšie, zvýšilo by to zložitosť. Nikto sa nesťažoval, všetci ocenili zmenu a potom prešli na svoju ďalšiu funkciu Notify.

Takto vyzerá rovnaká aplikácia po načítaní do najnovšej verzie aplikácie Power Apps. Od používateľa sa nevyžaduje žiadna akcia, aby sa táto transformácia uskutočnila, došlo k nej automaticky pri otvorení aplikácie.

Funkcia Notify nahrádza ShowError.

Vďaka tomuto riešeniu sa Power Fx môže vyvíjať rýchlejšie a agresívnejšie ako väčšina programovacích jazykov.

Žiadna nedefinovaná hodnota

Niektoré jazyky, napríklad JavaScript, používajú koncept nedefinovanej hodnoty pre neinicializované premenné alebo chýbajúce vlastnosti. Pre jednoduchosť sme sa tomuto konceptu vyhli. Inštancie, ktoré by v iných jazykoch neboli definované, sa považujú za chybu alebo prázdnu hodnotu. Napríklad všetky neinicializované premenné začínajú prázdnou hodnotou. Hodnotu prázdneho poľa môžu nadobúdať všetky dátové typy.

Typy údajov
Operátory a identifikátory
Tabuľky
Premenné
Imperatívna logika
Globálna podpora
Výrazová gramatika
Gramatika vzorcov YAML
Vzorce v aplikáciách plátna