Share via


Pregled usluge Microsoft Power Fx

Power Fx jezik je s niskim kodom koji će se upotrebljavati u svim jezicima platforme Microsoft Power Platform. To je jezik opće namjene, jakog tipa, deklarativni i funkcionalni programski jezik.

Power Fx izražen je u tekstu prilagođenom čovjeku. To je jezik s niskim kodom koji autorima omogućuje izravan rad na traci s formulama poput one u programu Excel ili tekstnom prozoru Visual Studio Code. "Nizak" u izrazu niski kod posljedica je precizne i jednostavne prirode jezika što olakšava uobičajene programske zadatke i za autore i za razvojne programere. Omogućuje čitav spektar razvojnog programiranja, od "no-code" za one koji nikada prije nisu programirali, do "pro code" za pravog profesionalca, bez učenja ili prepisivanja litica između njih, omogućujući raznim timovima suradnju i uštedu vremena i troškova.

Napomena

  • Microsoft Power Fx novo je ime za jezik formula za aplikacije od gotovih gradivnih elemenata u servisu Power Apps. Ovaj pregled i povezani članci nedovršeni su dok izdvajamo jezik iz aplikacija od gotovih gradivnih elemenata i integriramo ga s drugim Microsoft Power Platform proizvoda i činimo ga dostupnim kao otvoreni kod. Kako biste već danas saznali više o jeziku i upoznali se s njime, pogledajte Početak rada s formulama u aplikacijama od gotovih gradivnih elemenata u dokumentaciji za Power Apps i registrirajte se besplatno za probnu verziju usluge Power Apps.
  • U ovom se članku izraz autori upotrebljava kada opisujemo značajku koja bi se mogla koristiti na bilo kojem kraju spektra programskih vještina. Korisnika nazivamo razvojni programer ako je značajka naprednija i vjerojatno izvan okvira tipičnog korisnika programa Excel.

Power Fx povezuje objekte zajedno s deklarativnim formulama nalik proračunskim tablicama. Na primjer, zamislite svojstvo Vidljivo kontrole korisničkog sučelja kao ćeliju u proračunskoj tablici programa Excel s pridruženom formulom koja izračunava njezinu vrijednost na temelju svojstava drugih kontrola. Logika formule automatski izračunava vrijednost, slično onome kako to radi proračunska tablica, što utječe na vidljivost kontrole.

Također, Power Fx nudi imperativnu logiku kada je to potrebno. Radni listovi obično nemaju gumbe koji mogu poslati promjene u bazu podataka, ali aplikacije to često imaju. Isti jezik izraza koristi se i za deklarativnu i za imperativnu logiku.

Power Fx bit će dostupan kao softver otvorenog koda. Trenutno se integrira u aplikacije od gotovih gradivnih elemenata i u procesu smo njegova izdvajanja od usluge Power Apps za upotrebu u drugim Microsoft Power Platform proizvodima i kao otvoreni kod. Više informacija: Microsoft Power Fx na platformi GitHub

Ovaj je članak pregled jezika i njegovih principa dizajna. Da biste saznali više o jeziku Power Fx, pogledajte sljedeće članke:

Proračunska tablica Think

Što ako možete izraditi aplikaciju tako lako kao što radite radni list u programu Excel?

Što ako biste mogli iskoristiti svoje postojeće znanje o proračunskim tablicama?

Bila su to pitanja koja su nadahnula stvaranje usluge Power Apps i jezika Power Fx. Stotine milijuna ljudi svakodnevno izrađuju radne listove pomoću programa Excel; predstavimo im izradu aplikacija koja je jednostavna i koristi koncepte programa Excel koje su već upoznali. Odvajanjem jezika Power Fx od usluge Power Apps odgovorit ćemo na ova pitanja za automatizaciju izrade, virtualnog agenta ili druge domene.

Svi programski jezici, uključujući Power Fx, imaju izraze: način predstavljanja izračuna pomoću brojeva, nizova ili drugih vrsta podataka. Na primjer, mass * acceleration u većini jezika izražava množenje faktora mass i acceleration. Rezultat izraza može se smjestiti u varijablu, koristiti kao argument proceduri ili ugnijezditi u veći izraz.

