Comparteix a través de


Informació general del Microsoft Power Fx

El Power Fx és el llenguatge de codi reduït que s'utilitzarà a tot el Microsoft Power Platform. És un llenguatge de programació de tipus general, de tipatge fort, declaratiu i funcional.

El Power Fx s'expressa amb text fàcil d'entendre. És un llenguatge de codi reduït amb què els responsables poden treballar directament en una barra de fórmules semblant a la de l'Excel o una finestra de text amb el Visual Studio Code. El codi "reduït" es deu al caràcter concís i senzill d'aquest llenguatge i fa que les tasques de programació habituals siguin fàcils tant per a creadors com per a desenvolupadors. Permet tot l'espectre del desenvolupament des del "codi zero" per als qui no han programat mai fins al "codi professional" per al professional experimentat, sense aprenentatge ni penya-segats de reescriptura entremig, cosa que permet que els equips diversos col·laborin i estalviïn temps i despeses.

Nota

  • Microsoft Power Fx és el nom nou del llenguatge de formules de les aplicacions de llenç al Power Apps. Aquesta descripció general i els articles associats són un treball en curs a mesura que extraiem el llenguatge de les aplicacions de llenç, l'integrem amb altres productes del Microsoft Power Platform i fem que estigui disponible com a codi obert. Per obtenir més informació i provar el llenguatge avui, comenceu amb Introducció a les fórmules de les aplicacions de llenç d la documentació del Power Apps i inicieu la sessió per obtenir una versió de prova gratuïta del Power Apps.
  • En aquest article, es fa referència als creadors quan descrivim una característica que es pot utilitzar en qualsevol dels extrems del ventall d'habilitats de programació. Ens referim a l'usuari com un desenvolupador si la característica és més avançada i és probable que quedi fora de l'abast del típic usuari de l'Excel.

El Power Fx vincula objectes amb fórmules declaratives semblants a les d'un full de càlcul. Per exemple, penseu en la propietat Visible d'un control d'IU com una cel·la en un full de càlcul de l'Excel, amb una fórmula associada que en calcula el valor segons les propietats d'altres controls. La lògica de fórmules torna a calcular el valor automàticament, de manera semblant a la manera com fa un full de càlcul, la qual cosa afecta la visibilitat del control.

Alhora, el Power Fx ofereix lògica imperativa quan cal. Els fulls de càlcul no solen tenir botons que poden enviar canvis a una base de dades, però les aplicacions sovint sí. El mateix llenguatge d'expressió s'utilitza per a la lògica declarativa i imperativa.

El Power Fx estarà disponible com a programari de codi obert. Actualment està integrat en les aplicacions de llenç i estem en el procés d'extreure'l del Power Apps i utilitzar-lo en altres productes del Microsoft Power Platform i com a codi obert. Més informació: Microsoft Power Fx a GitHub

En aquest article es proporciona informació general sobre el llenguatge i els seus principis de disseny. Per obtenir més informació sobre el Power Fx, vegeu els articles següents:

Penseu en un full de càlcul

I si poguéssiu crear una aplicació amb la mateixa facilitat que creeu un full de càlcul a l'Excel?

I si poguéssiu aprofitar els coneixements existents en fulls de càlcul?

Aquestes van ser les preguntes que van inspirar la creació del Power Apps i el Power Fx. Centenars de milions de persones creen fulls de càlcul amb l'Excel cada dia; fem que la creació d'aplicacions sigui fàcil i utilitzi els conceptes de l'Excel que ja coneixen. Si separem el Power Fx del Power Apps, respondrem a aquestes preguntes per crear automatització o un agent virtual o altres dominis.

Tots els llenguatges de programació, incloent-hi Power Fx, tenen expressions: una manera de representar un càlcul sobre números, cadenes de caràcters o altres tipus de dades. Per exemple, mass * acceleration expressa en la majoria de llengües la multiplicació de mass i acceleration. El resultat d'una expressió es pot col·locar en una variable, utilitzar-lo com a argument per a un procediment o imbricar-lo en una expressió més gran.

