Oversigt over Microsoft Power Fx

Power Fx er det sprog med lav kode, der bruges på tværs af Microsoft Power Platform. Det er et generelt, beskrivende og funktionelt programmeringssprog med stærke datatyper.

Power Fx er et sprog med brugervenlig tekst. Det er et sprog med lav kode, som oprettere kan arbejde med direkte på et Excel-lignende formellinje eller i et Visual Studio Code-tekstvindue. Den "lave" kode skyldes, at sproget er præcist og simpelt, hvilket gør det nemt for både oprettere og udviklere at udføre almindelige programmeringsopgaver. Det gør det muligt at udvikle ved hjælp af "ingen kode" for dem, der aldrig har programmeret før, til "professionel kode" for den rutinerede professionelle, hvor der ikke er lærings- eller omskrivningskløfter mellem forskellige teams, så de kan samarbejde og spare tid og udgifter.

Bemærk

  • Microsoft Power Fx er det nye navn på formelsproget for lærredapps i Power Apps. Vi arbejder på denne oversigt og tilknyttede artikler, mens vi udtrækker sproget fra lærredapps, integrerer det i andre Microsoft Power Platform-produkter og gør det tilgængeligt som open source. Hvis du vil vide mere om og opleve sproget i dag, skal du starte med Introduktion til formler i lærredapps i dokumentationen til Power Apps og tilmelde dig et gratis prøveabonnement på Power Apps.
  • I denne artikel henviser vi til oprettere, når vi beskriver en funktion, der kan bruges i begge ender af programmeringsspektret. Vi refererer til brugeren som en udvikler, hvis funktionen er mere avanceret og sandsynligvis ikke henvender sig til en typisk Excel-bruger.

Power Fx binder objekter sammen med beskrivende regnearksbaserede formler. Du kan for eksempel tænke på egenskaben Synlig for et kontrolelement på brugergrænsefladen som en celle i et Excel-regneark med en tilknyttet formel, der beregner værdien på baggrund af egenskaberne for andre kontrolelementer. Formellogikken genberegner værdien automatisk, på samme måde som et regneark gør, hvilket påvirker kontrolelementets synlighed.

Power Fx indeholder også vigtig logik, når det er nødvendigt. Regneark har typisk ikke knapper, der kan sende ændringer til en database, men det gør apps ofte. Det samme udtrykssprog bruges til både deklarativ og essentiel logik.

Power Fx bliver gjort tilgængelig som open source-software. Det er i øjeblikket integreret i lærredapps, og vi er ved at udtrække det fra Power Apps til brug i andre Microsoft Power Platform-produkter og som open source. Flere oplysninger: Microsoft Power Fx på GitHub

Denne artikel er en oversigt over sproget og designprincipperne bag det. Du kan lære mere om Power Fx i følgende artikler:

Tænk på regneark

Hvad hvis du kunne oprette en app lige så let, som du bygger et regneark i Excel?

Hvad hvis du kunne udnytte din eksisterende viden om regneark?

Det var disse spørgsmål, der inspirerede til oprettelsen af Power Apps og Power Fx. Hundreder af millioner af personer opretter hver dag regneark med Excel. Lad os hjælpe dem med at oprette apps, der er nemme at bruge, og som bruger Excel-begreber, de allerede kender. Ved at adskille Power Fx fra Power Apps vil vi besvare disse spørgsmål vedrørende opbygning af automatisering, en virtuel agent eller andre domæner.

Alle programmeringssprog, herunder Power Fx, har udtryk: en metode til at repræsentere en beregning af tal, strenge eller andre datatyper. mass * acceleration på de fleste sprog udtrykker f.eks. multiplicering af mass og acceleration. Resultatet af et udtryk kan placeres i en variabel, bruges som et argument til en procedure eller indlejres i et større udtryk.

Power Fx går endnu videre. Et udtryk i sig selv siger ikke noget om, hvad det beregner. Det er op til opretteren at placere det i en variabel eller overføre det til en funktion. I stedet for kun at skrive et udtryk, der ikke har nogen specifik betydning, skriver du i Power Fx en formel, der binder udtrykket til et id. Du skriver force = mass * acceleration som en formel til beregning af force. Efterhånden som mass eller acceleration ændres, opdateres force automatisk til en ny værdi. Udtrykket beskrev en beregning, en formel, der gav beregningen et navn og brugte det som en betegnelse. Det er derfor, vi refererer til Power Fx som et formelsprog.

