Información general de Microsoft Power Fx

Power Fx es un lenguaje que utiliza poco código y que se usará en Microsoft Power Platform. Es un lenguaje de programación funcional, declarativo, de tipo fuerte y de uso general.

Power Fx se expresa en texto entendible para las personas. Es un lenguaje con poco código con el que los fabricantes pueden trabajar directamente en una barra de fórmulas similar a Excel o la ventana de texto de Visual Studio Code. El "bajo" en código bajo se debe a la naturaleza concisa y simple del lenguaje, lo que facilita las tareas de programación comunes tanto para los creadores como para los desarrolladores. Permite el espectro completo de desarrollo desde sin código para aquellos que nunca han programado antes hasta "código profesional" para el profesional experimentado, sin aprender o reescribir acantilados en el medio, lo que permite que diversos equipos colaboren y ahorren tiempo y gastos.

Nota

  • Microsoft Power Fx es el nuevo nombre del lenguaje de fórmulas para aplicaciones de lienzo en Power Apps. Esta descripción general y los artículos asociados son un trabajo en progreso a medida que extraemos el idioma de las aplicaciones de lienzo, lo integramos con otros productos Microsoft Power Platform y ponerlo a disposición como código abierto. Para obtener más información y experimentar el lenguaje hoy mismo, comience con Comenzar a utilizar fórmulas en aplicaciones de lienzo en la documentación de Power Apps y regístrate para una prueba gratuita de Power Apps.
  • En este artículo, nos referimos a creadores cuando describimos una característica que podría usarse en cualquier extremo del espectro de habilidades de programación. Nos referimos al usuario como desarrollador si la función es más avanzada y es probable que esté más allá del alcance de un usuario típico de Excel.

Power Fx combina objetos con fórmulas declarativas similares a hojas de cálculo. Por ejemplo, piense en la propiedad Visible de un control de IU como una celda en una hoja de cálculo de Excel, con una fórmula asociada que calcula su valor en función de las propiedades de otros controles. La lógica de la fórmula recalcula el valor automáticamente, de forma similar a como lo hace una hoja de cálculo, lo que afecta la visibilidad del control.

También, Power Fx ofrece lógica imperativa cuando es necesario. Las hojas de trabajo no suelen tener botones que puedan enviar cambios a una base de datos, pero las aplicaciones suelen hacerlo. El mismo lenguaje de expresión se usa tanto para la lógica declarativa como para la imperativa.

Power Fx estará disponible como software de código abierto. Actualmente está integrado en las aplicaciones de lienzo y estamos en el proceso de extraerlo de Power Apps para su uso en otros productos de Microsoft Power Platform y como código abierto. Más información: Microsoft Power Fx en GitHub

Este artículo es una descripción general del lenguaje y sus principios de diseño. Para obtener más información sobre Power Fx, consulte los siguientes artículos:

Piense en hoja de cálculo

¿Qué pasaría si pudiera crear una aplicación con la misma facilidad que crea una hoja de trabajo en Excel?

¿Qué pasaría si pudiera aprovechar sus conocimientos actuales sobre hojas de cálculo?

Estas fueron las preguntas que inspiraron la creación de Power Apps y Power Fx. Cientos de millones de personas crean hojas de trabajo con Excel todos los días; llevémosles la creación de aplicaciones que es fácil y utiliza conceptos de Excel que ya conocen. Al separar Power Fx de Power Apps, vamos a responder a estas preguntas para generar automatización o crear un agente virtual u otros dominios.

Todos los lenguajes de programación, incluido Power Fx, tienen expresiones : una forma de representar un cálculo con números, cadenas u otros tipos de datos. Por ejemplo, mass * acceleration en la mayoría de los idiomas expresa la multiplicación de mass y acceleration. El resultado de una expresión se puede colocar en una variable, usar como argumento para un procedimiento o anidar en una expresión más grande.

Power Fx evoluciona este sistema. Una expresión por sí sola no dice nada sobre lo que está calculando. Depende del creador colocarlo en una variable o pasarlo a una función. En Power Fx, en lugar de tan solo escribir una expresión que no tiene un significado específico, escribe una fórmula que vincula la expresión a un identificador. Usted escribe force = mass * acceleration como fórmula para calcular force. Cuando mass o acceleration cambia, force se actualiza automáticamente a un nuevo valor. La expresión describía un cálculo, una fórmula le daba un nombre a ese cálculo y lo usaba como receta. Por eso nos referimos a Power Fx como un lenguaje de fórmulas.