Power Fx ide korak dalje. Izraz sam po sebi ne govori ništa o tome što izračunava. Autor ga treba postaviti u varijablu ili ga proslijediti u funkciju. U jeziku Power Fx, umjesto da upišete samo izraz koji nema određeno značenje, upisujete formulu koja povezuje izraz s identifikatorom. Upisujete force = mass * acceleration kao formulu za izračunavanje force. Kakako se mass ili acceleration mijenjaju, force se automatski ažurira na novu vrijednost. Izraz je opisivao izračun, formula je tom izračunu dodijelila naziv i koristila ga kao uputu. Iz tog razloga nazivamo Power Fx jezikom formula.

Na primjer, ova formula iz sustava Stack Overflow pretražuje niz obrnutim redoslijedom. Kako to izgleda u programu Excel, prikazano je u nastavku.

Obrnuto pretraživanje

Snimka zaslona s trakom s formulama u programu Excel s formulom: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) ćelija A1 sadrži tekst "Pozdrav svijete! Drago mi je upoznati te!" Ćelija A2 sadrži tekst "te!"

Power Fx radi pomoću te iste formule, reference ćelija zamijenjene su referencama svojstava kontrole:

Power Fx obrnuto pretraživanje.

Snimka zaslona trake s formulama jezika Power Fx u servisu Power Apps. Formula je =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) U okviru za unos ispod formule ispisuje se tekst "Pozdrav, svijete! Drago mi je upoznati te!" prikazuje se slovo po slovo. Istodobno se u okviru Oznaka prikazuju slova zadnje riječi. Kad se u polju za unos prikaže cijeli tekst, riječ "te!" prikazuje se u okviru oznake.

Budući da je vrijednost kontrole Input promijenjena, kontrola Label kontrola automatski ponovno izračunava formulu i prikazuje novu vrijednost. Ovdje nema rukovatelja događajem OnChange kao što je to uobičajeno u drugim jezicima.

Još jedan primjer koji koristi formulu za Fill boju zaslona. Kako se mijenjaju klizači koji kontroliraju crvenu, zelenu i plavu, boja pozadine se automatski mijenja tijekom ponovnog izračuna.

Klizač u boji.

Nema događaja OnChange za kontrole klizača kao što je uobičajeno u drugim jezicima. Ne postoji način da se eksplicitno postavi vrijednost svojstva Fill. Ako boja ne radi kako se očekuje, trebate pogledati ovu jednu formulu da biste razumjeli zašto ne radi. Ne trebate pretraživati aplikaciju kako biste pronašli dio koda koji postavlja svojstvo u neočekivano vrijeme; nema vremenskog elementa. Uvijek se održavaju ispravne vrijednosti formule.

Kako su klizači postavljeni na tamnu boju, naljepnice za crvenu, zelenu i plavu boju mijenjaju se u bijelu kako bi se nadoknadile. To se postiže jednostavnom formulom u svojstvu Color za svaku kontrolu oznake.

Power Fx klizači u boji.

Ono što je sjajno u ovome je to što je izolirano od onoga što se događa za boju Fill: to su dva potpuno različita izračuna. Umjesto velikih monolitnih postupaka, logika jezika Power Fx obično se sastoji od puno manjih formula koje su neovisne. To ih čini jednostavnijim za razumijevanje i omogućuje poboljšanja bez narušavanja postojeće logike.

Power Fx deklarativni je jezik, baš kao što je i Excel. Autor definira kakvo ponašanje želi, ali sustav utvrđuje i optimizira kako i kada to postići. Da bi to bilo praktično, većina posla obavlja se putem čistih funkcija bez nuspojava, što Power Fx čini i funkcionalnim jezikom (opet baš kao što je i Excel).

Uvijek aktivan

Definirajući aspekt radnih listova je da su uvijek aktivni i promjene se odražavaju trenutačno. Na radnom listu ne postoji način kompajliranja ili pokretanja. Kada se formula izmijeni ili unese vrijednost, radni list se odmah preračunava kako bi odražavao promjene. Sve otkrivene pogreške odmah se pojavljuju i ne ometaju ostatak radnog lista.

