Prezentare generală Microsoft Power Fx

Power Fx este limbajul cu cod redus pe care îl utilizează Microsoft Power Platform. Este un limbaj de programare general, tastat, declarativ și funcțional.

Power Fx este exprimat într-un text prietenos. Este un limbaj cu conținut redus de cod, cu care producătorii pot lucra direct într-o bară de formule de tip Excel sau fereastra de text Visual Studio Code. "minim" în cod scăzut vine din natura concisă și simplă a limbajului, ceea ce simplifică activitățile de programare comune atât pentru producători, cât și pentru dezvoltatori. Aceasta permite spectrul complet de dezvoltare de la no-code pentru cei care nu au programat înainte de a "pro-cod" pentru profesionistul anotimp, fără de învățare sau rescrierea cliffs în între. Diverse echipe pot colabora și economisi timp și cheltuieli.

Notă

  • Microsoft Power Fx este noul nume pentru limbajul formulelor pentru aplicații pânză in Power Apps. Această prezentare generală și articolele asociate sunt în curs de desfășurare pe măsură ce Microsoft extrage limba din aplicațiile de pe pânză, o integrează cu alte produse Microsoft Power Platform și o face disponibilă ca open source. Pentru a afla mai multe despre limbaj și pentru a-l experimenta astăzi, începeți cu Începeți cu formule în aplicații pânză din documentația Power Apps și înscrieți-vă pentru o versiune de Power Apps încercare gratuită.
  • În acest articol, operatorii de decizie se referă la utilizatorii care pot utiliza o caracteristică la oricare capăt al spectrului de abilități de programare. Dezvoltatorii se referă la utilizatori atunci când caracteristica este mai complexă și este probabil dincolo de domeniul de aplicare al unui utilizator tipic de Excel.

Power Fx leagă obiectele împreună cu formule declarative de tip foaie de calcul. De exemplu, gândiți-vă la proprietatea Vizibil a unui control UI ca celulă într-o foaie de lucru Excel, cu o formulă asociată care calculează valoarea acestuia pe baza proprietăților altor controale. Logica formulelor recalculează automat valoarea, similar cu modul în care o face o foaie de calcul, ceea ce afectează vizibilitatea controlului.

De asemenea, Power Fx oferă o logică imperativă atunci când este necesar. Foile de lucru nu au de obicei butoane care pot trimite modificări la o bază de date, dar aplicațiile adesea au. Același limbaj de expresie este folosit atât pentru logica declarativă, cât și pentru logica imperativă.

Microsoft va face Power Fx disponibil ca software open-source. Acesta este integrat în prezent în aplicațiile pânză și Microsoft este în curs de extragere a acestuia din Power Apps pentru utilizare în alte produse Microsoft Power Platform și ca open source. Informații suplimentare: Microsoft Power Fx pe GitHub

Acest articol este o prezentare generală a limbajului și a principiilor sale de proiectare. Pentru a afla mai multe despre Power Fx, consultați următoarele articole:

Gândiți-vă la foaie de calcul

Cumar fi dacă ați putea crea o aplicație la fel de ușor cum creeați o foaie de lucru în Excel?

Cum ar fi dacă ați putea profita de cunoștințele dvs. existente despre foaia de calcul?

Aceste întrebări au inspirat crearea de Power Apps și Power Fx. Sute de milioane de persoane creează foi de lucru cu Excel în fiecare zi. Să le aducem crearea de aplicații ușor și utilizează conceptele Excel pe care le cunosc deja. Prin eliminarea Power Fx din Power Apps, vom răspunde la aceste întrebări pentru automatizarea construcțiilor sau pentru un agent virtual sau pentru alte domenii.

Toate limbajele de programare, inclusiv Power Fx, au expresii: o modalitate de a reprezenta un calcul pe numere, șiruri sau alte tipuri de date. De exemplu, mass * acceleration în majoritatea limbilor exprimă multiplicarea de mass și acceleration. Puteți să amplasați rezultatul unei expresii într-o variabilă, să o utilizați ca argument la o procedură sau să o imbricați într-o expresie mai mare.