Por ejemplo, esta fórmula de Stack Overflow busca una cadena en orden inverso. En Excel, se parece a la siguiente imagen.

Búsqueda inversa

Captura de pantalla de una barra de fórmulas en Excel con la fórmula: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) La celda A1 contiene el texto" ¡Hola, mundo! It is great to meet you!" La celda A2 contiene el texto "you!"

Power Fx funciona con esta misma fórmula, con las referencias de celda sustituidas con referencias de propiedad de control:

Búsqueda inversa de Power Fx.

Captura de pantalla de una barra de fórmula de Power Fx en Power Apps. La fórmula es =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) En el cuadro de entrada debajo de la fórmula, el texto "¡Hola, mundo! It is great to meet you!" aparece, letra por letra. Al mismo tiempo, en el cuadro Etiqueta, aparecen las letras de la última palabra. Cuando aparece el texto completo en el cuadro de entrada, la palabra "you!" aparece en el cuadro Etiqueta.

A medida que el valor de control Input cambia el valor de control, el control Label recalcula automáticamente la fórmula y muestra el nuevo valor. Aquí no existen controladores de eventos OnChange, como sería común en otros idiomas.

Otro ejemplo que usa una fórmula para Fill el color de la pantalla. A medida que se cambian los controles deslizantes que controlan el rojo, el verde y el azul, el color de fondo cambia automáticamente a medida que se recalcula.

Control deslizante de color.

No existen eventos OnChange para los controles deslizantes, como sería común en otros idiomas. No hay forma de establecer explícitamente el valor de la propiedad Fill en absoluto. Si el color no funciona como se esperaba, debe observar esta fórmula para comprender por qué no funciona. No es necesario buscar en la aplicación para encontrar un fragmento de código que establezca la propiedad en un momento inesperado; no hay elemento de tiempo. Siempre se mantienen los valores correctos de la fórmula.

Como los controles deslizantes se establecen en un color oscuro, las etiquetas de Rojo, Verde y Azul cambian a blanco para compensar. Esto se hace a través de una fórmula simple en la propiedad Color para cada control de etiqueta.

Controles deslizantes de color de Power Fx.

Lo bueno de esto es que está aislado de lo que está sucediendo para el color Fill: estos son dos cálculos completamente diferentes. En lugar de grandes procedimientos monolíticos, la lógica de Power Fx suele consistir de muchas fórmulas más pequeñas que son independientes. Esto los hace más fáciles de entender y permite mejoras sin alterar la lógica existente.

Power Fx es un lenguaje declarativo, al igual que Excel. El fabricante define qué comportamiento quieren, pero depende del sistema determinar y optimizar cómo y cuándo lograrlo. Para que eso sea práctico, la mayor parte del trabajo se realiza a través de funciones puras sin efectos colaterales, lo que hace que Power Fx también sean lenguaje funcional (de nuevo, igual que Excel).

Siempre activo

Un aspecto definitorio de las hojas de trabajo es que siempre están activas y los cambios se reflejan instantáneamente. No hay modo de compilación o ejecución en una hoja de trabajo. Cuando se modifica una fórmula o se ingresa un valor, la hoja de trabajo se recalcula inmediatamente para reflejar los cambios. Cualquier error que se detecte se muestra de inmediato y no interfiere con el resto de la hoja de trabajo.

Lo mismo se implementa con Power Fx. Se utiliza un compilador incremental para mantener continuamente el programa sincronizado con los datos en los que está operando. Los cambios se propagan automáticamente a través del gráfico del programa, lo que afecta los resultados de los cálculos dependientes, que pueden impulsar las propiedades de los controles como el color o la posición. El compilador incremental también proporciona una rica experiencia de edición de fórmulas con IntelliSense, sugerencias, autocompletar y verificación de tipos.

En la siguiente animación, el número de pedido se muestra en un control de etiqueta que depende del control deslizante, aunque hay dos errores en las etiquetas debajo de él. La aplicación es muy viva e interactiva. El primer intento de arreglar la fórmula ingresando .InvalidName da como resultado una línea roja inmediata y se muestra un error, como debería, pero la aplicación sigue ejecutándose.

Siempre activo.

Cuando se ingresa .Employee, el panel Data agrega la tabla Empleados, se recuperan los metadatos de esta tabla y se ofrecen inmediatamente sugerencias para las columnas. Simplemente caminamos a través de una relación de una tabla a otra y el sistema realizó los ajustes necesarios en las referencias de la aplicación. Lo mismo sucede al agregar un .Customer.