Ista stvar implementirana je u jeziku Power Fx. Inkrementalni kompajler koristi se za kontinuirano održavanje programa u sinkronizaciji s podacima na kojima radi. Promjene se automatski šire kroz grafikon programa, utječući na rezultate ovisnih izračuna, koji mogu pokretati svojstva na kontrolama poput boje ili položaja. Inkrementalni kompilator također nudi bogato iskustvo uređivanja formula pomoću značajke IntelliSense, prijedloga, automatskog dovršavanja i provjerom tipova.

U animaciji u nastavku broj narudžbe prikazan je u kontroli oznake, ovisno o kontroli klizača, iako postoje dvije pogreške na oznakama ispod nje. Aplikacija je vrlo aktivna i interaktivna. Prvi pokušaj popravljanja formule unosom .InvalidName prikazuju se rezultati u trenutačnoj crvenoj liniji i pogreška, kako bi trebalo, ali aplikacija nastavlja s radom.

Uvijek živi.

Kada se unese .Employee, to uzrokuje da okno Data okno dodaje tablice Zaposlenici, metapodaci za ovu tablicu se dohvaćaju i odmah se nude prijedlozi za stupce. Sad smo prošli kroz odnos od jedne tablice do druge, a sustav je izvršio potrebne prilagodbe referenci aplikacije. Ista se stvar događa kada dodate .Customer.

Nakon svake promjene klizač nastavlja sa zadnjom vrijednošću i sve varijable zadržavaju svoju vrijednost. Tijekom cijelog postupka, broj narudžbe i dalje se prikazuje na gornjoj oznaci kako treba. Aplikacija je cijelo vrijeme aktivna, obrađuje stvarne podatke. Možemo ga spremiti, napustiti ga, a drugi ga mogu otvoriti i koristiti baš kao Excel. Ne postoji korak izrade niti kompajliranje, postoji samo korak objavljivanja kako bi se utvrdilo koja je verzija aplikacije spremna za korisnike.

Bez prethodnog iskustva u programiranju

Power Fx opisuje poslovnu logiku sažetim, ali moćnim formulama. Većina logike može se svesti na jedan redak s puno izražajnosti i kontrole za složenije potrebe. Cilj je smanjiti broj koncepata koje autor treba razumjeti na najmanju moguću mjeru, idealno ne više nego što bi to Excel korisnik već znao.

Na primjer, da biste pronašli ime zaposlenika radi narudžbe, napišite Power Fx kao što je prikazano u sljedećoj animaciji. Osim koncepata programa Excel, ovdje se koristi samo točka "." za detaljnu analizu strukture podataka, u ovom slučaju .Employee.'First Name'. Animacija prikazuje mapiranje između dijelova formule jezika Power Fx i koncepata koji trebaju biti eksplicitno kodirani u ekvivalentnom jeziku JavaScript.

JavaScript s niskim kodom.