El Power Fx va un pas més enllà. Una expressió sola no diu res del que es calcula. Depèn del creador col·locar-la en una variable o passar-la a una funció. Al Power Fx, en lloc d'escriure una expressió que no tingui cap sentit específic, escriviu una fórmula que vincula l'expressió amb un identificador. Escriviu force = mass * acceleration com a fórmula per calcular force. Quan mass o acceleration canvia, force s'actualitza automàticament amb un valor nou. L'expressió descriu un càlcul, una fórmula ha donat al càlcul un nom i l'utilitza com a recepta. Per això, ens referim al Power Fx com un llenguatge de fórmules.

Per exemple, aquesta fórmula de Sobreeiximent de pila cerca una cadena en ordre invers. A l'Excel, s'assembla a la imatge següent.

Cerca inversa

Captura de pantalla d'una barra de fórmules a l'Excel amb la fórmula: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) La cel·la A1 conté el text "Hello, World! És un plaer conèixer-vos." La cel·la A2 conté el text "vos"

El Power Fx treballa amb aquesta mateixa fórmula, amb les referències de cel·la substituïdes per referències de propietat de control:

Power Fx Cerca inversa.

Captura de pantalla d'una barra de fórmules del Power Fx al Power Apps. La fórmula és =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) Al quadre d'entrada de sota la fórmula, el text "Hello, World! És un plaer conèixer-vos", apareix lletra per lletra. Al mateix temps, al quadre Etiqueta, apareixen les lletres de l'última paraula. Quan apareix el text complet al quadre d'entrada, la paraula "vos" apareix al quadre d'etiqueta.

Quan es canvia el valor de control Input, el control Label torna a calcular la fórmula automàticament i mostra el valor nou. Aquí no hi ha cap controlador d'incidències OnChange com seria habitual en altres llenguatges.

Un altre exemple que utilitza una fórmula per al color Fill de la pantalla. A partir dels controls lliscants que controlen els colors vermell, verd i blau, el color de fons canvia automàticament mentre es torna a calcular.

Control lliscant de color.

No hi ha incidències OnChange per als controls lliscants com seria habitual en altres llenguatges. No hi ha manera d'establir explícitament el valor Fill de la propietat. Si el color no està funcionant com està previst, heu de veure aquesta fórmula per entendre per què no funciona. No heu de cercar per l'aplicació per trobar un fragment de codi que defineixi la propietat en un moment inesperat; no hi ha cap element d'hora. Els valors de fórmula correctes sempre es mantenen.

Quan els controls lliscants es defineixen en un color gris, les etiquetes de Vermell, Verd i Blau canvien a blanc per compensar. Això es fa mitjançant una fórmula simple a la propietat Color per a cada control d'etiqueta.

Power Fx lliscadors de color.

Això és excel·lent perquè està aïllat del que passa per al color Fill: són dos càlculs completament diferents. En lloc de grans procediments monolítics, la lògica del Power Fx sol estar formada per moltes fórmules més petites que són independents. D'aquesta manera, són més fàcils d'entendre i s'hi poden fer millores sense alterar la lògica existent.

El Power Fx és un llenguatge declaratiu, igual que l'Excel. El creador defineix el comportament que vol, però és cosa del sistema determinar i optimitzar com i quan aconseguir-ho. Per fer que això sigui pràctic, la majoria de la feina es fa amb funcions pures sense efectes secundaris, cosa que fa que el Power Fx també sigui un llenguatge funcional, igual que l'Excel.

Sempre en viu

Un aspecte que defineix els fulls de càlcul és que sempre estan actius i els canvis es reflecteixen instantàniament. En un full de càlcul no hi ha cap mode de compilar o executar. Quan s'introdueix una fórmula o s'introdueix un valor, el full de càlcul es torna a calcular immediatament per reflectir els canvis. Els errors que es detecten es produeixen immediatament i no interfereixen en la resta del full de càlcul.