Denne formel fra Stack Overflow søger for eksempel i en streng i omvendt rækkefølge. I Excel ligner det følgende billede.

Omvendt søgning

Skærmbillede af en formellinje i Excel med formlen: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) indeholder celle A1 teksten "Hej verden! Det er godt at møde dig!" Celle A2 indeholder teksten "dig!"

Power Fx fungerer med den samme formel, og cellereferencerne erstattes af referencer til kontrolelementegenskaben:

Omvendt Power Fx-søgning.

Skærmbillede af en Power Fx-formellinje i Power Apps. Formlen er =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text", ""|", Len(Input.Text)-Len(Substitute(Input.Text", ","")))) I feltet Input under formlen vises teksten "Hej verden! Det er godt at møde dig!" vises brev for bogstav. Samtidig vises bogstaverne i det sidste ord i feltet Etiket. Når den fulde tekst vises i feltet Input, vises ordet "dig!" vises i navneboksen.

Når værdien i kontrolelementet Input ændres, genberegnes formlen automatisk i kontrolelementet Label, og den nye værdi vises. Der findes ingen OnChange-hændelseshandlere her, som der ellers ville være på andre sprog.

Et andet eksempel, der bruger en formel til skærmens Fill-farve. Når de skydere, der styrer rød, grøn og blå, ændres, ændres baggrundsfarven automatisk, når den genberegnes.

Farveskyder.

Der findes ingen OnChange-hændelser for kontrolelementerne af typen skyder, som det ofte er tilfældet på andre sprog. Det er ikke muligt eksplicit at angive Fill-egenskabsværdien. Hvis farven ikke virker som forventet, skal du kigge på denne formel for at forstå, hvorfor den ikke fungerer. Du behøver ikke at søge i hele appen for at finde et kodestykke, der angiver egenskaben på et uventet tidspunkt. Der findes ikke et tidselement. De rette formelværdier bevares altid.

Når skyderne angives til en mørk farve, ændres etiketterne for Rød, Grøn og Blå til hvid for at kompensere for det. Det sker via en simpel formel for egenskaben Color for de enkelte etiketkontrolelementer.

Power Fx-farveskydere.

Det fantastiske ved dette er, at den er isoleret fra det, der sker for Fill-farven: Det er to helt forskellige beregninger. I stedet for store, monolitiske procedurer består Power Fx-logik typisk af mange mindre formler, der er uafhængige. Det gør det nemmere at forstå dem og gør det muligt at forbedre dem uden at forstå den eksisterende logik.

Power Fx er et beskrivende sprog, på samme måde som Excel er. Opretteren definerer, hvilken funktionsmåde de vil have, men det er op til systemet at bestemme og optimere, hvordan og hvornår det skal udføres. For at gøre det praktisk udføres det meste arbejde via funktioner uden sideeffekter, hvilket også gør Power Fx til et funktionssprog (igen, ligesom Excel er).

Altid dynamiske

Et definerende aspekt i regneark er, at de altid er dynamiske, og ændringer afspejles øjeblikkeligt. Der findes ingen kompilerings- eller kørselstilstand i et regneark. Når en formel ændres, eller der angives en værdi, genberegnes regnearket straks, så det afspejler ændringerne. Eventuelle fejl, der registreres, vises med det samme, og de forstyrrer ikke resten af regnearket.

Det samme implementeres med Power Fx. En trinvis kompilering bruges til kontinuerligt at holde programmet synkroniseret med de data, der arbejdes med. Ændringer overføres automatisk via programmets graf, hvilket påvirker resultaterne af afhængige beregninger, som kan have indflydelse på egenskaber for kontrolelementer, f.eks. farve eller placering. Den trinvise kompilering giver også en omfattende redigeringsoplevelse med IntelliType, forslag, autofuldførelse og typekontrol.

I animationen nedenfor vises ordrenummeret i et etiketkontrolelement, der er afhængigt af skyderen, selvom der er to fejl på etiketterne under den. Appen er i høj grad i dynamisk og interaktiv. Det første forsøg på at rette formlen ved at skrive .InvalidName medfører en rød linje og en fejl, der vises med det samme, men appen kører hele tiden.

Altid dynamiske.

Når der angives .Employee, medfører det, at Data-ruden tilføjer tabellen Medarbejdere, der hentes metadata til denne tabel, og der tilbydes straks forslag til kolonner. Vi har lige flyttet en relation fra én tabel til en anden, og systemet har foretaget de nødvendige tilpasninger af appens referencer. Det samme sker, når du tilføjer en .Customer.

