Panoramica su Microsoft Power Fx

Power Fx è il linguaggio con uso limitato di codice usato in Microsoft Power Platform. È un linguaggio di programmazione per utilizzo generico, fortemente tipizzato, dichiarativo e funzionale.

Power Fx è espresso in un testo di facile utilizzo. È un linguaggio a uso limitato di codice con cui i creatori possono lavorare direttamente in una barra della formula simile a Excel o una finestra di testo di Visual Studio Code. L'uso limitato di codice è garantito dalla natura concisa e semplice del linguaggio, che semplifica le attività di programmazione comuni sia per i creatori che per gli sviluppatori. Consente l'intero spettro di sviluppo dal "senza codice" per coloro che non hanno mai programmato prima al "codice per professionisti" per i professionisti esperti, senza "scogli" di apprendimento o riscrittura nel mezzo, consentendo a diversi team di collaborare e risparmiare tempo e denaro.

Nota

  • Microsoft Power Fx è il nuovo nome per il linguaggio delle formule per le app canvas in Power Apps. Questa panoramica e gli articoli associati sono in fase di elaborazione poiché estraiamo il linguaggio dalle app canvas, lo integriamo con altri prodotti di Microsoft Power Platform e lo rendiamo disponibile come open source. Per saperne di più e sperimentare il linguaggio oggi, inizia con Iniziare a usare le formule nelle app canvas nella documentazione Power Apps e registrati per una versione di valutazione Power Apps gratuita.
  • In questo articolo, si fa riferimento ai creatori quando viene descritta una funzionalità che potrebbe essere utilizzata ad entrambe le estremità dello spettro delle abilità di programmazione. Si fa riferimento all'utente come sviluppatore se la funzionalità è più avanzata ed è probabilmente oltre l'ambito di un tipico utente di Excel.

Power Fx associa gli oggetti alle formule dichiarative simili a fogli di calcolo. Si prenda ad esempio la proprietà Visible di un controllo dell'interfaccia utente come cella in un foglio di lavoro di Excel, con una formula associata che ne calcola il valore in base alle proprietà di altri controlli. La logica della formula ricalcola automaticamente il valore, in modo simile a un foglio di calcolo, il che influisce sulla visibilità del controllo.

Anche, Power Fx offre una logica imperativa quando necessario. I fogli di lavoro in genere non hanno pulsanti che possono inviare modifiche a un database, mentre le app spesso li hanno. Lo stesso linguaggio di espressioni viene utilizzato sia per la logica dichiarativa che per quella imperativa.

Power Fx sarà reso disponibile come software open source. Attualmente è integrato nelle app canvas e lo stiamo estraendo da Power Apps per l'uso in altri prodotti Microsoft Power Platform e come open source. Altre informazioni: Microsoft Power Fx su GitHub

Questo articolo è una panoramica del linguaggio e dei suoi principi di progettazione. Per ulteriori informazioni su Power Fx, vedi gli articoli seguenti:

Pensiero del foglio di calcolo

Se potessi creare un'app con la stessa facilità con cui crei un foglio di lavoro in Excel?

E se potessi trarre vantaggio dalle tue conoscenze esistenti sui fogli di calcolo?

Queste sono le domande che hanno ispirato la creazione di Power Apps e Power Fx. Centinaia di milioni di persone creano fogli di lavoro con Excel ogni giorno; pertanto, vogliamo mettere a loro disposizione una creazione di app facile e che utilizza concetti di Excel che già conoscono. Estraendo Power Fx da Power Apps, risponderemo a queste domande per l'automazione della compilazione, un agente virtuale o altri domini.

Tutti i linguaggi di programmazione, incluso Power Fx, hanno le espressioni: un modo per rappresentare un calcolo di numeri, stringhe o altri tipi di dati. Ad esempio, mass * acceleration nella maggior parte dei linguaggi esprime la moltiplicazione di mass e acceleration. Il risultato di un'espressione può essere inserito in una variabile, utilizzato come argomento di una procedura o annidato in un'espressione più grande.