El mateix s'implementa amb el Power Fx. S'utilitza un compilador incremental per mantenir el programa contínuament sincronitzat amb les dades en què treballa. Els canvis es propaguen automàticament a través del gràfic del programa, cosa que afecta els resultats dels càlculs dependents, que poden generar propietats als controls com el color o la posició. El compilador incremental també proporciona una experiència enriquida d'edició de fórmules amb IntelliSense, suggeriments, autocompletar i comprovació del tipus.

A l'animació següent, el número de comanda es visualitza en un control d'etiqueta que depèn del control lliscant, tot i que hi ha dos errors a les etiquetes que hi ha a sota. L'aplicació és molt viva i interactiva. El primer intent de corregir la fórmula introduint .InvalidName resulta en una línia vermella immediata i la visualització d'un error, com hauria de ser, però l'aplicació es continua executant.

Sempre en directe.

Quan s'introdueix .Employee, això provoca que la subfinestra Data afegeixi la taula Empleats, es recuperen les metadades d'aquesta taula i s'ofereixen immediatament suggeriments per a les columnes. Ens trobem davant d'una relació d'una taula a una altra i el sistema ha fet els ajustaments necessaris a les referències de l'aplicació. El mateix passa quan s'afegeix un .Customer.

Després de cada canvi, el control lliscant continua amb el seu últim valor i les variables conserven el seu valor. Tota l'estona el número de comanda s'ha continuat visualitzant a l'etiqueta superior. L'aplicació ha estat en viu, processant dades reals, tot el temps. La podem desar i sortir-ne, i altres usuaris poden obrir-la i utilitzar-la igual que a l'Excel. No hi ha cap pas de creació, ni compilació, només hi ha un pas de publicació per determinar quina versió de l'aplicació està a punt per als usuaris.

Codi reduït

El Power Fx descriu la lògica empresarial en fórmules concises però potents. La majoria de la lògica es pot reduir a una sola línia amb molta expressivitat i control per a les necessitats més complexes. L'objectiu és que el nombre de conceptes que el creador ha d'entendre sigui el mínim, idealment no més que els que ja coneixeria un usuari de l'Excel.

Per exemple, per cercar el nom d'un empleat per a una comanda, escriviu el Power Fx tal com es mostra a l'animació següent. Més enllà dels conceptes de l'Excel, l'únic concepte afegit que s'utilitza aquí és el punt "." per desglossar una estructura de dades, en aquest cas .Employee.'First Name'. L'animació mostra l'assignació entre les parts de la fórmula Power Fx i els conceptes que s'han de codificar explícitament en el JavaScript equivalent.

JavaScript amb codi baix.