Pogledajmo složenije operacije koje Power Fx izvršava i koju slobodu ima za optimizaciju jer je formula bila deklarativna:

  • Asinkroni: Sve podatkovne operacije u programu Power Fx asinkrone su. Autor to ne mora specificirati, niti mora sinkronizirati operacije nakon završetka poziva. Proizvođač uopće ne mora biti svjestan ovog koncepta, ne treba znati što je obećanje ili funkcija lambda.

  • Lokalno i udaljeno: Power Fx koristi istu sintaksu i funkcije za podatke koji su lokalni u memoriji i daljinski povezuje bazu podataka ili uslugu. Korisnik ne mora razmišljati o ovoj razlici. Power Fx automatski delegira poslužitelju ono što može za učinkovitiju obradu filtara i sortiranja.

  • Relacijski podaci: Narudžbe i korisnici dvije su različite tablice s odnosom više-prema-jednom. Upit OData zahtijeva "$ expand" sa znanjem stranog ključa, slično pridruživanju u SQL-u. Formula nema ništa od toga, zapravo ključevi baze podataka su još jedan koncept o kojem proizvođač ne treba znati. Proizvođač može koristiti jednostavne točke da bi pristupio cijelom grafikonu odnosa iz zapisa.

  • Projekcija: Kada pišu upit, mnogi razvojni programeri pišu select * from table, koji vraća sve stupce podataka. Power Fx analizira sve stupce koji se koriste kroz cijelu aplikaciju, čak i među ovisnostima formule. Projekcija se automatski optimizira i, opet, autor ne mora znati što znači "projekcija".

  • Dohvatite samo ono što je potrebno: U ovom primjeru funkcija LookUp podrazumijeva da treba dohvatiti samo jedan zapis i to je sve što se vraća. Ako se traži više zapisa pomoću funkcije Filter, za što bi se mogle kvalificirati tisuće zapisa, istodobno se vraća samo jedna stranica podataka, redoslijedom od 100 zapisa po stranici. Korisnik mora gestikulirati kroz galeriju ili tablicu podataka da bi se prikazalo više podataka ikoji će se automatski unijeti. Autor može razmišljati o velikim skupovima podataka bez potrebe da razmišlja o ograničavanju zahtjeva za podacima na dijelove kojima se može upravljati.

  • Pokreće se samo po potrebi: Definirali smo formulu za svojstvo Text kontrole oznake. Kako se odabrana varijabla mijenja, LookUp se automatski ponovno izračunava, a oznaka se ažurira. Autor nije trebao napisati rukovatelj OnChange za odabir i nije se trebao sjetiti da ova oznaka ovisi o njemu. Ovo je deklarativno programiranje, o čemu smo ranije govorili, proizvođač je odredio što želi imati u oznaci, a ne kako ili kada treba biti dohvaćen. Ako ova oznaka nije vidljiva jer se nalazi na zaslonu koji nije vidljiv ili je njegovo svojstvo Visible netočno, možemo odgoditi izračun dok oznaka ne postane vidljiva i učinkovito je ukloniti ako se to dogodi.

  • Prijevod sintakse programa Excel: Excel koriste mnogi korisnici, od kojih većina zna da se ampersand (&) koristi za ulančavanje nizova. JavaScript koristi znak plus (+), a ostali jezici koriste točku (.).

  • Zaslonski nazivi i lokalizacija: First Name koristi se u formuli jezika Power Fx dok se nwind_firstname koristi u ekvivalentu jezika JavaScript. Na uslugama Microsoft Dataverse i SharePoint postoji jedinstveni logički naziv uz zaslonsko ime za stupce i tablice. Zaslonska imena često su mnogo jednostavnija za upotrebu, kao u ovom slučaju, ali imaju još jednu važnu kvalitetu jer se mogu lokalizirati. Ako imate višejezični tim, svaki član tima može vidjeti nazive tablica i polja na svom jeziku. U svim slučajevima korištenja Power Fx osigurava da se ispravno logičko ime automatski pošalje u bazu podataka.

Nema koda

Ne morate čitati i pisati Power Fx da biste počeli izražavati logiku. Puno je prilagodbi i logike koje se mogu izraziti jednostavnim prekidačima i alatima za izradu korisničkog sučelja. Ovi alati bez koda izgrađeni su za čitanje i pisanje jezika Power Fx kako bi se osiguralo dovoljno prostora za nekoga tko želi naučiti više, istovremeno prihvaćajući da alati bez koda nikada neće pružiti svu izražajnost punog jezika. Čak i kada se koristi s alatom za izradu bez koda, traka formule nalazi se ispred i u sredini aplikacije Power Apps kako bi educirao autora o tome što se radi u njegovo ime kako bi mogao početi učiti više o jeziku Power Fx.