Power Fx face acest lucru cu un pas înainte. O expresie în sine nu spune nimic despre ceea ce calculează. Depinde de producător să o plaseze într-o variabilă sau să o transmită unei funcții. În Power Fx, în loc să scrieți doar o expresie care nu are un sens specific, scrieți o formulă care leagă expresia de un identificator. Scrieți force = mass * acceleration ca formulă pentru a calcula force. Ca mass sau acceleration modificări, force se actualizează automat la o valoare nouă. Expresia a descris un calcul, o formulă a dat acelui calcul un nume și l-a folosit ca rețetă. Acesta este motivul pentru care ne referim la Power Fx ca la un limbaj de formule.

De exemplu, această formulă din Stack Overflow caută un șir în ordine inversă. În Excel, arată ca următoarea imagine.

Căutare inversă

Captură de ecran a unei bare de formule din Excel cu formula: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Celula A1 conține textul „Salut, lume! Mă bucur să te cunosc!" Celula A2 conține textul "tu!"

Power Fx funcționează cu aceeași formulă, cu referințele de celule înlocuite cu referințe de proprietăți de control:

Power Fx căutare inversă.

Captură de ecran a unei bare de formule Power Fx în Power Apps. Formula este =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) În caseta de intrare de sub formulă, textul „Salut, lume! Mă bucur să te cunosc!” apare, literă cu literă. În același timp, în caseta Etichetă, apar literele ultimului cuvânt. Când textul complet apare în caseta de introducere, cuvântul „tu!” apare în caseta Etichetă.

Input Pe măsură ce valoarea controlului se modifică, Label controlul recalculează automat formula și afișează noua valoare. Nu există manipulatori de evenimente OnChange, aici așa cum ar fi obișnuit în alte limbi.

Un alt exemplu utilizează o formulă pentru Fill culoarea ecranului. Pe măsură ce glisoarele care controlează Roșu, Verde și Albastru se modifică, culoarea de fundal se modifică automat, deoarece este recalculată.

Cursor de culoare.

Nu există evenimente OnChange pentru controalele glisante, așa cum ar fi obișnuit în alte limbi. Nu există nicio modalitate de a seta în mod explicit valoarea proprietății Fill. Dacă culoarea nu funcționează conform așteptărilor, trebuie să vă uitați la această formulă pentru a înțelege de ce nu funcționează. Nu este nevoie să căutați prin aplicație pentru a găsi o bucată de cod care setează proprietatea la un moment neașteptat; nu există element de timp. Valorile formulei corecte sunt întotdeauna menținute.

Deoarece glisoarele sunt setate la o culoare închisă, etichetele pentru Roșu, Verde și Albastru se schimbă în alb pentru a compensa. Această modificare are loc printr-o formulă simplă din Color proprietate pentru fiecare control etichetă.

Power Fx glisoare de culoare.

Ce este grozav în legătură cu această formulă este că este izolat de ceea ce se întâmplă pentru Fill culoare: acestea sunt două calcule complet diferite. În loc de proceduri monolitice mari, logica Power Fx este formată de obicei din multe formule mai mici, care sunt independente. Această structură le face mai ușor de înțeles și permite îmbunătățirile fără a deranja logica existentă.

Power Fx este un limbaj declarativ, la fel ca Excel. Producătorul definește ce comportament doresc, dar este de competența sistemului să determine și să optimizeze cum și când să-l realizeze. Pentru a face acest lucru practic, cea mai mare parte a lucrărilor se face prin funcții pure, fără efecte secundare, făcând din Power Fx și un limbaj funcțional (din nou, la fel ca Excel).

Mereu live

Un aspect definitoriu al foilor de lucru este că sunt întotdeauna live, iar schimbările se reflectă instantaneu. Nu există niciun mod de compilare sau rulare într-o foaie de lucru. Când modificați o formulă sau introduceți o valoare, foaia de lucru recalculează imediat pentru a reflecta modificările. Toate erorile detectate apar imediat și nu interferează cu restul foii de lucru.