Efter hver ændring fortsætter skyderen med dens sidste værdi, og alle variabler bevarer deres værdi. Hele vejen igennem er vises ordrenummeret fortsat i den øverste etiket, som det skal. Appen har været dynamisk og har behandlet rigtige data hele tiden. Vi kan gemme den, gå væk, og andre kan åbne og bruge den ligesom Excel. Der er ingen byggetrin, ingen kompilering, der er kun et udgivelsestrin, der skal afgøre, hvilken version af appen der er klar til brugere.

Lav kode

Power Fx beskriver forretningslogik i præcise, men effektive formler. Det meste logik kan reduceres til en enkelt linje med masser af udtryksmuligheder og kontrol til mere komplekse behov. Målet er at holde et minimalt antal begreber, som en udvikler skal forstå - helst ikke flere end en Excel-bruger allerede ville kende.

Hvis du f.eks. vil slå fornavnet på en medarbejder op for en ordre, skal du skrive Power Fx som vist i følgende animation. Ud over Excel-begreber er det eneste tilføjede koncept, der bruges her, prikanmærkningen "." for at foretage detailudledning i en datastruktur, i dette tilfælde .Employee.'First Name'. Animationen viser tilknytningen mellem delene i Power Fx-formlen og de begreber, der eksplicit skal kodes i det tilsvarende JavaScript.

JavaScript med lav kode.

Lad os gå mere i dybden med alle de ting, Power Fx klarer for os, og hvordan det kan optimeres, fordi formlen var beskrivende:

  • Asynkron: Alle datahandlinger i Power Fx er asynkrone. Det er ikke nødvendigt for opretteren at angive dette, og det er heller ikke nødvendigt for opretteren at synkronisere handlinger, når kaldet er ovre. Opretteren behøver slet ikke at være opmærksom på dette koncept. De behøver ikke at vide, hvad et løfte eller en lambda-funktion er.

  • Lokalt og eksternt: Power Fx bruger samme syntaks og funktioner for data, der findes lokalt i hukommelsen og eksternt i en database eller tjeneste. Brugeren behøver ikke at overveje denne skelnen. Power Fx uddelegerer automatisk, hvad den kan, til serveren for at behandle filtre og sorteringer mere effektivt der.

  • Relationsdata: Ordrer og Kunder er to forskellige tabeller med en mange til en-relation. OData-forespørgslen kræver en "$expand" med kendskab til den fremmede nøgle, i stil med en Join i SQL. Formlen har ikke noget af dette. Faktisk er databasenøgler et andet koncept, som opretteren ikke behøver at vide noget om. Opretteren kan bruge en simpel punktnote til at få adgang til hele grafen over relationer fra en post.

  • Projektion: Når der skrives en forespørgsel, skriver mange udviklere select * from table, hvorved alle datakolonnerne hentes tilbage. Power Fx analyserer alle de kolonner, der bruges i hele appen, også på tværs af formelafhængigheder. Projektion optimeres automatisk, og igen behøver en opretter ikke at vide, hvad "projektion" betyder.

  • Hent kun det, der er nødvendigt: I dette eksempel indikerer funktionen LookUp, at der kun skal hentes én post, og det er det eneste, der returneres. Hvis der anmodes om flere poster ved hjælp af funktionen Filter – som tusindvis af poster kan kvalificere – returneres der kun én side med data ad gangen i rækkefølgen 100 poster pr. side. Brugeren skal gennemgå et galleri eller en datatabel for at se flere data, og de hentes automatisk til dem. Opretteren kan få mening med store datasæt uden at skulle tænke på at begrænse dataanmodninger til håndterbare mængder.

  • Kører kun efter behov: Vi har defineret en formel for egenskaben Text for etiketkontrolelementet. Efterhånden som den valgte variabel ændres, genberegnes LookUp automatisk, og etiketten opdateres. Opretteren behøvede ikke at skrive en OnChange-handler til Udvælgelse og behøvede ikke at huske, at denne etiket er afhængig af den. Dette er beskrivende programmering som beskrevet tidligere, og opretteren har angivet, hvad de ønskede at have i etiketten, ikke hvordan eller hvornår den skal hentes. Hvis denne etiket ikke er synlig, fordi den er på et skærmbillede, der ikke er synligt, eller fordi egenskaben Visible er falsk, kan vi udskyde denne beregning, indtil etiketten er synlig og effektivt fjerne den, hvis det sker sjældent.

  • Excel-syntaksoversættelse: Excel bruges af mange, hvoraf de fleste ved, at og-tegnet (&) bruges til sammenkædning af strenge. JavaScript bruger et plustegn (+), og på andre sprog bruges der en prik (.).

  • Viste navne og lokalisering: First Name bruges i Power Fx-formlen, mens nwind_firstname bruges i det tilsvarende JavaScript. I Microsoft Dataverse og SharePoint findes der et vist navn for kolonner og tabeller ud over et entydigt logisk navn. De viste navne er som i dette tilfælde ofte meget mere brugervenlige, men de har en anden vigtig kvalitet, da de kan oversættes. Hvis du har et flersproget team, kan de enkelte teammedlemmer se tabel- og feltnavne på deres eget sprog. I alle tilfælde sørger Power Fx for, at det korrekte logiske navn automatisk sendes til databasen.