Pogledajmo sljedeće primjere. Na usluzi Power Apps panel sa svojstvima sadrži prekidače i gumbe bez koda za svojstva kontrola. U praksi je većina vrijednosti svojstava statična. Pomoću alata za izradu boja možete promijeniti boju pozadine Gallery. Uzmite u obzir da traka s formulama odražava ovu promjenu, ažurirajući formulu na drugi poziv RGBA. U bilo kojem trenutku možete otići na traku s formulama i napraviti više, u ovom primjeru, pomoću svojstva ColorFade za prilagodbu boja. Svojstvo boje i dalje se prikazuje na ploči svojstava, ali ikona fx pojavit će se na pokazivaču miša i preusmjerit će vas na traku s formulama. Ovo u potpunosti funkcionira na dva načina: uklanjanjem svojstva ColorFade poziv vraća boju na nešto što ploča sa svojstvima može razumjeti i možete je ponovno koristiti za postavljanje boje.

Boja bez koda.

Evo složenijeg primjera. Galerija prikazuje popis zaposlenika s platforme Dataverse. Dataverse omogućuje prikaz podataka tablice. Možemo odabrati jedan od ovih prikaza i formula se mijenja kako bi se koristila funkcija Filter s ovim nazivom prikaza. Dva padajuća izbornika mogu se koristiti za biranje ispravne tablice i prikaza bez upotrebe trake s formulama. Ali pretpostavimo da želite ići dalje i dodati vrstu. To možemo učiniti na traci s formulama, a panel sa svojstvima ponovno prikazuje ikonu fx i usmjerava izmjene na traku s formulama. I opet, ako pojednostavimo formulu na nešto što panel sa svojstvima može čitati i pisati, ona se opet može koristiti.

Vrsta bez koda.

Ovo su jednostavni primjeri. Vjerujemo da je Power Fx izvrstan jezik za opisivanje interakcija bez koda. Sažet je, moćan i jednostavan za raščlanjivanje i pruža prostor koji je tako često potreban "bez litica" do nedostatka iskustva u programiranju.

Pro kod

Autori s niskim kodom ponekad izrađuju stvari za koje je potrebna pomoć stručnjaka ili ih profesionalni razvojni programer preuzima radi održavanja i poboljšanja. Profesionalci također cijene da razvoj low-codea može biti lakši, brži i jeftiniji od izrade profesionalnog alata. Nije svaka situacija potrebna puna snaga značajke Visual Studio.

Profesionalci žele koristiti profesionalne alate kako bi bili najproduktivniji. Formule jezika Power Fx mogu se pohraniti u YAML izvorne datoteke, koje je lako urediti uz Visual Studio Code, Visual Studio ili bilo koji drugi uređivač teksta i omogućuju stavljanje jezika Power Fx pod kontrolu izvora pomoću platformi GitHub, Azure DevOps ili bilo kojeg drugog sustava kontrole izvornog koda.

Šifra profesionalnog koda Visual Studio .

Pro kod GitHub.

Power Fx podržava komponente temeljene na formulama za dijeljenje i ponovnu upotrebu. Najavili smo podršku za parametre svojstvima komponenata, omogućujući stvaranje čistih korisnički definiranih funkcija s dodatnim poboljšanjima.

Također, Power Fx izvrsno spaja komponente i usluge koje su stvorili profesionalci. Gotovi poveznici pružaju pristup stotinama izvora podataka i web-uslugama, prilagođeni poveznici omogućuju jeziku Power Fx da razgovara s bilo kojom REST web-uslugom, a komponente koda omogućuju jeziku Power Fx interakciju s potpuno prilagođenim jezikom JavaScript na zaslonu i stranici.

Principi dizajna

Jednostavan

Power Fx namijenjen je ciljnoj skupini autora čiji članovi nisu razvojni inženjeri. Gdje god je to moguće, koristimo znanje koje bi ova publika već znala ili ih može brzo naučiti. Broj koncepata potrebnih za uspjeh sveden je na najmanju moguću mjeru.

Jednostavnost je dobra i za razvojne programere. Za publiku razvojnog programera želimo biti jezik s low-codeom koji smanjuje vrijeme potrebno za izradu rješenja.

Excel dosljednost

Jezik Microsoft Power Fx uvelike posuđuje od jezika formule Excel. Nastojimo iskoristiti znanje o programu Excel i iskustvo mnogih autora koji također koriste Excel. Vrste, operatori i semantika funkcija jako su slični programu Excel.