Analitzem a fons totes les coses que el Power Fx fa per nosaltres i la llibertat que té per optimitzar perquè la fórmula era declarativa:

  • Asíncron: totes les operacions de dades del Power Fx són asíncrones. El creador no ha d'especificar-ho, ni tampoc el responsable ha de sincronitzar les operacions un cop acabada la trucada. El creador no ha de conèixer aquest concepte, no cal que sàpiga què és una funció de promesa o lambda.

  • Locals i remots: el Power Fx utilitza la mateixa sintaxi i funcions per a les dades locals en memòria i remotes en una base de dades o un servei. L'usuari no ha de pensar en aquesta distinció. El Power Fx delega automàticament el que pot al servidor per processar-hi els filtres i les ordenacions de manera més eficient.

  • Dades relacionals: comandes i clients són dues taules diferents, amb una relació de diversos a un. La consulta OData necessita un "$expand" amb coneixements de la clau aliena, de manera semblant a un Join en SQL. La fórmula no té res d'això, de fet, les claus de base de dades són un altre concepte que el creador no cal que conegui. El creador pot utilitzar la notació de punts simple per accedir a tot el gràfic de relacions des d'un registre.

  • Projecció: quan s'escriu una consulta, molts desenvolupadors escriuen select * from table, la qual cosa torna totes les columnes de dades. El Power Fx analitza totes les columnes que s'utilitzen a tota l'aplicació, fins i tot a les dependències de fórmules. La projecció s'optimitza automàticament i, de nou, un creador no necessita saber què vol dir "projecció".

  • Recuperar només el que es necessita: en aquest exemple, la funció LookUp implica que només s'ha de recuperar un registre i això és tot el que es torna. Si se sol·liciten més registres mitjançant la funció Filter, per a la qual es poden retornar milers de registres, es retorna una sola pàgina de dades, en l'ordre de 100 registres per pàgina. L'usuari ha de fer-ho mitjançant una galeria o una taula de dades per veure més dades i se'ls enviarà automàticament. El creador pot raonar sobre els conjunts grans de dades sense haver de pensar en la limitació de les sol·licituds de dades en fragments administrables.

  • Només s'executa quan cal: definiu una fórmula per a la propietat Text del control d'etiquetes. Quan la variable seleccionada canvia, LookUp es torna a calcular automàticament i l'etiqueta s'actualitza. El creador no ha d'escriure un controlador OnChange per a Selection i no ha de recordar que aquesta etiqueta depèn d'ella. Això és programació declarativa, com s'ha explicat anteriorment: el creador ha especificat el que vol tenir a l'etiqueta, no com o quan s'hauria de recollir. Si aquesta etiqueta no està visible perquè es troba en una pantalla que no està visible o la seva propietat Visible és falsa, podem ajornar aquest càlcul fins que l'etiqueta estigui visible i s'elimina de manera eficaç si es produeix aquesta efectivitat.

  • Traducció de sintaxi de l'Excel: l'Excel l'utilitzen molts usuaris, la majoria dels quals saben que l'ampersand (&) s'utilitza per a la concatenació de cadenes. JavaScript utilitza un signe de més (+) i altres llenguatges utilitzen un punt ( .).

  • Noms de visualització i localització: s'utilitza First Name a la fórmula de Power Fx, mentre que nwind_firstname s'utilitza en l'equivalent de JavaScript. Al Microsoft Dataverse i al SharePoint, hi ha un nom de visualització per a les columnes i les taules a més d'un nom lògic únic. Els noms de visualització són sovint molt més fàcils d'utilitzar, com en aquest cas, però tenen una altra qualitat important: que es poden localitzar. Si teniu un equip multilingüe, cada membre de l'equip pot veure els noms de taula i de camp en la seva pròpia llengua. En tots els casos, Power Fx s'assegura que s'envia automàticament el nom lògic correcte a la base de dades.

Sense codi

No cal que llegiu i escriviu el Power Fx per iniciar la lògica d'expressió. Hi ha un munt de personalitzacions i lògica que es pot expressar amb commutadors i compiladors d'IU senzills. Aquestes eines sense codi s'han creat per llegir i escriure Power Fx i garantir que hi hagi molt de marge d'acció per millorar-lo, tenint en compte que les eines sense codi mai oferiran tota l'expressivitat d'un llenguatge complet. Fins i tot quan s'utilitza amb creadors sense codi, la barra de fórmules està situada al centre del Power Apps per mostrar al creador el que s'està fent per tal que pugui començar a aprendre Power Fx.

Vegem-ne alguns exemples: Al Power Apps, la subfinestra de propietats proporciona commutadors i botons "sense codi" per a les propietats dels controls. A la pràctica, la majoria dels valors de propietat són estàtics. Podeu utilitzar el creador de colors per canviar el color de fons de la Gallery. Observeu que la barra de fórmules reflecteix aquest canvi, actualitzant la fórmula a una crida RGBA diferent. En qualsevol moment podeu anar a la barra de fórmules i fer aquest pas més; en aquest exemple, mitjançant l'opció ColorFade per ajustar el color. La propietat de color encara apareix a la subfinestra de propietats, però apareix una icona fx en passar-hi el punter i se us dirigeix a la barra de fórmules. Això funciona de dues maneres: si suprimiu la crida ColorFade, la crida retorna el color a quelcom que la subfinestra de propietat pot entendre i el podeu tornar a utilitzar per definir un color.

