Del via


Oversikt over Microsoft Power Fx

Power Fx er lavkodespråket som brukes på tvers av Microsoft Power Platform. Det er et deklarativt og funksjonelt programmeringsspråk med sterke datatyper til generell bruk.

Power Fx uttrykkes i menneskevennlig tekst. Det er et lavkodespråk som amatørutviklere kan arbeide med direkte i en Excel-liknende formellinje eller i et Visual Studio Code-tekstvindu. "Lite" i lite kode skyldes språkets konsise og enkle natur, noe som gjør vanlige programmeringsoppgaver enkle for amatørutviklere og utviklere. Det legger til rette for hele spekteret av utviklingsformer, fra kodeløs utvikling for de som aldri har programmert før, til prokodeutvikling for den erfarne eksperten, uten omfattende læring eller omskriving mellom dem, slik at ulike team kan samarbeide og spare tid og utgifter.

Merk

  • Microsoft Power Fx er det nye navnet på formelspråket for lerretsapper i Power Apps. Denne oversikten og tilknyttede artikler er et arbeid som pågår når vi trekker ut språket fra lerretsapper, integrerer det med andre Microsoft Power Platform-produkter og gjør det tilgjengelig som åpen kildekode. Hvis du vil vite mer om og oppleve språket i dag, kan du begynne med Kom i gang med formler i lerretsapper i Power Apps-dokumentasjonen og registrere deg for en prøveversjon av Power Apps.
  • I denne artikkelen refererer vi til amatørutviklere når vi beskriver en funksjon som kan brukes i begge ender av programmeringsferdighetsspekteret. Vi refererer til brukeren som utvikler hvis funksjonen er mer avansert og sannsynligvis utenfor kompetansen til en vanlig Excel-bruker.

Power Fx binder objekter sammen med deklarative, regnearklignende formler. Tenk for eksempel på egenskapen Synlig for en brukergrensesnittkontroll som en celle i et Excel-regneark, med en tilknyttet formel som beregner verdien basert på egenskapene til andre kontroller. Formellogikken beregner verdien automatisk på nytt, på samme måte som et regneark, noe som har innvirkning på synligheten for kontrollen.

Power Fx byr også på imperativ logikk ved behov. Regneark har vanligvis ikke knapper som kan sende endringer til en database, men apper gjør ofte det. Det samme uttrykksspråket brukes til både deklarativ og imperativ logikk.

Power Fx blir tilgjengelig som programvare med åpen kildekode. Det er for øyeblikket integrert i lerretsapper, og vi er i ferd med å trekke det ut fra Power Apps for å bruke det i andre Microsoft Power Platform-produkter og som åpen kildekode. Mer informasjon: Microsoft Power Fx på GitHub

Denne artikkelen gir en oversikt over språket og utformingsprinsippene. Hvis du vil vite mer om Power Fx, kan du se følgende artikler:

Tenk regneark

Hva om du kan bygge en app så enkelt som du bygger et regneark i Excel?

Hva om du kan dra nytte av eksisterende regnearkkunnskaper?

Dette var spørsmål som inspirerte til utviklingen av Power Apps og Power Fx. Mange hundre millioner personer oppretter regneark med Excel hver dag. La oss hjelpe dem å lage apper som er enkle og bruker Excel-konsepter som de allerede kjenner. Når vi trekker Power Fx ut av Power Apps, svarer vi på disse spørsmålene om bygging av automatisering eller en virtuell agent eller andre domener.

Alle programmeringsspråk, inkludert Power Fx, har uttrykk: en måte å representere en beregning på som omfatter tall, strenger eller andre datatyper. På de fleste språk uttrykker for eksempel mass * acceleration multiplikasjon av mass og acceleration. Resultatet av et uttrykk kan plasseres i en variabel, brukes som et argument i en prosedyre eller nestes i et større uttrykk.

Power Fx tar dette et trinn videre. Et uttrykk i seg selv sier ingenting om hva det beregner. Det er opp til amatørutvikleren å plassere det i en variabel eller sende det til en funksjon. I stedet for bare å skrive et uttrykk uten noen bestemt mening, skriver du i Power Fx en formel som binder uttrykket til en identifikator. Du skriver force = mass * acceleration som en formel for beregning av force. Siden mass eller acceleration endres, oppdatere force automatisk til en ny verdi. Uttrykket beskrev en beregning, en formel som gav beregningen et navn og brukte den som en betegnelse. Det er derfor vi kaller Power Fx et formelspråk.