Ako Excel nema odgovor, potražite ga u jeziku SQL. Nakon Excela, SQL je sljedeći najčešće korišteni deklarativni jezik i može pružiti smjernice o podatkovnim operacijama i snažnom tipkanju koje Excel ne koristi.

Deklarativno

Autor opisuje što želi da njihova logika radi, ne baš kako ili kada to učiniti. To omogućuje kompajleru da paralelnim izvođenjem operacija, odgodi rad dok je to potrebno i unaprijed dohvaćajući i ponovno upotrebljavajući predmemorirane podatke.

Na primjer, u radnom listu programa Excel autor definira odnose među stanicama, ali Excel odlučuje kada i kojim redoslijedom se formule ocjenjuju. Slično tome, formule u aplikaciji mogu se smatrati "opozivima" prema potrebi na temelju korisničkih radnji, promjena baze podataka ili događaja odbrojavanja.

Funkcionalan

Favoriziramo čiste funkcije koje nemaju nuspojave. To rezultira logikom koju je jedostavnije razumjeti i daje kompajleru najviše slobode za optimizaciju.

Za razliku od program Excel aplikacije po svojoj prirodi mijenjaju stanje, na primjer, aplikacije imaju gumbe koji spremaju promjene zapisa u bazu podataka. Stoga neke funkcije imaju nuspojave, iako to ograničavamo onoliko koliko je to praktično.

Kompozicija

Gdje je to moguće, dodana funkcionalnost dobro radi uz postojeću funkcionalnost. Moćne funkcije mogu se rastaviti na manje dijelove koji se mogu jednostavnije koristiti samostalno.

Na primjer, kontrola Galerija nema odvojena svojstva Sort i Filter. Umjesto toga, funkcije Sort i Filter sastavljene su zajedno u jedno svojstvo Items. Korisničko sučelje za izražavanje ponašanja svojstava Sort i Filter je slojevito na vrhu svojstva Items pomoću dvosmjernog uređivača za ovo svojstvo.

Snažan unos

Vrste svih vrijednosti poznati su u vrijeme sastavljanja. To omogućuje rano otkrivanje pogrešaka i bogatih prijedloga tijekom izrade.

Podržani su polimorfni tipovi, ali prije nego što se mogu upotrijebiti, njihov tip mora biti prikvačen na statički tip i taj tip mora biti poznat u vrijeme sastavljanja. Funkcije IsType i AsType predviđene su za vrste ispitivanja i konverzija.

Procjenjivanje vrste

Vrste su izvedene iz njihove upotrebe, a da nisu prijavljene. Na primjer, postavljanje varijable na broj rezultira time da se vrsta varijable uspostavlja kao broj.

Upotreba vrste sukoba rezultira pogreškom u vremenu kompiliranja.

Lokalno osjetljivi decimalni separatori

Neke regije svijeta koriste točku (.) kao decimalni razdjelnik, dok drugi koriste zarez (,). To čini i program Excel. To se obično ne radi u drugim programskim jezicima, koji obično koriste kanonsku točku (.) kao decimalni razdjelnik za sve korisnike širom svijeta. Da bi bili što pristupačniji autorima na svim razinama, važno je da je broj 3,14 decimalni broj za osobu u Francuskoj koja se koristi tom sintaksom cijeli život.

Odabir decimalnog separatora kaskadno utječe na separator popisa koji se koristi za argumente poziva funkcije i operator povezivanja:

Decimalni razdjelnik na jeziku autora Power Fx decimalni razdjelnik Power Fx razdjelnik popisa Power Fx operator lančanog povezivanja
, (točka) , (točka) , (zarez) ; (točka sa zarezom)
, (zarez) , (zarez) ; (točka sa zarezom) ;; (dvostruka točka sa zarezom)

Više informacija: Globalna podrška

Ne orijentira se na objekt

Excel se ne orijentira na objekt, kao ni Power Fx. Na primjer, u nekim se jezicima dužina niza izražava kao svojstvo niza kao što je "Hello World".length u jeziku JavaScript. Excel i Power Fx umjesto toga izražavaju to u smislu funkcije kao Len( "Hello World" ).