Power Fx fa un ulteriore passo avanti. Un'espressione di per sé non dice nulla su ciò che sta calcolando. Spetta al creatore posizionarla in una variabile o trasmetterla a una funzione. In Power Fx, invece di scrivere solo un'espressione che non ha un significato specifico, scrivi una formula che associa l'espressione a un identificatore. Scrivi force = mass * acceleration come formula per il calcolo di force. Quando mass o acceleration cambia, force viene aggiornato automaticamente a un nuovo valore. L'espressione descriveva un calcolo, una formula assegnava un nome a quel calcolo e lo usava come una ricetta. Per questo ci riferiamo a Power Fx come un linguaggio delle formule.

Ad esempio, questa formula di Stack Overflow cerca una stringa in ordine inverso. In Excel, ha l'aspetto dell'immagine seguente.

Ricerca inversa

Screenshot di una barra della formula in Excel con la formula: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) La cella A1 contiene il testo "Hello, World! È bello conoscerti" La cella A2 contiene il testo "tu!"

Power Fx funziona con questa stessa formula, con i riferimenti di cella sostituiti dai riferimenti alle proprietà di controllo:

Ricerca inversa Power Fx.

Screenshot della barra della formula Power Fx in Power Apps. La formula è =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) Nella casella di input sotto la formula, il testo "Hello, World! È bello conoscerti!" appare, lettera per lettera. Contemporaneamente, nella casella Etichetta, vengono visualizzate le lettere dell'ultima parola. Quando il testo completo viene visualizzato nella casella di input, la parola "tu!" appare nella casella Etichetta.

Quando il valore del comando Input viene modificato, il comando Label ricalcola automaticamente la formula e mostra il nuovo valore. Non ci sono gestori di eventi OnChange qui, come sarebbe il caso di altri linguaggi.

Un altro esempio che utilizza una formula per il colore dello schermo Fill. Man mano che i dispositivi di scorrimento che controllano il rosso, il verde e il blu vengono modificati, il colore di sfondo cambia automaticamente durante il ricalcolo.

Dispositivo di scorrimento del colore.

Non ci sono eventi OnChange per i comandi di scorrimento, come sarebbe il caso di altri linguaggi. Non c'è nessun modo per impostare esplicitamente il valore della proprietà Fill. Se il colore non funziona come previsto, è necessario esaminare questa formula per capire il motivo. Non è necessario cercare nell'app per trovare una parte di codice che imposta la proprietà in un momento imprevisto; non c'è elemento temporale. I valori della formula corretti vengono sempre mantenuti.

Poiché i cursori sono impostati su un colore scuro, le etichette per Rosso, Verde e Blu diventano bianche per compensare. Questo viene fatto tramite una semplice formula sulla proprietà Color per ogni controllo etichetta.

Cursori dei colori in Power Fx.

L'aspetto interessante è che questa azione è isolata da quanto accade per il colore Fill: si tratta di due calcoli completamente diversi. Invece di procedure monolitiche di grandi dimensioni, la logica di Power Fx è in genere composta da molte formule più piccole e indipendenti. Questo ne semplifica la comprensione e consente di apportare miglioramenti senza disturbare la logica esistente.

Power Fx è un linguaggio dichiarativo, proprio come lo è Excel. Il creatore definisce il comportamento richiesto, ma è compito del sistema determinare e ottimizzare come e quando realizzarlo. Per praticità, la maggior parte del lavoro viene svolta tramite funzioni che non producono effetti collaterali, rendendo Power Fx un linguaggio funzionale, esattamento come lo è Excel.

Sempre disponibile

Un aspetto determinante dei fogli di lavoro è che sono sempre disponibili e le modifiche si riflettono istantaneamente. Non esiste una modalità di compilazione o esecuzione in un foglio di lavoro. Quando una formula viene modificata o viene immesso un valore, il foglio di lavoro viene immediatamente ricalcolato per riflettere le modifiche. Eventuali errori rilevati vengono visualizzati immediatamente e non interferiscono con il resto del foglio di lavoro.