Power Fx implementează același lucru. Utilizează un compilator incremental pentru a menține în permanență programul sincronizat cu datele pe care operează. Modificările se propagă automat prin graficul programului, afectând rezultatele calculelor dependente. Aceste calcule pot genera proprietăți ale controalelor, cum ar fi culoarea sau poziția. Compilatorul incremental oferă, de asemenea, o bogată experiență de editare a formulelor cu IntelliSense, sugestii, completare automată și verificarea scrierii.

În următoarea animație, numărul de ordine se afișează într-un control etichetă dependent de controlul glisorului, chiar dacă există două erori pe etichetele de sub aceasta. Aplicația este foarte vie și interactivă. Prima încercare de a remedia formula prin a introduce .InvalidName rezultă o linie roșie imediată și se afișează erori, așa cum ar trebui, dar aplicația continuă să ruleze.

Trăiește mereu.

Atunci când introduceți .Employee, Data panoul adaugă tabelul Angajați, regăsește metadate pentru acest tabel și oferă imediat sugestii pentru coloane. Tocmai ați parcurs o relație de la un tabel la altul, iar sistemul a efectuat ajustările necesare la referințele aplicației. Același lucru se întâmplă atunci când se adaugă un .Customer.

După fiecare modificare, glisorul continuă cu ultima sa valoare și orice variabilă își păstrează valoarea. Pe tot parcursul, numărul comenzii continuă să se afișeze în eticheta de sus așa cum ar trebui. Aplicația este live, procesând date reale, în tot timpul. Puteți să-l salvați, să-l plimbați, iar alte persoane îl pot deschide și utiliza la fel cum Excel. Nu există niciun pas de compilare, nu există doar un pas de publicare pentru a determina ce versiune a aplicației este gata pentru utilizatori.

Conținut scăzut de cod

Power Fx descrie logica de afaceri în formule concise, dar puternice. Majoritatea logicii reduce la o singură linie, cu o mulțime de expresivitate și control pentru necesități mai complexe. Scopul este de a menține un număr minim de concepte pe care un producător trebuie să le înțeleagă – în mod ideal, nu mai mult decât ar ști deja un utilizator Excel.

De exemplu, pentru a căuta prenumele unui angajat pentru o comandă, scrieți Power Fx așa cum se arată în animația următoare. Dincolo de conceptele Excel, singurul concept adăugat utilizat aici este notația punct „.” pentru forarea într-o structură de date, în acest caz .Employee.'First Name'. Animația arată maparea între părțile formulei Power Fx și conceptele care trebuie codificate explicit în JavaScript echivalent.

JavaScript cu cod redus.