Ingen kode

Du behøver ikke at læse og skrive Power Fx for at komme i gang med at udtrykke logik. Der er masser af tilpasninger og logik, der kan udtrykkes ved hjælp af simple parametre og brugergrænsefladegeneratorer. Disse kodefri værktøjer er udviklet til at læse og skrive Power Fx for at sikre, at der er masser af plads til, at en bruger kan komme videre, samtidig med at de viser, at værktøjer uden kode aldrig vil tilbyde alle udtryk for hele sproget. Selv når det bruges uden kodegenerator, er formellinjen forrest og i midten i Power Apps for at informere opretteren om, hvad der sker på deres vegne, så de kan begynde at lære Power Fx.

Lad os kigge på nogle eksempler. I Power Apps indeholder egenskabspanelet "ingen kode"-parametre og knapper til egenskaberne for kontrolelementerne. I praksis er de fleste egenskabsværdier statiske. Du kan bruge farvegeneratoren til at ændre baggrundsfarven i Gallery. Bemærk, at formellinjen afspejler denne ændring og opdaterer formlen til et andet RGBA-opkald. Du kan når som helst åbne formellinjen og gå et skridt videre – i dette eksempel ved at bruge ColorFade til at justere farven. Farveegenskaben vises stadig i egenskabspanelet, men ikonet fx vises, når du peger på det med musen, og du føres hen til formellinjen. Dette fungerer fuldt ud på to måder: Hvis du fjerner ColorFade-opkaldet, ændres farven til noget, som egenskabspanelet kan forstå, og du kan bruge det igen til at angive en farve.

Ingen kodefarve.

Her er et mere kompliceret eksempel. I galleriet vises en liste over medarbejdere fra Dataverse. Dataverse indeholder visninger over tabeldata. Vi kan vælge en af disse visninger, og formlen ændres, så den bruger funktionen Filter med dette viste navn. De to rullemenuer kan bruges til at kalde den korrekte tabel og visning uden at røre ved formellinjen. Men lad os sige, at du vil gå videre og tilføje en sortering. Det kan vi gøre i formellinjen, og egenskabspanelet viser igen et fx-ikon og sender ændringer til formellinjen. Og hvis vi igen forenkler formlen til noget, som egenskabspanelet kan læse og skrive, kan den igen bruges.

Ingen kodesortering.

Dette har været simple eksempler. Vi tror på, at Power Fx er et godt sprog til at beskrive interaktion uden kode. Det er kortfattet, effektivt og nem at fortolke og giver den effektivitet, der så ofte er brug for "uden faldgruber" op til lav kode.

Professionel kode

Oprettere med lav kode bygger undertiden ting, der kræver hjælp fra en ekspert, eller som er taget over af en professionel udvikler for at vedligeholde og forbedre det. Professionelle ved også, at udvikling med lave kode kan være nemmere, hurtigere og mindre omkostningskrævende end at bygge et professionelt værktøj. Ikke alle situationer kræver alle funktioner i Visual Studio.

Professionelle brugere ønsker at bruge professionelle værktøjer for at være mest produktive. Power Fx-formler kan gemmes i YAML-kildefiler, som er lette at redigere med Visual Studio Code, Visual Studio eller en anden teksteditor, og som gør det muligt for Power Fx at sætte under kildestyring med GitHub, Azure DevOps eller et hvilket som helst andet kildekodestyringssystem.

Visual Studio Code med professionel kode.

GitHub med professionel kode.

Power Fx understøtter formelbaserede komponenter til deling og genbrug. Vi har annonceret understøttelse af parametre til komponentegenskaber, hvilket gør det muligt at oprette rene brugerdefinerede funktioner, og der er flere forbedringer undervejs.