La stessa cosa è implementata con Power Fx. Un compilatore incrementale viene utilizzato per mantenere il programma continuamente sincronizzato con i dati su cui sta operando. Le modifiche vengono propagate automaticamente attraverso il grafo del programma, influenzando i risultati dei calcoli dipendenti, da cui potrebbero dipendere le proprietà su controlli come il colore o la posizione. Il compilatore incrementale fornisce anche una ricca esperienza di modifica delle formule con IntelliSense, suggerimenti, completamento automatico e controllo della digitazione.

Nell'animazione seguente, il numero dell'ordine viene visualizzato in un comando dell'etichetta dipendente dal comando del dispositivo di scorrimento, anche se sono presenti due errori sulle etichette sottostanti. L'app è molto disponibile e interattiva. Il primo tentativo di correggere la formula inserendo .InvalidName genera una riga rossa immediata e viene visualizzato un errore, come dovrebbe, ma l'app continua a funzionare.

Sempre disponibile.

Quando viene inserito .Employee, il riquadro Data aggiunge la tabella Impiegati, i metadati per questa tabella vengono recuperati e vengono offerti immediatamente suggerimenti per le colonne. Abbiamo appena affrontato una relazione tra tabelle e il sistema ha apportato le modifiche necessarie ai riferimenti dell'app. La stessa cosa accade quando si aggiunge .Customer.

Dopo ogni modifica, il dispositivo di scorrimento continua con il suo ultimo valore e tutte le variabili mantengono il loro valore. Per tutto il tempo, il numero di ordine ha continuato a essere visualizzato nell'etichetta superiore come dovrebbe. L'app è stata pubblicata, elaborando dati reali, per tutto il tempo. Possiamo salvarla, andarcene e altri possono aprirla e usarla proprio come Excel. Non esiste un passaggio di compilazione, ma solo un passaggio di pubblicazione per determinare quale versione dell'app è pronta per gli utenti.

Basso uso di codice

Power Fx descrive la logica aziendale in formule concise ma efficaci. La maggior parte della logica può essere ridotta a una singola riga, con molta espressività e controllo per esigenze più complesse. L'obiettivo è ridurre al minimo il numero di concetti che un produttore deve comprendere, idealmente non più di quanto un utente di Excel già saprebbe.

Ad esempio, per cercare il nome di un dipendente per un ordine, scrivi la formula Power Fx come mostrato nella seguente animazione. Oltre ai concetti di Excel, l'unico concetto aggiunto utilizzato qui è la notazione "." punto per il drill-down in una struttura di dati, in questo caso .Employee.'First Name'. L'animazione mostra il mapping tra le parti della formula Power Fx e i concetti che devono essere codificati esplicitamente nella formula JavaScript equivalente.

Basso uso di codice JavaScript.