Să analizăm mai în detaliu toate lucrurile pe care Power Fx le face pentru noi și libertatea pe care trebuie să o optimizăm, deoarece formula este declarativă:

  • Asincron Toate operațiunile cu date din Power Fx sunt asincrone. Producătorul nu trebuie să specifice acest lucru și nici producătorul nu trebuie să sincronizeze operațiunile după terminarea apelului. Producătorul nu trebuie să fie deloc conștient de acest concept, nu trebuie să știe ce este o promisiune sau o funcție lambda.

  • Local și la distanță : Power Fx utilizează aceeași sintaxă și funcții pentru datele locale în memorie și se conectează de la distanță la o bază de date sau la un serviciu. Utilizatorul nu trebuie să se gândească la această distincție. Power Fx deleagă automat ce poate serverului, pentru a procesa filtrele și le sortează mai eficient acolo.

  • Date relaționale Comenzile și Clienții sunt două tabele diferite, cu o relație de tip mai mulți-la-unu. Interogarea OData necesită un „$expand” cu cunoștințe despre cheia străină, similar cu un Join în SQL. Formula nu are nimic din toate acestea, de fapt, cheile bazei de date sunt un alt concept despre care producătorul nu trebuie să știe. Producătorul poate utiliza notația punctului simplu pentru a accesa întregul grafic al relațiilor dintr-o înregistrare.

  • Proiecție Când scriu o interogare, mulți dezvoltatori scriu select * from table, care readuce toate coloanele de date. Power Fx analizează toate coloanele care sunt utilizate în întreaga aplicație, chiar și în dependențe de formulă. Proiecția este optimizată automat și, din nou, un producător nu trebuie să știe ce înseamnă „proiecție”.

  • Recuperează doar ceea ce este necesar În acest exemplu, LookUp Funcția implică faptul că trebuie preluată o singură înregistrare și aceasta este tot ce este returnată. Dacă sunt solicitate mai multe înregistrări folosind funcția Filter– pentru care s-ar putea califica mii de înregistrări – numai o singură pagină de date este returnată odată, pe comanda de 100 de înregistrări pe pagină. Utilizatorul trebuie să gesteze printr-o galerie sau un tabel de date pentru a vedea mai multe date și aduce automat mai multe date pentru el. Producătorul poate argumenta despre seturi mari de date fără a fi nevoie să se gândească la limitarea cererilor de date la bucăți gestionabile.

  • Rulează numai atunci când este necesar: Definiți o formulă pentru Text proprietatea controlului etichetă. Pe măsură ce variabila selectată se modifică, LookUp este recalculat automat și eticheta este actualizată. Producătorul nu a trebuit să scrie un handler OnChange pentru Selection și nu a trebuit să-și amintească că această etichetă depinde de ea. Aceasta este o programare declarativă, așa cum am discutat anterior: producătorul a specificat ce doreau să aibă în etichetă, nu cum sau când ar trebui să fie preluat. Dacă această etichetă nu este vizibilă deoarece se află pe un ecran care nu este vizibil sau proprietatea sa Visible este falsă, puteți amâna acest calcul până când eticheta este vizibilă și o eliminați eficient dacă se întâmplă rar.

  • Excel traducerea sintaxei: Mulți utilizatori știu că ampersandul (&) este utilizat pentru concatenarea șirurilor în Excel. JavaScript folosește un semn plus (+), iar alte limbi folosesc un punct (.).

  • Nume afișate și localizare : First Name este utilizat în Power Fx formulă în timp ce nwind_firstname este utilizat în echivalentul JavaScript. În Microsoft Dataverse și SharePoint, există un nume afișat pentru coloane și tabele, pe lângă un nume logic unic. Numele afișate sunt adesea mult mai ușor de utilizat, ca în acest caz, dar au o altă calitate importantă prin faptul că pot fi localizate. Dacă aveți o echipă multilingvă, fiecare membru al echipei poate vedea numele tabelelor și câmpurilor în propria lor limbă. În toate cazurile de utilizare, Power Fx se asigură că numele logic corect este trimis automat la baza de date.

Fără cod

Nu trebuie să citiți sau să scrieți Power Fx pentru a începe să exprimați logica. Puteți să exprimați multe particularizări și logică prin argumente simple și generatori de interfețe utilizator. Aceste instrumente fără cod sunt construite pentru a citi și a scrie Power Fx, deci există o mulțime de cameră pentru ca cineva să o ia în continuare. Cu toate acestea, instrumentele fără cod nu oferă niciodată expresivitatea limbii complete. Chiar și atunci când utilizați generatori fără cod, bara de formule este în față și în centru în Power Apps pentru a educa creatorul despre ceea ce se face în numele lor, astfel încât să poată începe să învețe Power Fx.

Să ne uităm la câteva exemple. În Power Apps, panoul de proprietăți oferă comutatoare și butoane fără cod pentru proprietățile comenzilor. În practică, majoritatea valorilor proprietăților sunt statice. Puteți utiliza generatorul de culori pentru a schimba culoarea de fundal a Gallery. Observați că bara de formule reflectă această modificare, actualizând formula la un alt apel RGBA. În orice moment, puteți să accesați bara de formule și să faceți acest pas mai departe, în acest exemplu, utilizând ColorFade pentru a ajusta culoarea. Proprietatea de culoare apare în continuare în panoul de proprietăți, dar o pictogramă fx apare pe cursor și sunteți direcționat către bara de formule. Acest lucru funcționează pe deplin în două moduri: eliminarea apelului ColorFade returnează culoarea la ceva ce panoul de proprietăți poate înțelege și îl puteți folosi din nou pentru a seta o culoare.