Color sense codi.

Aquest és un exemple més complex. A la galeria es mostra una llista d'empleats del Dataverse. El Dataverse proporciona visualitzacions de les dades de la taula. Podem seleccionar una d'aquestes visualitzacions i la fórmula canvia per utilitzar la funció Filter amb aquest nom de visualització. Els dos menús desplegables es poden utilitzar per marcar a la taula i la visualització correctes sense tocar la barra de fórmules. Però suposem que voleu anar més enllà i afegir una ordenació. Podem fer-ho a la barra de fórmules i, novament, la subfinestra de propietats mostra una icona fx i dirigeix les modificacions a la barra de fórmules. I, de nou, si simplifiquem la fórmula a quelcom que la subfinestra de propietats pugui llegir i escriure, es pot tornar a utilitzar.

Ordena sense codi.

Aquests han estat exemples senzills. Creiem que Power Fx és un llenguatge excel·lent per descriure interaccions sense codi. És concís, potent i fàcil d'analitzar, i proporciona l'espai que sovint es necessita sense "penya-segats" per un codi reduït.

Codi professional

De vegades, els desenvolupadors de codi reduït creen coses que requereixen l'ajuda d'un expert o que les manté i millora un desenvolupador professional. Els professionals també aprecien que el desenvolupament de codi reduït pugui ser més fàcil, més ràpid i menys costós que crear una eina professional. No totes les situacions necessiten totes les capacitats del Visual Studio.

Els professionals volen utilitzar eines professionals per ser més productius. Les fórmules de Power Fx es poden emmagatzemar en fitxers d'origen YAML, que són fàcils d'editar amb el Visual Studio Code, el Visual Studio o qualsevol altre editor de text i permeten que Power Fx es col·loqui sota el control d'origen amb GitHub, Azure DevOps o qualsevol altre sistema de control de codi font.

Codi Visual Studio Pro.

Codi Pro GitHub.

El Power Fx admet components basats en fórmules per compartir i reutilitzar. Hem anunciat la compatibilitat dels paràmetres amb les propietats dels components, cosa que permet la creació pura de funcions definides per l'usuari i amb més millores en camí.

A més, el Power Fx és ideal per agrupar components i serveis creats per professionals. Els connectors de sèrie proporcionen accés a centenars de fonts de dades i serveis web; els connectors personalitzats permeten al Power Fx parlar amb qualsevol servei web de REST, i els components de codi permeten al Power Fx interactuar amb JavaScript totalment personalitzat a la pantalla i a la pàgina.

Principis del disseny

Simple

El Power Fx està dissenyat per adreçar-se al públic dels creadors, els membres del qual no s'han format com a desenvolupadors. Sempre que sigui possible, utilitzem coneixements que aquest públic ja té o que pot assimilar ràpidament. El nombre de conceptes necessaris per poder-lo utilitzar amb èxit es manté en quantitats mínimes.

El fet que sigui senzill també és bo per als desenvolupadors. Per al públic dels desenvolupadors, el nostre objectiu és un llenguatge de codi reduït que escurça el temps necessari per crear una solució.

Coherència amb l'Excel

El llenguatge del Microsoft Power Fx pren moltes coses del llenguatge de les fórmules de l'Excel. Volem aprofitar els coneixements i l'experiència en l'Excel de molts creadors que també utilitzen l'Excel. La semàntica dels tipus, operadors i funcions és al més semblant possible a la de l'Excel.