Komponente sa svojstvima i metodama orijentirane su na objekt i Power Fx jednostavno radi s njima. Ali tamo gdje je moguće, više volimo funkcionalni pristup.

Proširivo

Autori mogu izraditi svoje komponente i funkcije pomoću samog jezika Power Fx. Razvojni programeri mogu stvoriti svoje komponente i funkcije koristeći JavaScript.

Prilagođen razvojnim programerima

Iako su nam proizvođači primarna meta, trudimo se prilagoditi razvojnim programerima gdje god je to moguće. Ako se to ne kosi s prethodno opisanim principima dizajna, radimo stvari na način koji će razvojni programer cijeniti. Na primjer, Excel nema mogućnost dodavanja komentara, pa koristimo retke i umetnute komentare nalik na C.

Razvoj jezika

Razvoj programskih jezika istovremeno je neophodan i lukav. Svatko je, s pravom, zabrinut da bi promjena, bez obzira koliko bila dobronamjerna, mogla razbiti postojeći kôd i zahtijevati od korisnika da nauče novi obrazac. Power Fx povratnu kompatibilnost shvaća ozbiljno, ali također čvrsto vjerujemo da prvi put nećemo uvijek uspjeti i zajednički ćemo naučiti što je najbolje u zajednici. Moramo se razvijati i Power Fx je od samog početka dizajnirao podršku za jezični razvoj.

Uz svaki spremljeni dokument Power Fx nalazi se pečat jezične verzije. Ako želimo napraviti nekompatibilnu promjenu, napisat ćemo ono što nazivamo "back compat converter" koji formulu automatski prepisuje pri sljedećem uređivanju. Ako je promjena nešto bitno o čemu moramo educirati korisnika, prikazat ćemo i poruku s vezom na dokumente. Koristeći ovu mogućnost, još uvijek možemo učitati aplikacije koje su izrađene s inačicama pretpregleda za Power Apps od prije mnogo godina, unatoč svim promjenama koje su se dogodile od tada.

Na primjer, uveli smo funkciju ShowError za prikaz natpisa pogreške s crvenom pozadinom.

Pokaži pogrešku.

Korisnicima se svidjelo, ali tražili su i način na koji možemo prikazati natpis uspjeha (zelena podloga) ili informativni natpis (plava podloga). Dakle, smislili smo općenitiju funkciju Notify koja uzima drugi argument za vrstu obavijesti. Mogli smo samo dodati Notify i zadržati ShowError onako kako je bilo, ali umjesto toga smo zamijenili ShowError s funkcijom Notify. Uklonili smo funkciju koja se prethodno proizvodila i zamijenili je nečim drugim. Budući da bi postojala dva načina da se učini isto, to bi izazvalo zabunu, posebno za nove korisnike i, što je najvažnije, to bi dodalo složenost. Nitko se nije žalio, svi su cijenili promjenu, a zatim su prešli na sljedeću značajku Obavijesti.

Ovako izgleda ista aplikacija kada se učita u najnoviju verziju usluge Power Apps. Korisnik nije zahtijevao nikakvu radnju da bi se ta transformacija dogodila, dogodila se automatski prilikom otvaranja aplikacije.

Funkcija obavijesti zamjenjuje ShowError.

Uz ovu mogućnost, Power Fx može se razvijati brže i agresivnije od većine programskih jezika.

Nema nedefinirane vrijednosti

Neki jezici, kao što je JavaScript, koriste koncept vrijednosti nedefiniran za deinicijalizirane varijable ili svojstva koja nedostaju. Radi jednostavnosti, izbjegli smo ovaj koncept. Primjerci koji bi bili nedefinirani na drugim jezicima tretiraju se ili kao pogreška ili kao prazna vrijednost. Na primjer, sve deinicijalizirane varijable započinju praznom vrijednošću. Sve vrste podataka mogu poprimiti vrijednost praznine.

Vrste podataka
Operatori i identifikatori
Tablice
Varijable
Imperativna logika
Globalna podrška
Gramatika izraza
Gramatika formule YAML
Formule u aplikacijama od gotovih gradivnih elemenata