Después de cada cambio, el control deslizante continúa con su último valor y las variables retienen su valor. En todo momento, el número de pedido se ha seguido mostrando en la etiqueta superior como debería. La aplicación ha estado activa, procesando datos reales, todo el tiempo. Podemos guardarla, marcharnos y otros pueden abrirla y usarla como Excel. No hay ningún paso de compilación, no hay compilación, solo hay un paso de publicación para determinar qué versión de la aplicación está lista para los usuarios.

Poco código

Power Fx describe la lógica de negocios en fórmulas concisas, pero muy eficaces. La mayor parte de la lógica se puede reducir a una sola línea, con mucha expresividad y control para necesidades más complejas. El objetivo es mantener al mínimo la cantidad de conceptos que un creador necesita comprender, idealmente no más de lo que un usuario de Excel ya sabría.

Por ejemplo, para buscar el nombre de pila de un empleado para un pedido, de escribir la fórmula de Power Fx como se muestra en la siguiente animación. Más allá de los conceptos de Excel, el único concepto agregado que se usa aquí es la notación del punto "." para profundizar en una estructura de datos, en este caso .Employee.'First Name'. La animación muestra la asignación entre las partes de la fórmula de Power Fx y los conceptos que deben codificarse explícitamente en el JavaScript equivalente.

JavaScript de poco código.

Veamos más a fondo todo lo que hace Power Fx por nosotros y la libertad que tiene para optimizar porque la fórmula era declarativa:

  • Asincrónico: todas las operaciones de datos en Power Fx son asincrónicas. El fabricante no necesita especificar esto, ni el fabricante necesita sincronizar las operaciones una vez finalizada la llamada. El creador no necesita ser consciente de este concepto en absoluto, no necesita saber qué es una promesa o función lambda.

  • Local y remoto: Power Fx usa la misma sintaxis y funciones para los datos que se encuentran en la memoria local y remota una base de datos o un servicio. El usuario no necesita pensar en esta distinción. Power Fx delega automáticamente lo que puede al servidor para procesar los filtros y clasificarlos de manera más eficiente.

  • Datos relacionales: Pedidos y Clientes son dos tablas diferentes, con una relación de varios a uno. La consulta OData requiere un "$expand" con conocimiento de la clave externa, similar a un Join en SQL. La fórmula no tiene nada de esto; de hecho, las claves de la base de datos son otro concepto que el fabricante no necesita conocer. El creador puede usar una simple notación de puntos para acceder a todo el gráfico de Relaciones desde un registro.

  • Proyección: al escribir una consulta, muchos desarrolladores escriben select * from table, que recupera todas las columnas de datos. Power Fx analiza todas las columnas que se usan en toda la aplicación, incluso en las dependencias de fórmulas. La proyección se optimiza automáticamente y, de nuevo, un creador no necesita saber qué significa "proyección".

  • Recupera solo lo necesario: en este ejemplo, la función LookUp implica que solo se debe recuperar un registro y eso es todo lo que se devuelve. Si se solicitan más registros mediante la función Filter (para la cual miles de registros podrían calificar) solo se devuelve una sola página de datos a la vez, del orden de 100 registros por página. El usuario debe hacer un gesto a través de una galería o tabla de datos para ver más datos, y se les traerá automáticamente. El fabricante puede razonar sobre grandes conjuntos de datos sin necesidad de pensar en limitar las solicitudes de datos a fragmentos manejables.

  • Funciona solo cuando es necesario: definimos una fórmula para la propiedad Text del control de etiqueta. A medida que cambia la variable seleccionada, LookUp se recalcula automáticamente y la etiqueta se actualiza. El fabricante no necesitaba escribir un controlador OnChange para Selection y no necesitaba recordar que esta etiqueta depende de él. Esta es la programación declarativa, como se discutió anteriormente, el creador especificó lo que querían tener en la etiqueta, no cómo o cuándo debería ser recuperado. Si esta etiqueta no es visible porque está en una pantalla que no es visible, o su propiedad Visible es falsa, podemos diferir este cálculo hasta que la etiqueta sea visible y eliminarlo de manera efectiva si eso rara vez ocurre.

  • Traducción de sintaxis de Excel: Excel es utilizado por muchos usuarios, la mayoría de los cuales sabe que el signo comercial (&) se utiliza para la concatenación de cadenas. JavaScript usa un signo más (+) y otros idiomas usan un punto (.).

  • Nombres para mostrar y localización: First Name se utiliza en la fórmula de Power Fx mientras que nwind_firstname se utiliza en el equivalente de JavaScript. En Microsoft Dataverse y SharePoint, hay un nombre para columnas y tablas además de un nombre lógico único. Los nombres para mostrar suelen ser mucho más fáciles de usar, como en este caso, pero tienen otra cualidad importante en el sentido de que se pueden localizar. Si tiene un equipo multilingüe, cada miembro del equipo puede ver los nombres de las tablas y los campos en su propio idioma. En todos los casos de uso, Power Fx garantiza que se envíe automáticamente el nombre lógico correcto a la base de datos.