Si l'Excel no té resposta, mirem a l'SQL. Després de l'Excel, l'SQL és el següent llenguatge declaratiu que s'utilitza més habitualment i pot proporcionar orientacions sobre operacions de dades i el tipatge fort que l'Excel no ofereix.

Declaratiu

El creador descriu què vol que faci la lògica, no exactament com o quan s'ha de fer. Això permet al compilador optimitzar-ho executant operacions en paral·lel, ajornant els treballs fins que són necessaris i obtenir prèviament i reutilitzant dades de la memòria cau.

Per exemple, en un full de càlcul de l'Excel, l'autor defineix les relacions entre les cel·les, però l'Excel decideix quan i en quin ordre s'avaluen les fórmules. De la mateixa manera, les fórmules d'una aplicació es pot considerar que es "recalculen" segons calgui a partir de les accions de l'usuari, els canvis a la base de dades o les incidències dels temporitzadors.

Funcional

Afavorim les funcions pures que no tenen efectes secundaris. Això resulta en una lògica que és més fàcil d'entendre i proporciona al compilador la màxima llibertat per optimitzar.

A diferència de l'Excel, les aplicacions per la seva naturalesa muten l'estat; per exemple, les aplicacions tenen botons que desen els canvis al registre d'una base de dades. Per tant, algunes funcions tenen efectes secundaris, tot i que ho limitem al màxim.

Composició

Sempre que sigui possible, la funcionalitat que s'afegeix es composa bé amb la funcionalitat existent. Les funcions potents es poden descomposar en parts més petites que es poden utilitzar de manera independent amb més facilitat.

Per exemple, un control de Galeria no té propietats Sort i Filter independents. En lloc d'això, les funcions Sort i Filter es composen en una única propietat Items. La interfície d'usuari per expressar el comportament de Sort i Filter es troba en capes a la part superior de la propietat Items mitjançant un editor bidireccional per a aquesta propietat.

Tipus potents

Els tipus de tots els valors es coneixen en el moment de compilar. Això permet la detecció anticipada d'errors i els suggeriments enriquits durant la creació.

S'admeten tipus polimòfics, però per poder-se utilitzar, el seu tipus s'ha d'ancorar a un tipus estàtic i aquest tipus s'ha de conèixer en el moment de compilar. Les funcions IsType i AsType es proporcionen per a tipus de proves i tipus de conversió.

Inferència de tipus

Els tipus es deriven del seu ús sense ser declarats. Per exemple, si s'estableix una variable en un resultat numèric, el tipus de la variable que s'estableix serà un nombre.

L'ús de tipus en conflicte donen lloc a errors en temps de compilació.

Separadors decimals sensibles a la configuració regional

Algunes regions del món utilitzen un punt (.) com a separador decimal, mentre que altres utilitzen una coma (,). Això també passa amb l'Excel. Això no es fa normalment en altres llenguatges de programació, que normalment utilitzen un punt canònic (.) com a separador de decimals per a tots els usuaris d'arreu del món. Perquè s'ajusti a tots els creadors de tots els nivells, és important que 3,14 sigui un nombre decimal per a una persona de França que ha utilitzat aquesta sintaxi tota la seva vida.

La tria del separador decimal té un impacte en majúscules en el separador de llistes, que s'utilitza per als arguments de crida de funció, i l'operador d'encadenament.

Separador decimal de la llengua de l'autor Separador decimal del Power Fx Separador de llista del Power Fx Operador d'encadenament del Power Fx
. (punt) . (punt) , (coma) ; (punt i coma)
, (coma) , (coma) ; (punt i coma) ;; (punt i coma doble)

Més informació: Assistència tècnica global

No orientat a objectes

L'Excel no està orientat a objectes i Power Fx tampoc. Per exemple, en alguns llenguatges, la longitud d'una cadena s'expressa com una propietat de la cadena, com ara "Hello World".length a JavaScript. L'Excel i el Power Fx, en lloc d'això, ho expressem en termes d'una funció com Len( "Hello World" ).