Eksempelvis søker denne formelen fra Stakkoverflyt en streng i omvendt rekkefølge. I Excel ser det ut som følgende bilde.

Søk i omvendt rekkefølge

Skjermbilde av en formellinje i Excel med formelen: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Celle A1 inneholder teksten «Hei, verden! Det er flott å hilse på deg!" Celle A2 inneholder teksten "du!"

Power Fx fungerer med samme formel, der cellereferansene erstattes med kontrollegenskapsreferanser:

Power Fx-søk i omvendt rekkefølge.

Skjermbilde av en Power Fx-formellinje i Power Apps. Formelen er =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) I inndataboksen under formelen vises teksten «Hei, verden! Det er flott å hilse på deg!» vises, bokstav for bokstav. Samtidig vises bokstavene i det siste ordet i Etikett-boksen. Når hele teksten vises i Inndata-boksen, vises orden "du!" vises i Etikett-boksen.

Etter hvert som Input kontrollverdien endres, beregner Label kontrollen automatisk formelen på nytt og viser den nye verdien. Det finnes ikke OnChange-hendelsesbehandling her, som ville vært vanlig på andre språk.

Et annet eksempel som bruker en formel for Fill fargen på skjermen. Etter hvert som glidebryterne som styrer Rød, Grønn og Blå, endres, endres bakgrunnsfargen automatisk når den beregnes på nytt.

Glidebryter for farge.

Det finnes ingen OnChange-hendelser for glidebryterkontrollene, som er vanlig på andre språk. Det finnes ingen metode for eksplisitt å angi Fill-egenskapsverdien. Hvis fargen ikke fungerer som forventet, må du se på denne formelen for å finne ut hvorfor den ikke fungerer. Du trenger ikke søke gjennom appen for å finne en kodebit som angir egenskapen på et uventet tidspunkt. Det er ikke noe tidselement. De riktige formelverdiene vedlikeholdes alltid.

Når glidebryterne er satt til en mørk farge, endres etikettene for rød, grønn og blå til hvit for å kompensere. Dette gjøres via en enkel formel på Color-egenskapen for hver etikettkontroll.

Power Fx-glidebrytere for farger.

Det som er flott med dette, er at den er isolert fra det som skjer for fargen Fill-farge: dette er to helt forskjellige beregninger. Power Fx-logikk består vanligvis av mange mindre, uavhengige formler i stedet for store, monolittiske prosedyrer. Dette gjør dem lettere å forstå og gir mulighet for forbedringer uten å forstyrre eksisterende logikk.

Power Fx er et deklarativt språk, akkurat som Excel. Amatørutvikleren definerer ønsket virkemåte, men det er opp til systemet å avgjøre og optimalisere hvordan og når det skal oppnå det. For å gjøre dette praktisk blir det meste av arbeidet gjort med rene funksjoner uten sideeffekter, slik at Power Fx også er et funksjonelt språk (også som Excel).

Alltid aktive

En definerende side ved regneark er at de alltid er aktive, og endringer gjenspeiles umiddelbart. Det finnes ingen kompilerings- eller kjøremodus i et regneark. Når en formel endres eller en verdi angis, beregnes regnearket umiddelbart på nytt for å gjenspeile endringene. Eventuelle feil som registreres, vises umiddelbart og forstyrrer ikke resten av regnearket.

Dette er også implementert i Power Fx. En trinnvis kompilator brukes til å holde programmet kontinuerlig synkronisert med dataene programmet brukes på. Endringer overføres automatisk gjennom programmets graf og påvirker resultatene av avhengige beregninger, noe som kan øke egenskapene på kontroller, for eksempel farge eller posisjon. Den trinnvise kompilatoren gir også en rik redigeringsopplevelse for formel med IntelliSense, forslag, autofullføring og typekontroll.

I animasjonen nedenfor vises ordrenummeret i en etikettkontroll som er avhengig av glidebryterkontrollen, selv om det er to feil på etikettene nedenfor. Appen er direkte og interaktiv. Det første forsøket på å rette formelen ved å angi .InvalidName resulterer i en umiddelbar rød linje og en feil, men appen kjører fortsatt.

Alltid direkte.

Når .Employee angis, fører dette til at ruten Data legger til tabellen Ansatte, metadata for denne tabellen hentes, og forslag til kolonner tilbys umiddelbart. Vi flyttet bare en relasjon fra én tabell til en annen, og systemet gjorde de nødvendige justeringene i appens referanser. Det samme skjer når du legger til en .Customer.