Nelle sezioni successive verranno approfonditi tutti gli aspetti di Power Fx, sottolineando la notevole flessibilità di ottimizzazione che fornisce grazie alla formula dichiarativa:

  • Asincrono: Tutte le operazioni sui dati in Power Fx sono asincrone. Il creatore non ha bisogno di specificarlo e non deve sincronizzare le operazioni al termine della chiamata. Il creatore non deve essere a conoscenza di questo concetto e non ha bisogno di sapere cosa sia una promessa o una funzione lambda.

  • Ambiente locale e remoto: Power Fx usa la stessa sintassi e le stesse funzioni per i dati locali in memoria e per quelli remoti in un database o servizio. L'utente non ha bisogno di pensare a questa distinzione. Power Fx delega automaticamente tutto quel che può al server per elaborare i filtri e l'ordinamento in modo più efficiente.

  • Dati relazionali: Ordini e Clienti sono due tabelle diverse, con una relazione molti-a-uno. La query OData richiede un "$expand" con la conoscenza della chiave esterna, simile al comando Join in SQL. La formula non ha nulla di tutto questo; infatti, le chiavi del database sono un altro concetto che il creatore può non conoscere. L'autore può utilizzare una semplice notazione a punti per accedere all'intero grafico di relazioni da un record.

  • Proiezione: quando scrivono una query, molti sviluppatori scrivono select * from table, che restituisce tutte le colonne di dati. Power Fx esegue l'analisi di tutte le colonne usate nell'intera app, anche tra le dipendenze delle formule. La proiezione viene ottimizzata automaticamente e, ancora una volta, un creatore non ha bisogno di sapere cosa significa "proiezione".

  • Recupera solo ciò che è necessario: in questo esempio, la funzione LookUp implica che deve essere recuperato un solo record e questo è tutto ciò che viene restituito. Se vengono richiesti più record utilizzando la funzione Filter, per cui potrebbero qualificarsi migliaia di record, viene restituita solo una singola pagina di dati alla volta, nell'ordine di 100 record per pagina. L'utente deve scorrere una raccolta o una tabella di dati per visualizzare più dati, che verranno automaticamente inseriti. Il creatore può utilizzare grandi set di dati senza dover pensare a limitare le richieste di dati a blocchi gestibili.

  • Funziona solo quando necessario: abbiamo definito una formula per la proprietà Text del controllo etichetta. Man mano che la variabile selezionata viene modificata, LookUp viene ricalcolato automaticamente e l'etichetta viene aggiornata. Il creatore non deve scrivere un gestore OnChange per la selezione e neanche ricordarsi che questa etichetta dipende da essa. Questa è una programmazione dichiarativa, come discusso in precedenza: il creatore ha specificato il contenuto richiesto dell'etichetta, non come o quando doveva essere recuperato. Se questa etichetta non è visibile perché è su una schermata che non è visibile o la sua proprietà Visible è falsa, possiamo rimandare questo calcolo fino a quando l'etichetta non è visibile ed eliminarla efficacemente se ciò accade raramente.

  • Traduzione della sintassi in Excel: Excel è utilizzato da molti utenti, la maggior parte dei quali sa che la e commerciale (&) viene utilizzata per la concatenazione di stringhe. JavaScript utilizza un segno più (+) e altre lingue utilizzano un punto (.).

  • Nomi visualizzati e localizzazione: First Name è usato nella formula Power Fx mentre nwind_firstname viene utilizzato nell'equivalente JavaScript. In Microsoft Dataverse e SharePoint, è presente un nome visualizzato per colonne e tabelle oltre a un nome logico univoco. I nomi visualizzati sono spesso molto più intuitivi, come in questo caso, ma hanno un'altra importante qualità: possono essere localizzati. Se hai un team multilingue, ogni membro del team può vedere i nomi delle tabelle e dei campi nella propria lingua. Power Fx si assicura che, in qualsiasi caso, il nome logico corretto venga inviato automaticamente al database.

Nessun codice

Non devi leggere e scrivere formule Power Fx per iniziare a esprimere la logica. Esistono molte personalizzazioni e logiche che possono essere espresse tramite semplici interruttori e compilatori di interfacce utente. Questi strumenti senza codice sono stati creati per leggere e scrivere formule Power Fx per garantire che ci sia un sacco di margine per andare oltre, pur riconoscendo che gli strumenti senza codice non offriranno mai tutta l'espressività del linguaggio completo. Anche se utilizzata con builder senza codice, la barra della formula è in primo piano e al centro di Power Apps per indicare al creatore ciò che viene fatto per suo conto in modo che possa iniziare ad apprendere come usare Power Fx.

Esaminiamo alcuni esempi. In Power Apps, il pannello delle proprietà fornisce interruttori e manopole senza codice per le proprietà dei comandi. In pratica, la maggior parte dei valori delle proprietà sono statici. È possibile utilizzare il compilatore di colori per modificare il colore di sfondo di Gallery. Si noti che la barra della formula riflette questa modifica, aggiornando la formula a una chiamata RGBA diversa. In qualsiasi momento, puoi andare alla barra della formula e fare un ulteriore passo avanti, in questo esempio utilizzando ColorFade per regolare il colore. La proprietà del colore appare ancora nel pannello delle proprietà, ma viene visualizzata un'icona fx al passaggio del mouse e si viene indirizzati alla barra della formula. Questo funziona in due modi: la rimozione della chiamata ColorFade riporta il colore a qualcosa che il pannello delle proprietà può capire e puoi usarla di nuovo per impostare un colore.