Sin código

No tiene que leer y escribir Power Fx para empezar a expresar la lógica. Hay muchas personalizaciones y lógica que se pueden expresar a través de simples conmutadores y constructores de IU. Estas herramientas sin código se han creado para leer y escribir fórmulas Power Fx con el fin de asegurarse de que hay margen suficiente para que alguien lo evolucione, al tiempo que se reconoce que las herramientas sin código nunca ofrecerán toda la expresividad del lenguaje completo. Incluso cuando se usa con creadores sin código, la barra de fórmulas está en la parte frontal y central en Power Apps para indicar al creador lo que se está haciendo automáticamente y que pueda comenzar a aprender Power Fx.

Echemos un vistazo a algunos ejemplos. En Power Apps, el panel de propiedades proporciona interruptores y botones sin código para las propiedades de los controles. En la práctica, la mayoría de los valores de propiedad son estáticos. Puede utilizar el generador de colores para cambiar el color de fondo de Gallery. Observe que la barra de fórmulas refleja este cambio, actualizando la fórmula a una llamada RGBA. En cualquier momento, puede ir a la barra de fórmulas y dar un paso másen este ejemplo, usando ColorFade para ajustar el color. La propiedad de color todavía aparece en el panel de propiedades, pero aparece un icono fx al pasar el mouse y se le dirige a la barra de fórmulas. Esto funciona completamente de dos maneras: al quitar la llamada ColorFade, se devuelve el color a algo que el panel de propiedades pueda entender, y puede usarlo nuevamente para establecer un color.

Sin código de color.

Aquí hay un ejemplo más complicado. La galería muestra una lista de empleados de Dataverse. Dataverse proporciona vistas sobre los datos de la tabla. Podemos seleccionar una de estas vistas y la fórmula se cambia para usar la función Filter con este nombre de vista. Los dos menús desplegables se pueden usar para marcar en la tabla correcta y ver sin tocar la barra de fórmulas. Pero digamos que quiere ir más allá y agregar un tipo. Podemos hacer eso en la barra de fórmulas y el panel de propiedades nuevamente muestra un icono de fx y dirige las modificaciones a la barra de fórmulas. Y nuevamente, si simplificamos la fórmula a algo que el panel de propiedades pueda leer y escribir, nuevamente se puede usar.

Clasificación sin código.

Estos han sido ejemplos sencillos. Creemos que Power Fx es un gran lenguaje para describir interacciones sin código. Es conciso, potente y fácil de analizar, y proporciona el margen de maniobra que tan a menudo se necesita "sin obstáculos" hasta el código bajo.

Código profesional

Los creadores de bajo código a veces construyen cosas que requieren la ayuda de un experto o son asumidas por un desarrollador profesional para mantenerlas y mejorarlas. Los profesionales también aprecian que el desarrollo de código bajo puede ser más fácil, rápido y menos costoso que crear una herramienta profesional. No todas las situaciones requieren todo el poder de Visual Studio.

Los profesionales quieren utilizar herramientas profesionales para ser más productivos. Las fórmulas de Power Fx se pueden almacenar en archivos de origen YAML, que son fáciles de editar con Visual Studio Code, Visual Studio o cualquier otro editor de texto y habilitar Power Fx para estar a disposición del control de código fuente con GitHub, Azure DevOps, o cualquier otro sistema de control de código fuente.

Código Pro de Visual Studio Code.

Código profesional GitHub.

Power Fx admite componentes basados en fórmulas para compartir y reutilizar. Anunciamos la compatibilidad con los parámetros de las propiedades de los componentes, lo que permite la creación de funciones definidas por el usuario con más mejoras en camino.