Culoare fără cod.

Iată un exemplu mai complicat. Galeria arată o listă de angajați din Dataverse. Dataverse furnizează vizualizări asupra datelor din tabel. Aveți posibilitatea să selectați una dintre aceste vizualizări și formula se modifică pentru a utiliza funcția Filter cu acest nume de vizualizare. Puteți utiliza cele două meniuri verticale pentru a apela în tabelul și vizualizarea corectă fără a atinge bara de formule. Dar să presupunem că doriți să mergeți mai departe și să adăugați o sortare. Puteți adăuga acea funcție în bara de formule, iar panoul de proprietăți afișează din nou o pictogramă fx și direcționează modificările barei de formule. Și, din nou, dacă simplificați formula la un lucru pe care panoul de proprietăți îl poate citi și scrie, acesta poate fi utilizat.

Sortare fără cod.

Aceste exemple sunt simple. Power Fx face o limbă foarte bună pentru descrierea interacțiunilor fără cod. Este concis, puternic și ușor de analizat. Acesta oferă sala de cap care este atât de des necesară cu "nicio stâncă" până la cod redus.

Cod pro

Creatorii de cod slabi construiesc uneori soluții care necesită ajutorul unui expert sau sunt preluate de un dezvoltator profesionist pentru a menține și a îmbunătăți. Profesioniștii apreciază, de asemenea, că dezvoltarea de conținut redus de cod poate fi mai ușoară, mai rapidă și mai puțin costisitoare decât crearea unui instrument profesional. Nu orice situație necesită întreaga putere a Visual Studio.

Profesioniștii doresc să folosească instrumente profesionale pentru a fi cei mai productivi. Puteți stoca formule Power Fx în fișierele sursă YAML, care sunt ușor de editat utilizând Visual Studio Code, Visual Studio sau orice alt editor de text. Stocarea formulelor în fișierele YAML vă permite să plasați Power Fx sub control sursă utilizând GitHub, Azure DevOps sau orice alt sistem de control al codului sursă.

Cod Pro Visual Studio  Cod.

Cod Pro GitHub.

Power Fx acceptă componente bazate pe formule pentru partajare și reutilizare. Acesta acceptă parametri pentru proprietățile componentei, permițând crearea de funcții pure definite de utilizator cu mai multe îmbunătățiri pe drum.

De asemenea, Power Fx este excelent pentru îmbinarea componentelor și serviciilor create de profesioniști. Conectorii preinstalați oferă acces la sute de surse de date și servicii web. Conectorii particularizați permit Power Fx să vorbească cu orice serviciu web REST. Componentele de cod permit Power Fx să interacționeze cu JavaScript complet particularizat pe ecran și pagină.

Principii de proiectare

Simplu

Power Fx este proiectat să direcționeze publicul creatorului, ale căror membri nu sunt instruiți ca dezvoltatori. Ori de câte ori este posibil, limba utilizează cunoștințele pe care le cunoaște deja acest public sau le poate prelua rapid. Numărul de concepte necesare pentru a avea succes este redus la minimum.

Simplitatea este, de asemenea, bună pentru dezvoltatori. Pentru publicul dezvoltatorului, Power Fx urmărește să fie o limbă cu cod redus care reduce timpul necesar pentru a construi o soluție.

Consecvență în Excel

Limbajul Microsoft Power Fx împrumută mult din limba formulă Excel. Profită de cunoștințele și experiența Excel de la mulți decidenți care utilizează, de asemenea, Excel. Tipurile, operatorii și semantica funcțională sunt cât mai aproape de Excel.

Dacă Excel nu are un răspuns, Power Fx urmează să consulte SQL. După Excel, SQL este următorul limbaj declarativ cel mai frecvent utilizat și poate oferi îndrumări privind operațiunile de date și tastarea puternică pe care Excel nu o face.