Power Fx kan også bruges til at samle komponenter og tjenester, der er udviklet af professionelle brugere. Standardconnectorer giver adgang til hundredvis af datakilder og webtjenester, brugerdefinerede connectorer gør det muligt for Power Fx at kommunikere med alle REST-webtjenester, og kodekomponenter gør det muligt for Power Fx at arbejde med fuldt brugerdefineret JavaScript på skærmen og på siden.

Designprincipper

Enkel

Power Fx er udviklet til at nå ud til den målgruppe, hvis medlemmer ikke er uddannet som udviklere. Når det er muligt, bruger vi den viden, som denne målgruppe allerede ved eller hurtigt kan lære. Antallet af begreber, der kræves for at opnå en vellykket implementering, holdes på et minimum.

Det er også godt for udviklere at være simple. For udviklermålgruppen bestræber vi os på at give et sprog med kun lidt koder, der reducerer den tid, det tager at oprette en løsning.

Excel-konsistens

Microsoft Power Fx-sprog låner meget fra Excel-formelsproget. Vi forsøger at drage fordel af Excel-viden og -erfaring fra de mange oprettere, der også bruger Excel. Typer, operatorer og funktionsemantik er så tæt på Excel som muligt.

Hvis Excel ikke har et svar, kigger vi på SQL. Efter Excel er SQL det næstmest anvendte beskrivende sprog, og det kan give vejledning i datahandlinger og indtastning af stærke datatyper, som Excel ikke kan.

Beskrivende

Opretteren beskriver, hvad de ønsker, at deres logik skal gøre, ikke nøjagtigt, hvordan og hvornår den skal gøre det. Det gør det muligt at optimere kompileringsfunktionen ved at udføre handlinger parallelt, udskyde arbejde, indtil det er nødvendigt, og hente cachelagrede data på forhånd samt genbruge dem.

I et Excel-regneark definerer forfatteren for eksempel relationer blandt celler, men Excel bestemmer, hvornår og i hvilken rækkefølge formler evalueres. På samme måde kan formler i en app beskrives som "genberegning" efter behov på baggrund af brugerhandlinger, databaseændringer eller timerhændelser.

Funktionsbaseret

Vi har rene funktioner, der ikke har sideeffekter. Det resulterer i logik, der er nemmere at forstå, og giver kompileringsfunktionen størst frihed til at optimere.

I modsætning til Excel arbejder apps i muteringstilstand – apps har for eksempel knapper, der gemmer ændringer af posten i en database. Nogle funktioner har derfor sideeffekter, selvom vi begrænser det så meget, som det er praktisk muligt.

Sammensætning

Hvor det er muligt, arbejder den funktionalitet, der er tilføjet, godt med eksisterende funktionalitet. Effektive funktioner kan dekompileret i mindre dele, så de lettere kan bruges uafhængigt.

Et gallerikontrolelement har f.eks. ikke separate Sort- og Filter-egenskaber. Funktionerne Sort og Filter samles i stedet i én enkelt Items-egenskab. Brugergrænsefladen til at udtrykke Sort- og Filter-funktionsmåden er lagdelt oven på egenskaben Items ved hjælp af en tovejseditor for denne egenskab.

Typesikker

De forskellige typer af værdier kendes på kompileringstidspunktet. Det gør det muligt at registrere fejl og detaljerede forslag tidligt under oprettelsen.

Polymorfiske typer understøttes, men før de kan bruges, skal typen fastgøres til en statisk type, og den pågældende type skal kendes på kompileringstidspunktet. Funktionerne IsType og AsType medfølger til test- og castingtyper.

Typeudledning

Typer udledes af deres brug, uden at de erklæres. Hvis du for eksempel angiver en variabel til et tal, oprettes variabeltypen som et tal.

Brug af konflikttype resulterer i kompileringsfejl.

Decimalseparatorer, der skelner mellem landestandarder

Nogle steder i verden bruger man en prik (.) som decimalseparator, mens andre bruger komma (,). Det er også det, Excel gør. Det sker normalt ikke i andre programmeringssprog, hvor der som regel bruges en kanonisk prik (.) som decimalseparator for alle brugere verden over. For at være så tilgængelig som muligt for oprettere på alle niveauer er det vigtigt, at 3,14 er et decimaltal for en person i Frankrig, der har brugt denne syntaks hele livet.

Valget af decimalseparator har en overlappende indflydelse på den listeseparator, der bruges til funktionskaldsargumenter, og operatoren til sammenkædning.