Etter hver endring fortsetter glidebryteren med den siste verdien, og eventuelle variabler beholder verdien. Ordrenummeret har fortsatt å vises i den øverste etiketten som det skal. Appen har vært direkte, og behandler faktiske data hele tiden. Vi kan lagre den, gå bort, og andre kan åpne og bruke den akkurat som Excel. Det er ingen byggetrinn, ingen kompilering, det er bare et publiseringstrinn for å finne ut hvilken versjon av appen som er klar for brukere.

Lavkodebasert

Power Fx beskriver forretningslogikk i kortfattede, men likevel kraftige, formler. De fleste logikker kan reduseres til én enkelt linje, med mye ekspressivitet og kontroll for mer komplekse behov. Målet er å holde antallet konsepter en beslutningstaker må forstå på et minimum, ideelt sett ikke mer enn en Excel-bruker allerede vet.

Hvis du for eksempel vil slå opp fornavnet på en ansatt for en ordre, skriver du Power Fx-koden som vist i animasjonen nedenfor. I tillegg til Excel-konsepter er det eneste konseptet som brukes her, punktnotasjonen «.» for å drille ned i en datastruktur, i dette tilfellet .Employee.'First Name'. Animasjonen viser tilordningen mellom delene av Power Fx-formelen og konseptene som må kodes eksplisitt i et tilsvarende JavaScript.

Lavkodebasert JavaScript.

La oss se nærmere på alt det som Power Fx gjør for oss, og friheten det har til å optimalisere fordi formelen var deklarativ:

  • Asynkron: Alle dataoperasjoner i Power Fx er asynkrone. Amatørutvikleren trenger ikke å angi dette og heller ikke å synkronisere operasjoner etter at oppkallet er over. Amatørutvikleren trenger ikke å være klar over dette konseptet i det hele tatt og ikke å vite hva en forkortings- eller lambda-funksjon er.

  • Lokal og ekstern: Power Fx bruker samme syntaks og funksjoner for data som er lokale i minnet og kobler til en database eller tjeneste eksternt. Brukeren trenger ikke tenke på dette skillet. Power Fx delegerer så mye som mulig til serveren automatisk for å behandle filtre og sortering mer effektivt der.

  • Relasjonsdata: Ordrer og Kunder er to forskjellige tabeller, med en mange-til-én-relasjon. OData-spørringen krever en "$expand" med kunnskap om sekundærnøkkelen, på samme måte som en sammenslåing i SQL. Formelen har ingenting av dette. Databasenøkler er faktisk et annet konsept som amatørutvikleren ikke trenger å vite om. Produsenten kan bruke enkel punktnotasjon for å få tilgang til hele grafen over relasjoner fra oppføringer.

  • Projeksjon: Når du skriver en spørring, skriver select * from table mange utviklere, noe som bringer tilbake alle kolonnene med data. Power Fx analyserer alle kolonnene som brukes gjennom hele appen, også på tvers av formelavhengigheter. Projeksjon optimaliseres automatisk, og amatørutvikleren trenger heller ikke her å vite hva "projeksjon" betyr.

  • Hent bare det som trengs: I dette eksemplet innebærer funksjonen LookUp at bare én post skal hentes, og det er alt som returneres. Hvis flere oppføringer forespørres ved å bruke Filter-funksjonen, som tusener av oppføringer kan kvalifisere for, returneres bare én enkelt side med data om gangen, i en rekkefølge på 100 oppføringer per side. Brukeren må gå gjennom et galleri eller en datatabell for å se flere data, og det legges automatisk inn for dem. Amatørutvikleren kan få mening med store datasett uten å måtte tenke på å begrense dataforespørsler til håndterbare biter.

  • Kjører bare når det er nødvendig: Vi definerte en formel for Text egenskapen til etikettkontrollen. Etter hvert som den valgte variabelen endres, beregnes LookUp automatisk på nytt, og etiketten oppdateres. Amatørutvikleren hadde ikke behov for å skrive en OnChange-behandler for utvelgelse, og trengte ikke å huske at denne etiketten er avhengig av den. Dette er deklarativ programmering, som nevnt tidligere, og amatørutvikleren har angitt hva de vil ha i etiketten, ikke hvordan eller når den skal hentes. Hvis etiketten ikke vises fordi den er på en skjerm som ikke er synlig, eller hvis egenskapen Visible er usann, kan vi utsette denne beregningen til etiketten er synlig og effektivt eliminere den hvis det skjer sjeldent.

  • Excel-syntaksoversettelse: Excel brukes av mange brukere, hvorav de fleste vet at og-tegnet (&) brukes til strengsammenkjeding. JavaScript bruker et plusstegn (+), og andre språk bruker et punktum (.).

  • Visningsnavn og lokalisering: First Name brukes i formelen Power Fx mens nwind_firstname den brukes i JavaScript-ekvivalenten. I Microsoft Dataverse og SharePoint finnes det et visningsnavn for kolonner og tabeller i tillegg til et unikt logisk navn. Visningsnavnene er ofte mye mer brukervennlige, som i dette tilfellet, men de har en annen viktig kvalitet ved at de kan lokaliseres. Hvis du har et flerspråklig team, kan hvert teammedlem se tabell- og feltnavn på sitt eget språk. I alle brukstilfeller sørger Power Fx for at riktig logisk navn sendes til databasen automatisk.