También, Power Fx es excelente para combinar componentes y servicios creados por profesionales. Los conectores listos para usar brindan acceso a cientos de fuentes de datos y servicios web, los conectores personalizados permiten que Power Fx se comunique con cualquier servicio web REST, y los componentes del código permiten que Power Fx interactúe con JavaScript totalmente personalizado en la pantalla y la página.

Principios de diseño

Sencillo

Power Fx está diseñado para dirigirse a la audiencia de fabricantes, que no han sido formados como desarrolladores. Siempre que sea posible, utilizamos el conocimiento de que este público ya lo sabría o podría captar rápidamente. El número de conceptos necesarios para tener éxito se mantiene al mínimo.

Ser simple también es bueno para los desarrolladores. Para el público desarrollador, nuestro objetivo es ser un lenguaje de código bajo que reduzca el tiempo necesario para crear una solución.

Consistencia con Excel

El lenguaje Microsoft Power Fx toma prestado en gran medida del lenguaje de fórmulas de Excel. Buscamos aprovechar el conocimiento y la experiencia de Excel de los muchos fabricantes que también usan Excel. Los tipos, los operadores y la semántica de funciones están lo más cerca posible de Excel.

Si Excel no tiene una respuesta, luego miramos a SQL. Después de Excel, SQL es el siguiente lenguaje declarativo más utilizado y puede proporcionar orientación sobre operaciones de datos y mecanografía sólida que Excel no ofrece.

Declarativo

El fabricante describe qué quieren que su lógica funcione, no exactamente cómo o cuándo hacerlo. Esto permite que el compilador optimice al realizar operaciones en paralelo, diferir el trabajo hasta que sea necesario y precargar y reutilizar los datos almacenados en caché.

Por ejemplo, en una hoja de cálculo de Excel, el autor define el Relaciones entre las celdas, pero Excel decide cuándo y en qué orden se evalúan las fórmulas. De manera similar, las fórmulas de una aplicación se pueden considerar como "recalc" según sea necesario en función de las acciones del usuario, los cambios en la base de datos o los eventos del temporizador.

Funcional

Favorecemos las funciones puras que no tienen efectos secundarios. Esto da como resultado una lógica que es más fácil de entender y le da al compilador la mayor libertad para optimizar.

A diferencia de Excel, las aplicaciones, por su naturaleza, mutan el estado; por ejemplo, las aplicaciones tienen botones que guardan los cambios en el registro en una base de datos. Algunas funciones, por lo tanto, tienen efectos secundarios, aunque los limitamos tanto como sea práctico.

Composición

Siempre que sea posible, la funcionalidad que se agrega se integra bien con la funcionalidad existente. Las funciones potentes se pueden descomponer en partes más pequeñas que se pueden utilizar más fácilmente de forma independiente.

Por ejemplo, un control Galería no tiene propiedades Sort y Filter independientes. En su lugar, las funciones Sort y Filter se componen juntas en una sola propiedad Items. La interfaz de usuario para expresar el comportamiento de Sort y Filter se superpone a la propiedad Items mediante el uso de un editor bidireccional para esta propiedad.

Fuertemente tipado

Los tipos de todos los valores se conocen en el tiempo de compilación. Esto permite la detección temprana de errores y sugerencias enriquecidas durante la creación.

Se admiten los tipos polimórficos, pero antes de que se puedan usar, su tipo debe estar anclado a un tipo estático y ese tipo debe conocerse en el momento de la compilación. Las funciones IsType y AsType se proporcionan para pruebas y tipos de conversión.

Inferencia de tipo

Los tipos se derivan de su uso sin declararse. Por ejemplo, establecer una variable en un número da como resultado que el tipo de la variable se establezca como un número.

El uso de tipos conflictivos da como resultado un error en tiempo de compilación.

Separadores decimales sensibles a la configuración regional

Algunas regiones del mundo usan un punto (.) como un separador decimal, mientras que otros usan una coma (,). Esto es lo que también hace Excel. Por lo general, esto no se hace en otros lenguajes de programación, que generalmente usan un punto canónico (.) como separador decimal para todos los usuarios de todo el mundo. Para ser lo más accesible posible para los creadores de todos los niveles, es importante que 3,14 es un número decimal para una persona en Francia que ha usado esa sintaxis toda su vida.

La elección del separador decimal tiene un impacto en cascada en el separador de lista, utilizado para argumentos de llamada de función, y el operador de encadenamiento.