Nessun codice colore.

Ecco un esempio più complicato. La raccolta mostra un elenco di dipendenti da Dataverse. Dataverse fornisce visualizzazioni sui dati della tabella. Possiamo selezionare una di queste visualizzazioni e la formula viene modificata per utilizzare la funzione Filter con questo nome di visualizzazione. I due menu a discesa possono essere utilizzati per comporre la tabella e la visualizzazione corrette senza toccare la barra della formula. Supponiamo però che tu voglia andare oltre e aggiungere un ordinamento. Possiamo farlo nella barra delle formule e il pannello delle proprietà mostra di nuovo un'icona fx e indirizza le modifiche alla barra delle formule. E ancora, se semplifichiamo la formula a qualcosa che il pannello delle proprietà può leggere e scrivere, può essere nuovamente utilizzata.

Ordinamento senza codice.

Questi sono stati semplici esempi. Noi crediamo che Power Fx sia un ottimo linguaggio per descrivere le interazioni senza codice. È conciso, potente e facile da analizzare e fornisce lo spazio che è spesso necessario "senza scogli" fino all'uso limitato di codice.

Codice per professionisti

I creatori con uso limitato di codice a volte creano elementi che richiedono l'aiuto di un esperto o vengono rilevati da uno sviluppatore professionista per gestirli e migliorarli. I professionisti apprezzano anche il fatto che lo sviluppo a basso uso di codice può essere più semplice, veloce e meno costoso rispetto alla creazione di uno strumento professionale. Non tutte le situazioni richiedono tutta la potenza di Visual Studio.

I professionisti desiderano utilizzare strumenti professionali per essere più produttivi. Le formule Power Fx possono essere memorizzate in File sorgente YAML, che sono facili da modificare con Visual Studio Code, Visual Studio o qualsiasi altro editor di testo e abilita il controllo del codice sorgente di Power Fx con GitHub, Azure DevOps o qualsiasi altro sistema di controllo del codice sorgente.

Codice per professionisti Visual Studio Code.

Codice Pro GitHub.

Power Fx supporta componenti basati su formule per la condivisione e il riutilizzo. Abbiamo annunciato il supporto per i parametri alle proprietà dei componenti, consentendo la creazione di funzioni definite dall'utente pure con ulteriori miglioramenti in arrivo.

Inoltre, Power Fx è ottimo per unire componenti e servizi creati da professionisti. I connettori predefiniti forniscono l'accesso a centinaia di origini dati e servizi Web, i connettori personalizzati consentono a Power Fx di parlare con qualsiasi servizio Web REST e i componenti del codice consentono a Power Fx di interagire con JavaScript completamente personalizzato sullo schermo e sulla pagina.

Principi di progettazione

Semplice

Power Fx è progettato per il gruppo di destinatari produttori, i cui membri non sono stati formati come sviluppatori. Laddove possibile, utilizziamo la consapevolezza che questi destinatari avrebbero già delle conoscenze o potrebbero apprendere rapidamente. Il numero di concetti necessari per avere successo è ridotto al minimo.

Essere semplici fa bene anche agli sviluppatori. Per gli sviluppatori, miriamo a un linguaggio con uso limitato di codice che tagli il tempo richiesto per creare una soluzione.

Coerenza con Excel

Il linguaggio Microsoft Power Fx prende molti elementi in prestito dal linguaggio delle formule di Excel. Cerchiamo di trarre vantaggio dalla conoscenza e dall'esperienza di Excel dei numerosi creatori che utilizzano anche Excel. I tipi, gli operatori e la semantica delle funzioni sono molto simili a Excel.

