Pregled usluge Microsoft Power Fx
Power Fx je jezik sa malo kodiranja koji će se koristiti širom usluge Microsoft Power Platform. To je opštenamenski, jakog tipa, deklarativni i funkcionalan programski jezik.
Power Fx je izražen u tekstu prilagođenom čoveku. To je jezik sa malo programiranja sa kojim proizvođači mogu direktno raditi u traci sa formulama nalik programu Excel ili prozoru teksta usluge Visual Studio Code. „Malo“ u izrazu „sa malo programiranja“ je zbog jezgrovite i jednostavne prirode jezika, što olakšava uobičajene programske zadatke i proizvođačima i programerima. Omogućava čitav spektar razvoja, od „bez koda“ onima koji nikada ranije nisu programirali, do „profesionalnog koda“ za iskusnog profesionalca, bez mučnog učenja ili prepravljanja između, što omogućava različitim timovima da sarađuju i uštede vreme i troškove.
Belešku
- Microsoft Power Fx je novo ime za jezik formula za aplikacije sa podlogom u usluzi Power Apps. Ovaj pregled i povezani članci su u izradi dok izdvajamo jezik iz aplikacija na platnu, integrišemo ga sa drugim Microsoft Power Platform proizvodima i činimo ga dostupnim u vidu otvorenog koda. Da biste saznali više o doživeli jezik već danas, počnite sa člankom Početni koraci sa formulama u aplikacijama sa podlogom u Power Apps dokumentaciji i registrujte se za besplatnu probnu verziju usluge Power Apps.
- U ovom članku se pozivamo na autore kada opisujemo osobinu koja se može koristiti na bilo kom kraju spektra programskih veština. Korisnika nazivamo programer ako je funkcija naprednija i verovatno van okvira tipičnog korisnika programa Excel.
Power Fx povezuje objekte sa deklarativnim formulama nalik onima u unakrsnim tabelama. Na primer, razmislite o svojstvu Vidljivo kontrole korisničkog interfejsa kao ćelije na Excel radnom listu, sa pridruženom formulom koja izračunava njenu vrednost na osnovu svojstava drugih kontrola. Logika formule automatski izračunava vrednost, slično onome kako to radi proračunska tabela, što utiče na vidljivost kontrole.
Takođe, Power Fx nudi imperativnu logiku kada je to potrebno. Radni listovi obično nemaju dugmad koja mogu poslati promene u bazu podataka, ali aplikacije to često imaju. Isti jezik izraza koristi se i za deklarativnu i za imperativnu logiku.
Power Fx će biti dostupan kao softver otvorenog koda. Trenutno je integrisan u aplikacije sa podlogom, a sad smo u procesu izdvajanja iz usluge Power Apps radi korišćenja u drugim Microsoft Power Platform proizvodima i kao otvoreni kôd. Još informacija: Microsoft Power Fx na GitHubu
Ovaj članak daje pregled jezika i njegovih principa dizajna. Da biste saznali više o jeziku Power Fx, pogledajte sledeće članke:
- Tipovi podataka
- Operatori i identifikatori
- Tabele
- Promenljive
- Imperativ logika
- Globalna podrška
- Izraz gramatika
- IAML formula gramatika
Razmišljajte o unakrsnim tabelama
Šta bi bilo da možete da napravite aplikaciju tako lako kao što napravite radni list u programu Excel?
Šta ako biste mogli da iskoristite svoje postojeće znanje o tabelama?
To su bila pitanja koja su inspirisala kreiranje usluge Power Apps i jezika Power Fx. Stotine miliona ljudi svakodnevno stvaraju radne listove pomoću programa Excel; donesimo im stvaranje aplikacija koje je lako i koriste Excel koncepte koje oni već znaju. Izdvajanjem jezika Power Fx iz usluge Power Apps, odgovorićemo na ova pitanja za automatizaciju gradnje, virtuelnog agenta ili drugih domena.
Svi programski jezici, uključujući Power Fx, imaju izraze: način predstavljanja izračunavanja preko brojeva, nizova ili drugih tipova podataka. Na primer, mass * acceleration
u većini jezika izražava množenje parametara mass
i acceleration
. Rezultat izraza može se staviti u promenljivu, koristiti kao argument u proceduri ili ugnezditi u veći izraz.
Power Fx pravi i korak dalje. Izraz sam po sebi ne govori ništa o tome šta izračunava. Na autoru je da ga postavi u promenljivu ili da ga prosledi u funkciju. U jeziku Power Fx, umesto da napišete samo izraz koji nema određeno značenje, pišete formulu koja vezuje izraz za identifikator. Pišete force = mass * acceleration
kao formulu za izračunavanje force
. Kada se mass
ili acceleration
promene, force
se automatski ažurira na novu vrednost. Izraz je opisivao proračun, formula je tom izračunu dala ime i koristila ga kao recept. Zbog toga Power Fx nazivamo jezikom formula.
Na primer, ova formula iz usluge Stack Overflow pretražuje nisku u obrnutom redosledu. U programu Excel to izgleda kao sledeća slika.
Snimak ekrana trake s formulama u programu Excel sa formulom: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Ćelija A1 sadrži tekst „Zdravo, svete! Sjajno je upoznati vas!“ Ćelija A2 sadrži tekst „ti!“
Power Fx radi sa ovom istom formulom, sa referencama na ćelije koje se zamenjuju referencama na kontrolu svojstava:
Snimak ekrana Power Fx trake formula u usluzi Power Apps. Formula je =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) U polju za unos ispod formule, tekst „Zdravo, svete! Sjajno je upoznati vas!“ pojavljuje se slovo po slovo. Istovremeno u polju Oznaka pojavljuju se slova poslednje reči. Kada se puni tekst pojavi u polju za unos, reč „vi!“ se prikazuje u polju Oznaka.
Kako se vrednost kontrole Input
menja, kontrola Label
automatski preračunava formulu i prikazuje novu vrednost. Ovde ne postoje rukovaoci događajem OnChange
, kao što je to uobičajeno u drugim jezicima.
Još jedan primer koji koristi formulu za boju Fill
ekrana. Kako se menjaju klizači koji kontrolišu crvenu, zelenu i plavu boju, boja pozadine se automatski menja tokom ponovnog izračunavanja.
Ne postoje događaji OnChange
za kontrole klizača, kao što je to uobičajeno u drugim jezicima. Ne postoji način da se bilo kako eksplicitno postavi Fill
vrednost svojstva. Ako boja ne radi kako se očekivalo, treba da pogledate ovu jednu formulu da biste razumeli zašto ne radi. Ne treba da pretražujete aplikaciju da biste pronašli deo koda koji postavlja svojstvo u neočekivano vreme; nema vremenskog elementa. Tačne vrednosti formule se uvek održavaju.
Kada se klizači podese na tamnu boju, oznake za crvenu, zelenu i plavu boju postaju bele da bi ostale čitljive. To se postiže jednostavnom formulom na svojstvu Color
za svaku kontrolu oznake.
Ono što je sjajno u ovome je što je izolovano od onoga što se događa za Fill
boju: ovo su dva potpuno različita proračuna. Umesto velikih monolitnih postupaka, Power Fx logika se obično sastoji od mnogo manjih formula koje su nezavisne. To ih čini lakšim za razumevanje i omogućava poboljšanja bez narušavanja postojeće logike.
Power Fx je deklarativni jezik, baš kao što je i Excel. Proizvođač definiše kakvo ponašanje želi, ali na sistemu je da utvrdi i optimizuje kako i kada da to postigne. Da bi to bilo praktično, većina posla se obavlja putem čistih funkcija bez neželjenih efekata, čineći Power Fx takođe funkcionalnim jezikom (i opet, baš kao što je to i Excel).
Uvek aktivno
Definišući aspekt radnih listova je da su oni uvek aktivni i promene se odražavaju trenutno. Na radnom listu ne postoji režim kompajliranja ili pokretanja. Kada se formula modifikuje ili unese vrednost, radni list se odmah preračunava da odražava promene. Sve otkrivene greške odmah se pojavljuju i ne ometaju ostatak radnog lista.
Ista stvar se primenjuje u jeziku Power Fx. Inkrementalni kompajler se koristi za kontinuirano održavanje programa u sinhronizaciji sa podacima na kojima radi. Promene se automatski prenose kroz grafikon programa, utičući na rezultate zavisnih proračuna, koji mogu pokretati svojstva na kontrolama kao što su boja ili položaj. Inkrementalni kompajler takođe nudi bogato iskustvo uređivanja formula sa tehnologijom IntelliSense, predlozima, automatskim dovršavanjem i proverom tipova.
U animaciji u nastavku, broj naloga se prikazuje u kontroli oznake u zavisnosti od kontrole klizača, iako postoje dve greške u oznakama ispod nje. Aplikacija je veoma aktivna i interaktivna. Prvi pokušaj popravljanja formule unosom .InvalidName
rezultira trenutnom crvenom linijom i prikazuje se greška, kako bi trebalo, ali aplikacija nastavlja da radi.
Kada se unese .Employee
, ovo uzrokuje da Data
okno doda tabelu Zaposleni, preuzimaju se metapodaci za ovu tabelu i odmah se nude predlozi za kolone. Samo smo prešli preko relacije jedne tabele sa drugom i sistem je izvršio potrebna prilagođavanja referenci aplikacije. Ista stvar se dešava kada dodate a .Customer
.
Nakon svake promene, klizač nastavlja sa poslednjom vrednošću i sve promenljive zadržavaju svoju vrednost. Sve vreme, broj porudžbine se i dalje prikazuje u gornjoj oznaci kako treba. Aplikacija je bila aktivna sve vreme i obrađivala je stvarne podatke. Možemo sačuvati podatke, otići, a drugi iz mogu otvoriti i koristiti baš kao i u programu Excel. Ne postoji korak izrade niti kompajliranje, postoji samo korak objavljivanja kako bi se utvrdilo koja verzija aplikacije je spremna za korisnike.
Mali obim kodiranja
Power Fx opisuje poslovnu logiku u sažetim, ali moćnim formulama. Većina logike se može svesti u jedan red sa puno izražajnosti i kontrole za složenije potrebe. Cilj je da se broj koncepata koje autor mora da razume svede na minimum – u idealnom slučaju, ne više nego što bi to korisnik programa Excel već znao.
Na primer, da biste potražili ime zaposlenog za porudžbinu, napišite Power Fx kao što je prikazano u sledećoj animaciji. Pored Excel koncepata, ovde se koristi samo oznaka tačke „.“ za analizu strukture podataka, u ovom slučaju .Employee.'First Name'
. Animacija prikazuje mapiranje delova Power Fx formule i koncepata koji moraju biti eksplicitno kodirani u ekvivalentnom JavaScript kodu.
Pogledajmo detaljnije na sve stvari koje Power Fx radi za nas i na slobodu koju treba da optimizuje jer je formula bila deklarativna:
Asinhrono: Sve operacije podataka u Power Fx su asinhrone. Proizvođač ne mora ovo da specificira, niti mora sinhronizovati operacije nakon završetka poziva. Autor uopšte ne mora da bude svestan ovog koncepta, ne treba da zna šta je obećanje ili lambda funkcija.
Lokalno i daljinski: Power Fx koristi istu sintaksu i funkcije za podatke koji su lokalni u memoriji i daljinski poveže bazu podataka ili servis. Korisnik ne mora da razmišlja o ovoj razlici. Power Fx automatski delegira serveru ono što može da bi tamo efikasnije obradio filtere i sortirao sadržaj.
Relacioni podaci: Porudžbine i kupci su dve različite tabele, sa odnosom više na jedan. OData upit zahteva „$expand“ sa poznavanjem stranog ključa, slično funkciji Join u SQL-u. Formula nema ništa od ovoga, zapravo ključevi baze podataka su još jedan koncept o kojem autor ne mora ništa da zna. Autor može da koristi jednostavnu notaciju sa tačkama da bi pristupio celom grafikonu relacija iz zapisa.
Projekcija: Kada pišete upit, mnogi programeri pišu
select * from table
, što vraća sve kolone podataka. Power Fx analizira sve kolone koje se koriste u celoj aplikaciji, čak i u zavisnostima od formula. Projekcija se automatski optimizuje i, opet, proizvođač ne mora da zna šta znači „projekcija“.Preuzmi samo ono što je potrebno: U ovom primeru,
LookUp
funkcija podrazumeva da samo jedan zapis treba da bude preuzet i to je sve što se vraća. Ako se traži više zapisa pomoćuFilter
funkcije – za šta bi se moglo kvalifikovati hiljade zapisa – istovremeno se vraća samo jedna stranica podataka, u rasporedu od 100 zapisa po stranici. Korisnik mora pokretima da prođe kroz galeriju ili tabelu podataka da bi video više podataka i oni će mu se automatski prikazati. Proizvođač može da rasuđuje o velikim skupovima podataka bez potrebe da razmišlja o ograničavanju zahteva za podacima na praktične delove.Pokreće se samo kada je to potrebno: Definisali smo formulu za
Text
svojstvo kontrole oznake. Čim se izabrana promenljiva promeni, funkcijaLookUp
se automatski preračunava i oznaka se ažurira. Proizvođač nije morao da napiše OnChange obrađivač za izbor i nije morao da se seti da ova oznaka zavisi od njega. Ovo je deklarativno programiranje, o čemu je ranije bilo reči, autor je precizirao šta želi da ima u oznaci, a ne kako i kada to treba da bude pribavljeno. Ako ova oznaka nije vidljiva jer se nalazi na ekranu koji nije vidljiv ili je njegovoVisible
svojstvo netačno, možemo izračunavanje odložiti dok oznaka ne bude vidljiva i efikasno ga ukloniti ako se to retko dogodi.Prevod sintakse Ekcel-a: Ekcel koriste mnogi korisnici, od kojih većina zna da se ampersand (&) koristi za spajanje nizova. JavaScript koristi znak plus (+), a drugi jezici koriste tačku (.).
Prikaz imena i lokalizacija:
First Name
koristi se u formuli Power Fx doknwind_firstname
se koristi u JavaScript ekvivalentu. U uslugama Microsoft Dataverse i SharePoint, tu je i ime za prikaz za kolone i tabele pored jedinstvenog logičkog imena. Imena za prikaz su često mnogo jednostavnija za upotrebu, kao u ovom slučaju, ali imaju još jedan važan kvalitet jer mogu biti lokalizovana. Ako imate višejezični tim, svaki član tima može videti imena tabela i polja na svom jeziku. U svim slučajevima upotrebe, Power Fx osigurava da se tačno logičko ime automatski pošalje u bazu podataka.
Bez koda
Ne morate čitati i pisati Power Fx da biste počeli izražavati logiku. Postoji puno prilagođavanja i logike koja se može izraziti jednostavnim prekidačima i graditeljima korisničkog interfejsa. Ovi alati bez kodiranja napravljeni su za čitanje i pisanje jezika Power Fx kako bi se osiguralo dovoljno prostora za nekoga da to nastavi dalje, istovremeno priznajući da alati bez kodiranja nikada neće pružiti svu izražajnost punog jezika. Čak i kada se koristi sa alatkama za izradu bez kodiranja, traka formula je centralna u usluzi Power Apps kako bi autoru pokazala šta se radi u njegovo ime kako bi on mogao da počne da uči Power Fx.
Pogledajmo neke primere. U usluzi Power Apps, tabla svojstava obezbeđuje prekidače i dugmad „bez koda“ za svojstva kontrola. U praksi je većina svojstava statična. Pomoću alata za izgradnju boja možete promeniti boju pozadine za Gallery
. Primetite da traka formule odražava ovu promenu, ažurirajući formulu na drugi RGBA
poziv. U bilo kom trenutku možete otići na traku formula i napraviti ovaj korak dalje – u ovom primeru, korišćenjem ColorFade
za podešavanje boje. Svojstvo boje i dalje se pojavljuje na tabli sa svojstvima, ali fx ikona se pojavljuje pri prelasku pokazivača i preusmereni ste na traku sa formulama. Ovo u potpunosti funkcioniše na dva načina: uklanjanje ColorFade
poziva vraća boju nečemu što tabla svojstava može da razume i možete je ponovo koristiti za podešavanje boje.
Evo složenijeg primera. Galerija prikazuje spisak zaposlenih iz usluge Dataverse. Dataverse obezbeđuje prikaze podataka tabele. Možemo odabrati jedan od ovih prikaza i formula se menja tako da koristi Filter
funkciju sa ovim imenom prikaza. Dva padajuća menija mogu se koristiti za biranje tačne tabele i prikaza bez dodirivanja trake sa formulama. Ali recimo da želite da idete dalje i dodate sortiranje. To možemo učiniti na traci za formule i tabla svojstava ponovo prikazuje ikonu fx i usmerava izmene na traku za formule. I opet, ako pojednostavimo formulu na nešto što tabla svojstava može da čita i piše, ona se opet može koristiti.
Ovo su bili jednostavni primeri. Verujemo da Power Fx predstavlja odličan jezik za opisivanje interakcija bez kodiranja. Koncizan je, moćan i jednostavan za raščlanjivanje i pruža dovoljno slobodnog prostora koji je tako često potreban za rad bez teškoća do nivoa malo kodiranja.
Profesionalni kôd
Autori sa malo kodiranja ponekad grade stvari za koje je potrebna pomoć stručnjaka ili ih profesionalni programer preuzima radi održavanja i poboljšanja. Profesionalci takođe cene to što razvoj sa malo kodiranja može biti lakši, brži i jeftiniji od izrade profesionalnog alata. Nije u svakoj situaciji potrebna puna snaga sistema Visual Studio.
Profesionalci žele da koriste profesionalne alate kako bi bili najproduktivniji. Power Fx formule se mogu čuvati u YAML izvornim datotekama, koje se lako uređuju pomoću usluge Visual Studio Code, platforme Visual Studio ili bilo kog drugog uređivača teksta i omogućavaju stavljanje jezika Power Fx pod kontrolu izvora pomoću usluga GitHub, Azure DevOps ili bilo kog drugog sistema kontrole izvornog koda.
Power Fx podržava komponente zasnovane na formulama za deljenje i ponovnu upotrebu. Najavili smo podršku za parametre svojstvima komponenti, što omogućava stvaranje čistih korisničkih funkcija, uz više poboljšanja u budućnosti.
Takođe, Power Fx sjajno spaja komponente i usluge koje su napravili profesionalci. Gotovi konektori pružaju pristup stotinama izvora podataka i veb-uslugama, prilagođeni konektori omogućavaju da Power Fx razgovara sa bilo kojom REST veb-uslugom, a komponente koda omogućavaju da Power Fx stupi u interakciju sa potpuno prilagođenim JavaScript kodom na ekranu i stranici.
Principi dizajna
Jednostavni
Power Fx je dizajniran da cilja ciljnu grupu autora, čiji članovi nisu obučeni programeri. Gde god je to moguće, koristimo znanje koje bi ova ciljna grupa već znala ili može brzo da usvoji. Broj koncepata potrebnih za uspeh sveden je na minimum.
Jednostavnost je dobra i za programere. Za ciljnu grupu programera, nameravamo da budemo jezik sa malo kodiranja koji skraćuje vreme potrebno za izgradnju rešenja.
Excel doslednost
Microsoft Power Fx jezik se u velikoj meri oslanja na jezik Excel formula. Nastojimo da iskoristimo Excel znanje i iskustvo mnogih proizvođača koji takođe koriste Excel. Tipovi, operatori i semantika funkcija su najbliže moguće programu Excel.
Ako Excel nema odgovor, okrećemo se jeziku SQL. Posle programa Excel, SQL je sledeći najčešće korišćeni deklarativni jezik i može pružiti smernice o operacijama podataka i snažnom kucanju koje Excel nema.
Deklarativno
Proizvođač opisuje šta želi da njegova logika radi, ne baš kako ili kada da to uradi. To omogućava kompajleru da optimizuje paralelnim izvođenjem operacija, odlažući rad dok ne zatreba i preuzimajući i ponovo koristeći keširane podatke.
Na primer, u Excel radnom listu, autor definiše odnose među ćelijama, ali Excel odlučuje kada i kojim redosledom se procenjuju formule. Slično tome, formule u aplikaciji mogu se smatrati „ponovnim izračunavanjima“ po potrebi na osnovu radnji korisnika, promena baze podataka ili događaja tajmera.
Funkcionalnost
Mi najviše volimo čiste funkcije koje nemaju neželjene efekte. To rezultira logikom koju je lakše razumeti i daje kompajleru najveću slobodu za optimizaciju.
Za razliku od programa Excel, aplikacije po svojoj prirodi menjaju status – na primer, aplikacije imaju dugmad koja čuvaju promene zapisa u bazi podataka. Stoga neke funkcije imaju neželjene efekte, iako to ograničavamo onoliko koliko je praktično.
Kompozicija
Tamo gde je to moguće, dodata funkcionalnost se dobro slaže sa postojećom funkcionalnošću. Moćne funkcije mogu se rastaviti na manje delove koji se mogu lakše koristiti samostalno.
Na primer, kontrola Galerija nema odvojena svojstva Sort
i Filter
. Umesto toga, funkcije Sort
i Filter
su sastavljene zajedno u jedno svojstvo Items
. Korisnički interfejs za izražavanje ponašanja Sort
i Filter
je slojevit preko svojstva Items
korišćenjem dvosmernog uređivača za ovo svojstvo.
Strogo definisanje tipova
Tipovi svih vrednosti su poznati u vreme kompajliranja. To omogućava rano otkrivanje grešaka i mnogobrojne predloge u toku pisanja.
Podržani su polimorfni tipovi, ali pre nego što se mogu koristiti, njihov tip mora biti zakačen za statički tip i taj tip mora biti poznat tokom kompajliranja. Funkcije IsType i AsType su predviđene za testiranje i konverziju tipova.
Zaključivanje tipova
Tipovi su izvedeni iz upotrebe, a da nisu deklarisani. Na primer, postavljanjem promenljive na broj rezultira da se tip promenljive uspostavi kao broj.
Konfliktna upotreba tipova dovodi do greške tokom kompajliranja.
Decimalni separatori osetljivi na lokalni standard
Neki regioni sveta koriste tačku (.) kao decimalni separator, dok drugi koriste zarez (,). To je ono što i Excel radi. To se obično ne radi u drugim programskim jezicima, koji obično koriste kanonsku tačku (.) kao decimalni separator za sve korisnike širom sveta. Da biste bili što pristupačniji proizvođačima na svim nivoima, važno je da je 3,14
decimalni broj za osobu u Francuskoj koja se koristi tom sintaksom celog svog života.
Izbor decimalnog separatora kaskadno utiče na separator liste, koji se koristi za argumente poziva funkcije, i na operater lančanog povezivanja.
Decimalni separator na jeziku autora | Power Fx znak za razdvajanje decimala | Power Fx znak za razdvajanje liste | Power Fx operator lančanog povezivanja |
---|---|---|---|
, (tačka) | , (tačka) | ,(zarez) | ; (tačka-zarez) |
,(zarez) | ,(zarez) | ; (tačka-zarez) | ;; (dvostruka tačka i zarez) |
Još informacija: Globalna podrška
Nije objektno orijentisan
Excel nije objektno orijentisan, kao ni Power Fx. Na primer, u nekim jezicima se dužina stringa izražava kao svojstvo stringa, kao što je "Hello World".length
u jeziku JavaScript. Excel i Power Fx umesto toga izražavaju ovo kroz funkciju, kao Len( "Hello World" )
.
Komponente sa svojstvima i metodama su objektno orijentisane i Power Fx lako radi sa njima. Ali tamo gde je moguće, više volimo funkcionalni pristup.
Proširivost
Autori mogu da kreiraju svoje komponente i funkcije pomoću samog jezika Power Fx. Programeri mogu da kreiraju svoje komponente i funkcije pisanjem JavaScript koda.
Prilagođen programerima
Iako su nam autori primarna ciljna grupa, trudimo se da budemo prilagođeni programerima gde god je to moguće. Ako se to ne kosi sa prethodno opisanim principima dizajna, radimo stvari na način koji će programer ceniti. Na primer, Excel nema mogućnost dodavanja komentara, pa koristimo redove i redove u obliku slova C.
Evolucija jezika
Razvoj programskih jezika je i neophodan i nezgodan. Svi su – s pravom – zabrinuti da bi promena, bez obzira koliko bila dobronamerna, mogla razbiti postojeći kôd i zahtevati od korisnika da nauče novi obrazac. Power Fx ozbiljno shvata povratnu kompatibilnost, ali takođe čvrsto verujemo da to nećemo uvek pogoditi iz prve i zajednički ćemo kao zajednica učiti šta je najbolje. Moramo se razvijati i Power Fx je od samog početka dizajniran da podrži evoluciju jezika.
Oznaka verzije jezika dobija se uz svaki sačuvani Power Fx dokument. Ako želimo da napravimo nekompatibilnu promenu, napisaćemo ono što nazivamo „konverter povratne kompatibilnosti“ koji automatski prepravlja formulu sledeći put kada je uređuje. Ako je promena nešto glavno o čemu treba da edukujemo korisnika, prikazaćemo i poruku sa vezom do dokumenata. Koristeći ovu mogućnost, i dalje možemo učitati aplikacije koje su napravljene pomoću verzija za pregled usluge Power Apps od pre mnogo godina, uprkos svim promenama koje su se dogodile od tada.
Na primer, uveli smo funkciju ShowError
za prikaz banera greške sa crvenom pozadinom.
Korisnicima se to svidelo, ali su od nas takođe tražili način za prikazivanje banera za uspeh (zelena pozadina) ili informativnog banera (plava pozadina). Dakle, smislili smo generičkiju Notify
funkciju koja uzima drugi argument za vrstu obaveštenja. Mogli smo samo dodati Notify
i zadržati ShowError
onakav kakav je bio, ali smo umesto toga zamenili ShowError
sa Notify
. Uklonili smo funkciju koja se ranije proizvodila i zamenili je nečim drugim. Budući da su postojala dva načina da se uradi ista stvar, ovo bi izazvalo zabunu – posebno za nove korisnike – i, što je najvažnije, to bi dodalo složenost. Niko se nije žalio, svi su cenili promenu, a zatim se prebacili na sledeću funkciju „Notify“.
Evo kako izgleda ista aplikacija kada se učita u najnoviju verziju usluge Power Apps. Korisnik nije zahtevao nikakvu radnju da bi se ova transformacija dogodila, ona se dogodila automatski kada je aplikacija otvorena.
Pomoću ove funkcije, Power Fx može da se razvija brže i agresivnije od većine programskih jezika.
Nema nedefinisane vrednosti
Neki jezici, poput JavaScript, koriste koncept nedefinisane vrednosti za neinicijalizovane promenljive ili nedostajuća svojstva. Radi jednostavnosti, izbegli smo ovaj koncept. Primeri koji ne bi bili definisani na drugim jezicima tretiraju se kao greška ili kao prazna vrednost. Na primer, sve neinicijalizovane promenljive počinju praznom vrednošću. Svi tipovi podataka mogu dobiti praznu vrednost.
Srodni članci
Tipovi podataka
Operatori i identifikatori
Tabele
Promenljive
Imperativ logika
Globalna podrška
Izraz gramatika
IAML formula gramatika
Formule u aplikacijama platna