Els components amb propietats i mètodes estan orientats a objectes i el Power Fx hi treballa fàcilment. Però sempre que sigui possible, preferim un mètode funcional.

Extensible

Els creadors poden crear els seus components i funcions mitjançant Power Fx. Els desenvolupadors poden crear els seus components i funcions escrivint JavaScript.

Fàcil d'utilitzar per als desenvolupadors

Tot i que els creadors són el nostre objectiu principal, intentem facilitar la feina als desenvolupadors sempre que sigui possible. Si no entren en conflicte amb els principis de disseny descrits anteriorment, fem les coses d'una manera que els creadors valoren. Per exemple, l'Excel no té capacitat per afegir comentaris, de manera que utilitzem línia de tipus C i comentaris en línia.

Evolució del llenguatge

L'evolució dels llenguatges de programació és necessària i difícil. Tothom, amb raó, està preocupat perquè un canvi, per més que sigui ben intencionat, pugui trencar el codi existent i obligar els usuaris a aprendre un patró nou. El Power Fx es pren seriosament la retrocompatibilitat, però també pensem que no sempre ho aconseguirem a la primera i aprendrem col·lectivament el que és millor per a la comunitat. Hem d'evolucionar i Power Fx ha dissenyat la compatibilitat amb l'evolució de llengües des del principi.

Cada document del Power Fx que s'ha desat inclou una marca de versió de llenguatge. Si voleu fer un canvi incompatible, escriurem allò que anomenem un "convertidor de retrocompatibilitat" que reescriu la fórmula automàticament la propera vegada que s'edita. Si el canvi és important i hem de formar l'usuari, també mostrarem un missatge amb un enllaç als documents. Amb aquesta facilitat, encara es poden carregar les aplicacions que s'han creat amb les versions anteriors del Power Apps de fa molts anys, malgrat tots els canvis que s'han produït des de llavors.

Per exemple, hem introduït la funció ShowError per mostrar un bàner d'error amb fons vermell.

Mostra l'error.

Als usuaris els ha encantat, però també ens han demanat una manera de mostrar un bàner d'èxit (fons verd) o un bàner d'informació (fons blau). Per tant, hem creat una funció més genèrica de Notify que pren un segon argument per al tipus de notificació. Podríem haver afegit simplement Notify i mantenir ShowError tal com estava, però en lloc d'això hem substituït ShowError per Notify. Hem eliminat una funció que prèviament havia estat en producció i l'hem substituïda per una altra cosa. Com que hi hauria dues maneres de fer el mateix, això hauria provocat confusió, especialment per als usuaris nous (i, el que és més important, hauria afegit complexitat). Ningú es va queixar, tothom va valorar el canvi, i després es va traslladar a la següent característica Notificar.

Aquest és l'aspecte de la mateixa aplicació quan es carrega a la versió més recent del Power Apps. L'usuari no va necessitar fer cap acció perquè es produís aquesta transformació, es va produir automàticament en obrir l'aplicació.

La funció Notifica substitueix ShowError.

Amb aquesta facilitat, Power Fx pot evolucionar de manera més ràpida i agressiva que la majoria de llenguatges de programació.

Cap valor sense definir

Alguns llenguatges, com ara JavaScript, utilitzen el concepte de valor no definit per a les variables no inicialitzades o les propietats que falten. Per millorar la simplicitat, s'ha evitat aquest concepte. Les instàncies que en altres llenguatges haurien estat no definides es tracten com un error o un valor en blanc. Per exemple, totes les variables no inicialitzades comencen amb un valor en blanc. Tots els tipus de dades poden tenir un valor en blanc.

Data Types
Operadors i identificadors
Taules
Variables
Lògica imperativa
Compatibilitat global
Gramàtica d'expressió
Gramàtica de fórmules YAML
Fórmules en aplicacions del llenç