Kodeløs

Du trenger ikke å skrive og lese Power Fx-kode for å begynne å uttrykke logikk. Det finnes mange tilpassinger og mye logikk som kan uttrykkes ved hjelp av enkle brytere og enkle grensesnittbyggere. Disse kodeløse verktøyene er bygd for å lese og skrive Power Fx-kode for å sørge for at andre har gode muligheter til å utvikle den videre, samtidig som det er klart at kodeløse verktøy aldri kan bli like uttrykksfulle som det fullstendige språket. Selv når formellinjen brukes med kodeløse byggere, spiller den en sentral rolle i Power Apps for å lære opp amatørutvikleren om hva som gjøres på deres vegne, slik at de kan begynne å lære Power Fx.

La oss ta en titt på noen eksempler. I Power Apps byr egenskapspanelet på kodeløse brytere og knapper for egenskapene til kontrollene. I praksis er de fleste egenskapsverdier statiske. Du kan bruke fargeverktøyet til å endre bakgrunnsfargen i Gallery. Legg merke til at formellinjen gjenspeiler denne endringen og oppdaterer formelen til et annet RGBA-oppkall. Du kan når som helst gå til formellinjen og ta dette et steg videre, i dette eksemplet ved å bruke ColorFade til å justere fargen. Fargeegenskapen vises fremdeles i egenskapspanelet, men et fx-ikon vises når du peker på det med musen og det føres til formellinjen. Dette fungerer helt på to måter: Når du fjerner ColorFade-anropet, returneres fargen til noe egenskapspanelet kan forstå, og du kan bruke det på nytt for å angi en farge.

Ingen kodefarge.

Her er et mer komplisert eksempel. Galleriet viser en liste over ansatte fra Dataverse. Dataverse inneholder visninger over tabelldata. Vi kan velge en av disse visningene, og formelen endres for å bruke Filter-funksjonen med dette visningsnavnet. De to rullegardinmenyene kan brukes til å ringe i riktig tabell og visning uten å berøre formellinjen. Men la oss si at du vil gå videre og legge til en sortering. Det kan vi gjøre på formellinjen, og egenskapspanelet viser igjen et fx-ikon og sender endringer til formellinjen. Og igjen, hvis vi forenkler formelen til noe egenskapspanelet kan lese og skrive, kan det igjen brukes.

Kodeløs sortering.

Dette har vært enkle eksempler. Vi tror at Power Fx er et utmerket språk til å beskrive kodeløse interaksjoner. Det er konsist, kraftig og lett å analysere, og gir den takhøyden som så ofte er nødvendig "uten fallgruver" opptil lav kode.

Pro-kode

Amatørutviklere med lite kode utvikler noen ganger ting som krever hjelp fra en ekspert, eller som blir overtatt av en profesjonell utvikler for å vedlikeholde og forbedre. Fagpersoner setter også pris på at utvikling av lav kode kan være enklere, raskere og rimeligere enn å bygge et profesjonelt verktøy. Ikke alle situasjoner krever full effekt av Visual Studio.

Profesjonelle ønsker å bruke profesjonelle verktøy for å være mest mulig produktive. Power Fx-formler kan lagres i YAML-kildefiler, som er enkle å redigere med Visual Studio Code, Visual Studio eller et annet tekstredigeringsprogram, og gjør at Power Fx kan settes under kildekontroll med GitHub, Azure DevOps eller et annet kildekodekontrollsystem.

Pro-kodebasert Visual Studio Code.

Prokodebasert GitHub.

Power Fx støtter formelbaserte komponenter til deling og gjenbruk. Vi kunngjorde støtte for parametere til komponentegenskaper, noe som gjør det mulig å opprette rene brukerdefinerte funksjoner med flere forbedringer på vei.