Separador decimal del idioma del autor Separador decimal de Power Fx Separador de lista de Power Fx Operador de encadenamiento de Power Fx
, (punto) , (punto) , (coma) ; (punto y coma)
, (coma) , (coma) ; (punto y coma) ;; (doble punto y coma)

Más información: Soporte global

No orientado a objetos

Excel no está orientado a objetos, y tampoco lo está Power Fx. Por ejemplo, en algunos lenguajes, la longitud de una cadena se expresa como una propiedad de la cadena, como "Hello World".length en JavaScript. Excel y Power Fx en su lugar, expresan esto en términos de una función como Len( "Hello World" ).

Los componentes con propiedades y métodos están orientados a objetos y Power Fx funciona fácilmente con ellos. Pero siempre que sea posible, preferimos un enfoque funcional.

Ampliable

Los fabricantes pueden crear sus componentes y funciones usando Power Fx. Los desarrolladores pueden crear sus componentes y funciones escribiendo JavaScript.

Apto para desarrolladores

Aunque los creadores son nuestro objetivo principal, intentamos ser amigables para los desarrolladores siempre que sea posible. Si no entra en conflicto con los principios de diseño descritos anteriormente, hacemos las cosas de una manera que el desarrollador apreciará. Por ejemplo, Excel no tiene capacidad para agregar comentarios, por lo que usamos comentarios en línea y en línea tipo C.

Evolución del lenguaje

La evolución de los lenguajes de programación es necesaria y complicada. A todos legítimamente les preocupa que un cambio, sin importar cuán bien intencionado sea, podría romper el código existente y requerir que los usuarios aprendan un nuevo patrón. Power Fx se toma muy en serio la compatibilidad con versiones anteriores, pero también creemos firmemente que no siempre lo haremos bien a la primera y aprenderemos colectivamente qué es lo mejor como comunidad. Debemos evolucionar y Power Fx se ha diseñado para respaldar la evolución del lenguaje desde el principio.

Se incluye un sello de versión de lenguaje con cada documento de Power Fx que se guarda. Si queremos hacer un cambio incompatible, escribiremos lo que llamamos un "convertidor de retrocompatibilidad" que reescribe la fórmula automáticamente la próxima vez que se edita. Si el cambio es algo importante sobre el que debemos educar al usuario, también mostraremos un mensaje con un enlace a los documentos. Con esta función, aún podemos cargar aplicaciones que se crearon con las versiones de vista previa de Power Apps desde hace muchos años, a pesar de todos los cambios que se han producido desde entonces.

Por ejemplo, presentamos la función ShowError para mostrar un banner de error con un fondo rojo.

Mostrar error.

A los usuarios les encantó, pero también nos pidieron una forma de mostrar un banner de éxito (fondo verde) o un banner informativo (fondo azul). Entonces, se nos ocurrió una función Notify más genérica que toma un segundo argumento para el tipo de notificación. Podríamos haber agregado Notify y guardado ShowError tal como estaba, pero, en lugar de eso, reemplazamos ShowError con Notify. Eliminamos una función que había estado previamente en producción y la reemplazamos por otra. Debido a que habría dos formas de hacer lo mismo, esto habría causado confusión (especialmente para nuevos usuarios) y, lo que es más importante, habría añadido complejidad. Nadie se quejó, todos, apreciaron el cambio y luego pasaron a la siguiente función Notificar.

Así es como se ve la misma aplicación cuando se carga en la última versión de Power Apps. El usuario no requirió ninguna acción para que esta transformación ocurriera, se produjo automáticamente cuando se abrió la aplicación.

La función de notificación reemplaza a ShowError.

Con esta facilidad, Power Fx puede evolucionar más rápido y de forma más drástica que la mayoría de los lenguajes de programación.

Sin valor indefinido

Algunos lenguajes, como JavaScript, utilizan el concepto de indefinido valor para variables no inicializadas o propiedades faltantes. Por simplicidad, hemos evitado este concepto. Las instancias que no estarían definidas en otros idiomas se tratan como un error o como un valor en blanco. Por ejemplo, todas las variables no inicializadas comienzan con un valor en blanco. Todos los tipos de datos pueden tomar el valor de blanco.

Tipos de datos
Operadores e identificadores
Tablas
Variables
Lógica imperativa
Compatibilidad global
Gramática de las expresiones
Gramática de fórmulas YAML
Fórmulas en aplicaciones de lienzo