Declarativ

Producătorul descrie ce vor ca logica lor să o facă, nu exact cum sau când să o facă. Această abordare permite compilatorului să optimizeze prin efectuarea de operațiuni în paralel, amânarea lucrului până când este necesar și preluarea și reutilizarea datelor memorate în cache.

De exemplu, într-o foaie de lucru Excel, autorul definește relațiile dintre celule, dar Excel decide când și în ce ordine să se evalueze formulele. În mod similar, vă puteți gândi la formulele dintr-o aplicație ca la "recalculare" după cum este necesar, pe baza acțiunilor utilizatorului, a modificărilor bazei de date sau a evenimentelor cronometrate.

Funcțional

Utilizați funcții pure care nu au efecte secundare. Această abordare are ca rezultat logica care este mai ușor de înțeles și oferă compilatorului cea mai mare libertate de optimizare.

Spre deosebire de Excel, aplicațiile în funcție de natura lor fac mutația stării. De exemplu, aplicațiile au butoane care salvează modificările înregistrării dintr-o bază de date. Unele funcții, prin urmare, au efecte secundare, deși limitează aceste efecte secundare la fel de mult ca este practic.

Compoziție

Acolo unde este posibil, adăugați funcționalități care compun bine cu funcționalitatea existentă. Puteți descompune funcțiile puternice în părți mai mici, pe care le puteți utiliza mai ușor independent.

De exemplu, un control de Galerie nu are proprietăți Sort și Filter separate. În schimb, compuneți funcțiile Sort și Filter împreună într-o singură Items proprietate. Nivelați interfața utilizator pentru expresia Sort și Filter comportamentul în partea de sus a proprietății Items , utilizând un editor bidirecial pentru această proprietate.

Tastat puternic

Tipurile tuturor valorilor sunt cunoscute la momentul compilării. Această abordare permite detectarea timpurie a erorilor și sugestii îmbogățit în timp ce creați.

Tipurile polimorpice sunt acceptate, dar înainte de a le putea utiliza, trebuie să le fixați tipul la un tip static și acel tip trebuie să fie cunoscut la momentul compilării. Funcțiile IsType și AsType sunt furnizate pentru tipurile de testare și repartizare.

Tip de inferență

Tipurile sunt derivate din utilizarea lor fără a fi declarate. De exemplu, setarea unei variabile la un număr duce la stabilirea tipului variabilei ca număr.

Utilizarea tipului conflictual are ca rezultat o eroare în timpul compilării.

Separatoare zecimale sensibile la localizare

Unele regiuni ale lumii folosesc un punct (.) ca separator zecimal, în timp ce alții folosesc o virgulă (,). Excel urmează această convenție regională. Alte limbi de programare utilizează în general un punct canonic (.) ca separator zecimal pentru toți utilizatorii din întreaga lume. Pentru a fi cât mai accesibil posibil pentru factorii de decizie de la toate nivelurile, este important ca 3,14 este un număr zecimal pentru o persoană din Franța care a folosit această sintaxă toată viața.

Alegerea separatorului zecimal are un impact în cascadă asupra separatorului de listă, utilizat pentru argumentele apelului funcției și a operatorului de înlănțuire.

Separator zecimal al limbii autorului Separator zecimal Power Fx Separator de listă Power Fx Operator de înlănțuire Power Fx
. (punct) . (punct) , (virgulă) ; (punct şi virgulă)
, (virgulă) , (virgulă) ; (punct şi virgulă) ;; (punct și virgulă dublă)

Mai multe informații: Asistență globală

Nu este orientat pe obiect

Excel nu este orientat pe obiecte și nici Power Fx. De exemplu, în unele limbi, lungimea unui șir este exprimată ca o proprietate a șirului, cum ar fi "Hello World".length în JavaScript. Excel și Power Fx exprimă în schimb acest lucru în termenii unei funcții, ca Len( "Hello World" ).

Componentele cu proprietăți și metode sunt orientate pe obiecte și Power Fx funcționează ușor cu ele. Dar, dacă este posibil, preferați o abordare funcțională.