Se Excel non ha una risposta, ci rivolgiamo a SQL. Dopo Excel, SQL è il successivo linguaggio dichiarativo più comunemente utilizzato e può fornire indicazioni sulle operazioni sui dati e la tipizzazione forte che Excel non prevede.

Dichiarativa

Il creatore descrive cosa vuole che la logica faccia, non esattamente come o quando farlo. Ciò consente al compilatore di ottimizzare eseguendo operazioni in parallelo, rimandando il lavoro fino a quando non è necessario e recuperando e riutilizzando i dati memorizzati nella cache.

Ad esempio, in un foglio di lavoro Excel, l'autore definisce le relazioni tra le celle ma Excel decide quando e in quale ordine vengono valutate le formule. Allo stesso modo, le formule in un'app possono essere considerate "ricalcolate" come necessario in base alle azioni dell'utente, alle modifiche al database o agli eventi del timer.

Funzionale

Prediligiamo funzioni pure che non abbiano effetti collaterali. Ciò si traduce in una logica più facile da capire, offrendo al compilatore la massima libertà di ottimizzazione.

A differenza di Excel, le app per loro natura cambiano stato; ad esempio, le app dispongono di pulsanti che salvano le modifiche al record in un database. Alcune funzioni, quindi, hanno effetti collaterali, sebbene lo limitino per quanto pratico.

Composizione

Ove possibile, la funzionalità aggiunta si integra bene con la funzionalità esistente. Potenti funzioni possono essere scomposte in parti più piccole che possono essere utilizzate più facilmente in modo indipendente.

Ad esempio, un controllo Raccolta non dispone di proprietà Sort e Filter separate. Invece, le funzioni Sort e Filter sono composte insieme in un'unica singola proprietà Items. L'interfaccia utente per esprimere il comportamento Sort e Filter è sovrapposta alla proprietà Items utilizzando un editor bidirezionale per questa proprietà.

Fortemente tipizzato

I tipi di tutti i valori sono noti in fase di compilazione. Ciò consente il rilevamento precoce di errori e ricchi suggerimenti durante la creazione.

I tipi polimorfici sono supportati, ma prima di poter essere utilizzati, il tipo deve essere aggiunto a un tipo statico e quel tipo deve essere noto in fase di compilazione. Le funzioni IsType e AsType vengono fornite per i tipi di test e casting.

Tipo di inferenza

I tipi sono derivati dal loro utilizzo senza essere dichiarati. Ad esempio, l'impostazione di una variabile su un numero determina la definizione del tipo di variabile come numero.

L'utilizzo del tipo in conflitto genera un errore in fase di compilazione.

Separatori decimali sensibili alle impostazioni internazionali

In alcune aree del mondo viene usato un punto (.) come separatore decimale, mentre in altre una virgola (,). Questo è ciò che fa anche Excel. Al contrario, questo generalmente non viene fatto in altri linguaggi di programmazione, che di solito utilizzano un punto canonico (.) come separatore decimale per tutti gli utenti nel mondo. Per essere il più accessibile possibile per i creatori a tutti i livelli, è importante che 3,14 sia un numero decimale per una persona in Francia che ha utilizzato quella sintassi per tutta la vita.

La scelta del separatore decimale ha un impatto a cascata sul separatore di elenco, utilizzato per gli argomenti della chiamata delle funzioni e sull'operatore di concatenamento.

Separatore decimale della lingua dell'autore Separatore decimale Power Fx Separatore di elenco Power Fx Operatore di concatenamento Power Fx
. (punto) . (punto) , (virgola) ; (punto e virgola)
, (virgola) , (virgola) ; (punto e virgola) ;; (doppio punto e virgola)

Altre informazioni: Supporto globale

Non orientato agli oggetti

Excel non è orientato agli oggetti e neanche Power Fx. Ad esempio, in alcuni linguaggi, la lunghezza di una stringa è espressa come una proprietà della stringa, come "Hello World".length in JavaScript. Excel e Power Fx si esprimono invece con i termini di una funzione, ad esempio Len( "Hello World" ).