Power Fx er også utmerket til å sette sammen komponenter og tjenester bygd av profesjonelle. Bruksklare koblinger gir tilgang til hundrevis av datakilder og nettjenester, egendefinerte koblinger gjør at Power Fx kan kommunisere med enhver REST-nettjeneste, og kodekomponenter gjør at Power Fx kan samhandle med fullstendig egendefinert JavaScript på skjermen og siden.

Utformingsprinsipper

Enkelt

Power Fx har amatørutviklere som målgruppe, der medlemmene ikke har fått opplæring som utviklere. Der det er mulig, bruker vi kunnskapen som denne målgruppen allerede kjenner til eller kan hente raskt. Antallet konsepter som kreves for å lykkes, holdes på et minimum.

Å være enkel er også bra for utviklere. For utviklerens målgruppe har vi som mål å være et språk med lav kode som reduserer tiden som kreves for å bygge en løsning.

Excel-konsekvens

Microsoft Power Fx-språk låner i stor grad av Excel-formelspråket. Vi forsøker å utnytte Excel-kunnskap og -erfaring fra de mange amatørutviklerne som også bruker Excel. Typer, operatorer og funksjon-semantikk er så nær Excel som mulig.

Hvis Excel ikke har et svar, ser vi til SQL. Etter Excel er SQL det nest mest brukte deklarasjonsspråket og kan gi veiledning for dataoperasjoner og sterke datatyper som Excel ikke gjør.

Forklarende

Amatørutvikleren beskriver hva de vil at logikken skal gjøre, ikke nøyaktig hvordan eller når det skal gjøres. Dette gjør det mulig å optimere kompileringsfunksjonen ved å utføre handlinger parallelt, utsette arbeid helt til det er nødvendig, og forhåndshente og gjenbruke bufrede data.

I et Excel-regneark definerer for eksempel forfatteren relasjoner blant cellene, men Excel avgjør når og i hvilken rekkefølge formler evalueres. Formler i en app kan også anses som "gjenberegning" etter behov basert på brukerhandlinger, databaseendringer eller tidtakerhendelser.

Funksjonelt

Vi har rene funksjoner som ikke har sideeffekter. Dette resulterer i logikk som er lettere å forstå, og gir kompileringsfunksjonen størst frihet til å optimalisere.

I motsetning til Excel arbeider apper i muteringstilstand – apper har for eksempel knapper som lagrer endringer av oppføringen i en database. Noen funksjoner har derfor bieffekter, selv om vi begrenser dette så mye som praktisk.

Sammensetning

Når det er mulig, vil funksjonaliteten som er lagt til, fungere godt med eksisterende funksjonalitet. Kraftige funksjoner kan deles opp i mindre deler som lett kan brukes uavhengig.

En Galleri-kontroll har for eksempel ikke separate Sort- og Filter-egenskaper. Funksjonene Sort og Filter er i stedet satt sammen til én enkelt Items egenskap. Brukergrensesnittet for å uttrykke Sort og Filter-virkemåte er lagt på toppen av Items-egenskapen ved hjelp av et toveis redigeringsprogram for denne egenskapen.

Sterkt skrevet inn

Typene av alle verdiene er kjent under kompilering. Dette tillater tidlig registrering av feil og omfattende forslag under redigering.

Det er støtte for en polymorfiske typer, men før de kan brukes, må typen festes til en statisk type, og den typen må være kjent under kompilering. Funksjonene IsType og AsType er tilgjengelige for testing og utprøving av typer.

Typeutledning

Typene avledes av bruken uten at de deklareres. Hvis du for eksempel angir en variabel til et tall, fører dette til at variabelens type blir opprettet som et tall.

Motstridende typebruk fører til en kompileringstidsfeil.

Skilletegn for nasjonale skilletegn for desimaler

Enkelte områder i verden bruker punktum (.) som et desimalskilletegn, mens andre bruker et komma (,). Dette gjør Excel også. Dette gjøres vanligvis ikke på andre programmeringsspråk, som vanligvis bruker et kanonisk punktum (.) som desimalskilletegn for alle brukere over hele verden. For å være så imøtekommende som mulig for amatørutviklere på alle nivåer, er det viktig at 3,14 er et desimaltall for en person i Frankrike som har brukt denne syntaksen hele livet.

Valget av desimalskilletegn har en overlappende innvirkning på listeskilletegnet, som brukes for funksjonskallargumenter og sammenkjedingsoperatoren.