Extensibil

Creatorii își pot crea componentele și funcțiile utilizând Power Fx în sine. Dezvoltatorii își pot crea componentele și funcțiile scriind JavaScript.

Compatibil cu dezvoltatorii

Deși creatorii sunt ținta principală, încercați să fiți prietenos cu dezvoltatorii ori de câte ori este posibil. Dacă nu intră în conflict cu principiile de proiectare descrise anterior, faceți lucrurile într-un mod pe care îl apreciază un dezvoltator. De exemplu, Excel nu are capacitatea de a adăuga comentarii, prin urmare utilizați comentarii de genul C și comentarii în linie.

Evoluția limbii

Evoluția limbajelor de programare este atât necesară, cât și complicată. Toata lumea – pe bună dreptate – își exprimă îngrijorarea cu privire la faptul că o schimbare, oricât de bine intenționată ar fi, poate întrerupe codul existent și poate impune utilizatorilor să învețe un nou model. Power Fx ia serios compatibilitatea inversă, dar echipa Power Fx crede, de asemenea, că nu o vor obține întotdeauna corect prima dată și că comunitatea poate învăța colectiv ce este mai bun. Un limbaj de programare trebuie să evolueze, iar Power Fx a fost proiectat să susțină evoluția lingvistică de la bun început.

Fiecare document Power Fx salvat include un marcaj pentru versiunea limbii. Dacă echipa Power Fx dorește să facă o modificare incompatibilă, scrie ceea ce numesc "convertor back compat", care rescriu automat formula data viitoare când este editată. Dacă modificarea este ceva important pe care echipa trebuie să-l educe pe utilizator, aplicația afișează un mesaj cu un link la documente. Prin utilizarea acestei facilități, Power Fx poate încărca în continuare aplicațiile care au fost construite cu versiunile preliminare de Power Apps de acum mulți ani, în ciuda tuturor modificărilor care au avut loc de atunci.

De exemplu, echipa Power Fx a introdus funcția ShowError pentru a afișa un banner de eroare cu un fundal roșu.

Afișează eroarea.

Utilizatorii i-au plăcut, dar au cerut și o modalitate de a afișa un banner de succes (fundal verde) sau un banner informativ (fundal albastru). Deci, echipa a venit cu o funcție mai generică Notify , care preia un al doilea argument pentru tipul de notificare. Echipa ar fi putut să adauge Notify și să păstreze ShowError modul în care a fost, dar în schimb au înlocuit ShowError cu Notify. Ei au eliminat o funcție care era anterior în producție și a înlocuit-o cu altceva. Deoarece ar fi existat două modalități de a face același lucru, această modificare ar fi cauzat confuzie, mai ales pentru utilizatorii noi și, cel mai important, ar fi adăugat complexitatea. Nimeni nu s-a plâns, toată lumea a apreciat schimbarea și apoi a trecut la următoarea funcție de Notificare.

Așa arată aceeași aplicație atunci când este încărcată în cea mai recentă versiune de Power Apps. Nu a fost necesară nicio acțiune de către utilizator pentru ca această transformare să aibă loc, ea a avut loc automat la deschiderea aplicației.

Funcția Notify înlocuiește ShowError.

Prin utilizarea acestei facilități, Power Fx poate evolua mai rapid și mai agresiv decât majoritatea limbajelor de programare.

Nicio valoare nedefinită

Unele limbi, cum ar fi JavaScript, utilizează conceptul unei valori nedefinite pentru variabilele neinițializate sau proprietățile lipsă. Pentru simplitate, Power Fx evită acest concept. Instanțele care ar fi nedefinite în alte limbi sunt tratate fie ca o eroare, fie ca o valoare necompletată. De exemplu, toate variabilele neinițializate încep cu o valoare necompletată. Toate tipurile de date pot lua valoarea golului.

Tipuri de date
Operatori și identificatori
Tabele
Variabile
Logică imperativă
Suport global
Gramatica expresiilor
Gramatica formulelor YAML
Formule în aplicațiile pe pânză