Decimalseparator på forfatterens sprog Power Fx-decimalseparator Power Fx-listeseparator Power Fx-sammenkædningsoperator
. (prik) . (prik) , (komma) ; (semikolon)
, (komma) , (komma) ; (semikolon) ;; (dobbelt semikolon)

Flere oplysninger: Global support

Ikke objektorienteret

Excel er ikke objektbaseret, og det er Power Fx heller ikke. På visse sprog er strengens længde for eksempel udtrykt som en egenskab for strengen, for eksempel "Hello World".length i JavaScript. I Excel og Power Fx er dette i stedet udtrykt i form af en funktion som Len( "Hello World" ).

Komponenter med egenskaber og metoder er objektorienterede, og Power Fx kan nemt arbejde sammen med dem. Men hvor det er muligt, foretrækker vi en funktionsbaseret tilgang.

Kan udvides

Oprettere kan oprette deres komponenter og funktioner ved hjælp af selve Power Fx. Udviklere kan oprette deres komponenter og funktioner ved at skrive JavaScript.

Udviklervenlig

Selvom oprettere er vores primære målgruppe, forsøger vi at være udviklervenlig, hvor det er muligt. Hvis den ikke er i konflikt med de designprincipper, der er beskrevet tidligere, gør vi tingene på en måde, som en udvikler vil sætte pris på. Excel har for eksemple ingen mulighed for at tilføje kommentarer, så vi bruger en C-lignende linje og indbyggede kommentarer.

Sprogudvikling

Det er både nødvendigt og vanskeligt at udvikle programmeringssprog. Alle er – med god grund – bekymret for, om en ændring, uanset hvor tilsigtet den er, kan bryde den eksisterende kode og kræve, at brugerne skal lære et nyt mønster. Power Fx tager bagudkompatibilitet seriøst, men vi ved også, at vi ikke altid gør det rigtigt første gang, og vi lærer løbende, hvad der er bedst som et community. Vi skal udvikle os, og Power Fx blev designet til understøttelse af sproglig udvikling fra starten.

Et stempel om sprogversion inkluderes i alle Power Fx-dokumenter, der gemmes. Hvis vi vil foretage en inkompatibel ændring, skriver vi det, vi kalder en "funktion til konvertering til bagudkompatibilitet", der automatisk omskriver formlen, næste gang den redigeres. Hvis ændringen er noget større, vi skal informere brugeren om, viser vi også en meddelelse med et link til dokumenterne. Ved hjælp af denne funktion kan vi stadig indlæse apps, der er bygget med forhåndsversionerne af Power Apps mange år tilbage, til trods for alle de ændringer, der er sket siden da.

Vi har f.eks. introduceret ShowError-funktionen til visning af et fejlbanner med en rød baggrund.

Vis fejl.

Brugerne elskede den, men de bad os også om at vise et succesbanner (grøn baggrund) eller et oplysende banner (blå baggrund). Så vi udviklede en mere generisk Notify-funktion, der tager endnu et argument for den type meddelelse. Vi kunne nøjes med at tilføje Notify og beholdt ShowError, som det var, men i stedet erstattede vi ShowError med Notify. Vi fjernede en funktion, der tidligere har været i produktion, og erstattede den med noget andet. Da der ville have været to måder at gøre samme ting på, ville det have skabt forvirring – især for nye brugere – og vigtigst af alt ville det have øget kompleksiteten. Der var ingen klager, alle var glade for ændringen og gik derefter videre til deres næste meddelelsesfunktion.

Sådan ser den samme app ud, når den indlæses i den nyeste version af Power Apps. Brugeren skulle ikke foretage sig noget for at få denne transformering til at ske. Det skete automatisk, da appen blev åbnet.

Funktionen Notify erstatter ShowError.

Med denne funktion kan Power Fx udvikle sig hurtigere og mere aggressivt end de fleste programmeringssprog.

Ingen foruddefineret værdi

Nogle sprog, for eksempel JavaScript, bruger begrebet ikke-defineret værdi for ikke-initialiserede variabler eller manglende egenskaber. Vi har undgået dette begreb for nemhedens skyld. Forekomster, der ikke er defineret på andre sprog, behandles enten som en fejl eller en tom værdi. Alle ikke-initialiserede variabler starter f.eks. med en tom værdi. Alle datatyper kan bruge den tomme værdi.

Datatyper
Operatorer og id'er
Tabeller
Variabler
Essentiel logik
Global support
Grammatik i udtryk
Grammatik i YAML-formler
Formler i lærredapps