Desimalskilletegn på forfatterens språk Power Fx-desimalskilletegn Power Fx-listeskilletegn Power Fx-sammenkjedingsoperator
. (punktum) . (punktum) , (komma) ; (semikolon)
, (komma) , (komma) ; (semikolon) ;; (dobbelt semikolon)

Mer informasjon: Global kundestøtte

Ikke objektorientert

Excel er ikke objektorientert, og det er heller ikke Power Fx. På enkelte språk er for eksempel lengden av en streng uttrykt som en egenskap for strengen, for eksempel "Hello World".length i JavaScript. Excel og Power Fx uttrykker i stedet dette i form av en funksjon som Len( "Hello World" ).

Komponenter med egenskaper og metoder er objektorientert, og Power Fx fungerer enkelt med dem. Men der det er mulig, foretrekker vi en funksjonell tilnærming.

Utvidbart

Amatørutviklere kan lage egne komponenter og funksjoner med selve Power Fx. Utviklere kan lage komponentene og funksjonene sine ved å skrive JavaScript.

Utvikler-vennlig

Selv om utviklere er hovedmålet, prøver vi å være utvikler-vennlige når det er mulig. Hvis den ikke er i konflikt med utformingsprinsippene som ble beskrevet tidligere, gjør vi ting på en måte som en utvikler vil sette pris på. Excel har for eksempel ikke mulighet til å legge til kommentarer, så vi bruker C-liknende linje og innebygde kommentarer.

Språkutvikling

Det er både nødvendig og vanskelig å utvikle programmeringsspråk. Alle er urolige – med god grunn – for at en endring, uansett hvor velmenende den er, kan ødelegge eksisterende kode og kreve at brukerne lærer et nytt mønster. Power Fx tar bakoverkompatibilitet svært alvorlig, men vi tror også at vi ikke alltid gjør det riktig ved første forsøk, og at vi finner ut sammen hva som er best i fellesskap. Vi må utvikle oss, og Power Fx er utviklet for å støtte språkutvikling helt fra starten av.

Et språkversjonsstempel følger med hvert Power Fx-dokument som lagres. Hvis vi vil gjøre en inkompatibel endring, skriver vi det vi kaller en «funksjon for konvertering til bakoverkompatibilitet» som skriver om formelen automatisk neste gang den redigeres. Hvis endringen er noe større, som vi må informere brukeren om, vil vi også vise en melding med en kobling til dokumentene. Ved hjelp av denne funksjonen kan vi fremdeles laste apper som er bygd med forhåndsvisningsversjonene av Power Apps fra mange år tilbake, til tross for alle endringene som har skjedd siden da.

Vi innførte for eksempel funksjonen ShowError for å vise et feilbanner med rød bakgrunn.

Vis feil.

Brukere elsket det, men anmodet oss også om å vise et suksessbanner (grønn bakgrunn) eller et informasjonsbanner (blå bakgrunn). Så vi opprettet en mer generisk Notify-funksjon som tar enda et argument for den type varsling. Vi kunne bare lagt til Notify og beholdt ShowError slik det var, men i stedet erstattet vi ShowError med Notify. Vi fjernet en funksjon som tidligere hadde vært i produksjon, og erstattet den med noe annet. Siden det ville vært to måter å gjøre det samme på, ville dette skapt forvirring, spesielt for nye brukere, og viktigst av alt hadde det medført større kompleksitet. Ingen klaget og alle satte pris på endringen og gikk deretter videre til neste Varsle-funksjon.

Slik ser den samme appen ut når den lastes inn i den nyeste versjonen av Power Apps. Brukeren måtte ikke å gjøre noe for å få denne transformasjonen til å skje. Den skjedde automatisk da appen ble åpnet.

Varsle-funksjonen erstatter ShowError.

Med denne kan Power Fx utvikles raskere og mer aggressivt enn de fleste programmeringsspråk.

Ingen udefinert verdi

Enkelte språk, for eksempel JavaScript, bruker konseptet med en udefinert verdi for ikke-initialiserte variabler eller manglende egenskaper. For å gjøre det enkelt har vi unngått dette konseptet. Forekomster som ikke er definert på andre språk, behandles som en feil eller en tom verdi. Alle variabler som ikke er initialisert, starter for eksempel med en tom verdi. Alle datatyper kan ha verdien tom.

Datatyper
Operatører og identifikatorer
Tabeller
Variabler
Imperativ logikk
Global støtte
Uttrykk grammatikk
YAML-formel grammatikk
Formler i lerretsapper