I componenti con proprietà e metodi sono orientati agli oggetti e Power Fx funziona facilmente con loro. Ma dove possibile preferiamo un approccio funzionale.

Estensibilità

I creatori possono creare i loro componenti e funzioni utilizzando Power Fx. Gli sviluppatori possono creare i propri componenti e funzioni scrivendo in JavaScript.

Per gli sviluppatori

Sebbene gli autori siano il nostro obiettivo principale, cerchiamo di essere favorevoli agli sviluppatori laddove possibile. Se non è in conflitto con i principi di progettazione descritti in precedenza, procediamo in un modo che uno sviluppatore apprezzerà. Ad esempio, Excel non ha nessuna funzionalità per aggiungere commenti, quindi utilizziamo commenti in linea e di tipo C.

Evoluzione del linguaggio

L'evoluzione dei linguaggi di programmazione è necessaria ma al contempo complicata. Tutti sono giustamente preoccupati che una modifica, per quanto ben intenzionata, possa interrompere il codice esistente e richiedere agli utenti di apprendere un nuovo modello. Power Fx prende sul serio la compatibilità con le versioni precedenti, ma crediamo anche fermamente che non sempre lo faremo bene la prima volta e impareremo collettivamente cosa è meglio come community. Dobbiamo evolvere, e Power Fx è progettato per supportare l'evoluzione del linguaggio sin dall'inizio.

Un indicatore della versione di linguaggio è incluso in ogni documento Power Fx salvato. Se vogliamo apportare una modifica incompatibile, scriveremo quello viene definito un "convertitore di compatibilità con le versioni precedenti" che riscrive la formula automaticamente la prossima volta che viene modificata. Se la modifica è rilevante e dobbiamo formare l'utente a riguardo, visualizzeremo anche un messaggio con un collegamento ai documenti. Utilizzando questa funzionalità, possiamo ancora caricare app che sono state create con le versioni di anteprima di Power Apps di molti anni fa, nonostante tutte le modifiche che sono state apportate da allora.

Ad esempio, abbiamo introdotto la funzione ShowError per visualizzare un banner di errore con uno sfondo rosso.

Mostra errore.

Gli utenti lo adoravano, ma ci hanno anche chiesto un modo per mostrare un banner di successo (sfondo verde) o un banner informativo (sfondo blu). Pertanto, abbiamo creato una funzione Notify più generica che accetta un secondo argomento per il tipo di notifica. Avremmo potuto semplicemente aggiungere Notify e mantenere ShowError com'era, ma invece abbiamo sostituito ShowError con Notify. Abbiamo rimosso una funzione che era stata precedentemente in produzione e l'abbiamo sostituita con un'altra. Poiché ci sarebbero stati due modi per ottenere lo stesso risultato, questo avrebbe causato confusione in particolare per i nuovi utenti e, soprattutto, avrebbe aggiunto complessità. Nessuno si è lamentato, tutti hanno apprezzato la modifica e sono passati alla successiva funzionalità di notifica.

Ecco come appare la stessa app quando viene caricata nell'ultima versione di Power Apps. Non è stata richiesta alcuna azione da parte dell'utente per realizzare questa trasformazione, che è avvenuta automaticamente all'apertura dell'app.

La funzione Notify sostituisce ShowError.

Con questa struttura, Power Fx può evolvere più velocemente e in modo più aggressivo rispetto alla maggior parte dei linguaggi di programmazione.

Nessun valore indefinito

Alcuni linguaggi, come JavaScript, utilizzano il concetto di un valore non definito per variabili non inizializzate o proprietà mancanti. Per semplicità, abbiamo evitato questo concetto. Le istanze che sarebbero indefinite in altri linguaggi vengono trattate come un errore o come un valore vuoto. Ad esempio, tutte le variabili non inizializzate iniziano con un valore vuoto. Tutti i tipi di dati possono assumere un valore vuoto.

Tipo di dati
Operatori e identificatori
Tabelle
Variabili
Logica imperativa
Supporto globale
Grammatica delle espressioni
Grammatica delle formule YAML
Formule nelle app canvas