Microsoft Power Fx – Übersicht

Power Fx ist die Low-Code-Sprache, die in Microsoft Power Platform verwendet wird. Es ist eine universelle, stark typisierte, deklarative und funktionale Programmiersprache.

Power Fx wird in lesbarem Text ausgedrückt. Es handelt es sich um eine Low Code-Sprache, mit der Entwickler direkt in einer Excel-ähnlichen Formelleiste oder in einem Visual Studio Code-Textfenster arbeiten können. Das „Low“ in „Low Code“ ist auf die prägnante und einfache Art der Sprache zurückzuführen, die sowohl Herstellern als auch Entwicklern gemeinsame Programmieraufgaben erleichtert. Es ermöglicht das gesamte Spektrum der Entwicklung von No Code für diejenigen, die noch nie zuvor programmiert haben, bis zu Pro Code für erfahrene Profis, ohne dazwischen „Cliffs“ zu lernen oder neu zu schreiben. So können verschiedene Teams zusammenarbeiten und Zeit und Kosten sparen.

Notiz

  • Microsoft Power Fx ist der neue Name für die Formelsprache für Canvas Apps in Power Apps. Diese Übersicht und die zugehörigen Artikel werden ständig weiterentwickelt, da wir die Sprache aus Canvas-Apps extrahieren, in andere Microsoft Power Platform-Produkte integrieren und als Open Source zur Verfügung stellen. Um mehr über die Sprache zu erfahren und sie noch heute zu erleben, beginnen Sie mit Einstieg in Formeln in Canvas Apps in der Power Apps Dokumentation und melden Sie sich für einen kostenlosen Power Apps Test an.
  • In diesem Artikel verwenden wir die Bezeichnung Ersteller, wenn wir eine Funktion beschreiben, die an beiden Enden des Spektrums der Programmierkenntnisse verwendet werden kann. Wir bezeichnen den Benutzer als Entwickler, wenn die Funktion weiter fortgeschritten ist und wahrscheinlich über den Bereich eines typischen Excel-Benutzers hinaus geht.

Power Fx bindet Objekte mit deklarativen, tabellenähnlichen Formeln zusammen. Denken Sie zum Beispiel an die Eigenschaft Sichtbar eines UI-Steuerelements als Zelle in einem Excel-Arbeitsblatt mit einer zugehörigen Formel, die den Wert basierend auf den Eigenschaften anderer Steuerelemente berechnet. Die Formellogik berechnet den Wert automatisch neu, ähnlich wie in einer Tabelle, was sich auf die Sichtbarkeit des Steuerelements auswirkt.

Außerdem bietet Power Fx bei Bedarf imperative Logik. Arbeitsblätter verfügen normalerweise nicht über Schaltflächen, mit denen Änderungen an eine Datenbank gesendet werden können, bei Apps ist dies jedoch häufig der Fall. Die gleiche Ausdruckssprache wird sowohl für die deklarative als auch für die imperative Logik verwendet.

Power Fx wird als Open-Source-Software zur Verfügung gestellt werden. Sie ist derzeit in Canvas Apps integriert, und wir sind dabei, sie aus Power Apps zu extrahieren, um sie in anderen Microsoft Power Platform-Produkten und als Open Source zu verwenden. Weitere Informationen finden Sie unter: Microsoft Power Fx auf GitHub

Dieser Artikel gibt einen Überblick über die Sprache und ihre Gestaltungsprinzipien. Weitere Informationen zu Power Fx finden Sie in folgenden Artikeln:

Think-Spreadsheet

Was wäre, wenn Sie eine App so einfach erstellen könnten wie ein Arbeitsblatt in Excel?

Was wäre, wenn Sie Ihr vorhandenes Tabellenkalkulationswissen nutzen könnten?

Dies waren die Fragen, die uns bei der Entwicklung von Power Apps und Power Fx inspiriert haben. Hunderte Millionen Menschen erstellen täglich Arbeitsblätter mit Excel. Lassen Sie uns ihnen eine App-Erstellung bieten, die einfach ist und Excel-Konzepte verwendet, die sie bereits kennen. Indem wir Power Fx aus Power Apps herauslösen, werden wir diese Fragen für die Gebäudeautomatisierung, für einen virtuellen Agenten oder für andere Domänen beantworten.

Alle Programmiersprachen, auch Power Fx, haben Ausdrücke: eine Möglichkeit, eine Berechnung über Zahlen, Strings oder andere Datentypen darzustellen. Zum Beispiel drückt mass * acceleration in den meisten Sprachen die Multiplikation von mass und acceleration aus. Das Ergebnis eines Ausdrucks kann in eine Variable eingefügt, als Argument für eine Prozedur verwendet oder in einem größeren Ausdruck verschachtelt werden.

Power Fx geht noch einen Schritt weiter. Ein Ausdruck an sich sagt nichts darüber aus, was er berechnet. Es bleibt dem Ersteller überlassen, ob er ihn in einer Variablen platziert oder an eine Funktion übergibt. In Power Fx schreiben Sie nicht nur einen Ausdruck, der keine spezifische Bedeutung hat, sondern eine Formel, die den Ausdruck an einen Bezeichner bindet. Sie schreiben force = mass * acceleration als Formel für die Berechnung von force. Wenn mass oder acceleration sich ändert, wird force automatisch in einen neuen Wert aktualisiert. Der Ausdruck beschrieb eine Berechnung, eine Formel gab dieser Berechnung einen Namen und verwendete sie als Beleg. Aus diesem Grund bezeichnen wir Power Fx als Formelsprache.

Diese Formel aus Stack Overflow sucht beispielsweise eine Zeichenfolge in umgekehrter Reihenfolge. In Excel sieht es wie das folgenden Bild aus.

Suche umkehren

Screenshot einer Formelleiste in Excel mit der Formel: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Zelle A1 enthält den Text „Hello, World! Schön, Sie kennenzulernen! Zelle A2 enthält den Text Sie!

Power Fx funktioniert mit der gleichen Formel, wobei die Zellverweise durch Verweise auf Steuerelemente ersetzt werden:

Power Fx Rückwärtssuche.

Screenshot einer Power Fx Formelleiste in Power Apps. Die Formel lautet =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) Im Eingabefeld unter der Formel wird der Text „Hello, World! Schön, Sie kennenzulernen! erscheint Buchstabe für Buchstabe. Gleichzeitig werden im Feld „Beschriftung“ die Buchstaben des letzten Wortes angezeigt. Wenn der vollständige Text im Eingabefeld angezeigt wird, wird das Wort Sie! im Beschriftungskästchen angezeigt.

Wenn der Input Steuerwert geändert wird, berechnet das Steuerelement Label die Formel automatisch neu und zeigt den neuen Wert an. Hier ist kein OnChange-Ereignishandler vorhanden, wie es in anderen Sprachen üblich wäre.

Ein weiteres Beispiel, das eine Formel für die Fill Farbe des Bildschirms verwendet wird. Wenn die Schieberegler für Rot, Grün und Blau geändert werden, ändert sich die Hintergrundfarbe automatisch, wenn sie neu berechnet wird.

Farbregler

Es gibt keine OnChange-Ereignisse für die Schieberegler, wie sie in anderen Sprachen üblich sind. Es gibt überhaupt keine Möglichkeit, den Eigenschaftswert Fill explizit festzulegen. Wenn die Farbe nicht wie erwartet funktioniert, müssen Sie sich diese eine Formel ansehen, um zu verstehen, warum sie nicht funktioniert. Sie müssen die App nicht durchsuchen, um einen Code zu finden, der die Eigenschaft zu einem unerwarteten Zeitpunkt festlegt. Es gibt kein Zeitelement. Die richtigen Formelwerte werden immer beibehalten.

Da die Schieberegler auf eine dunkle Farbe eingestellt sind, ändern sich die Beschriftungen für Rot, Grün und Blau zum Ausgleich in Weiß. Dies geschieht durch eine einfache Formel für die Eigenschaft Color für jedes Beschriftungssteuerelement.

Power Fx Farbschieberegler.

Das Tolle daran ist, dass es isoliert von dem ist, was bei der Farbe Fill passiert: dies sind zwei völlig unterschiedliche Berechnungen. Anstelle großer monolithischer Prozeduren besteht die Power Fx-Logik normalerweise aus vielen kleineren Formeln, die unabhängig sind. Dies erleichtert das Verständnis und ermöglicht Verbesserungen, ohne die vorhandene Logik zu stören.

Power Fx ist eine deklarative Sprache, genau wie Excel. Der Hersteller definiert das gewünschte Verhalten, aber bleibt jedoch dem System überlassen, zu bestimmen und zu optimieren, wie und wann dies erreicht werden soll. Um dies praktisch zu gestalten, werden die meisten Arbeiten mit reinen Funktionen ohne Nebeneffekten ausgeführt, sodass Power Fx auch eine funktionale Sprache ist (wie Excel).

Immer live

Ein entscheidender Aspekt von Arbeitsblättern ist, dass sie immer aktiv sind und Änderungen sofort angezeigt werden. In einem Arbeitsblatt weder einen Kompilierungs- noch einen Ausführungsmodus. Wenn eine Formel geändert oder ein Wert eingegeben wird, wird das Arbeitsblatt sofort neu berechnet, um die Änderungen widerzuspiegeln. Erkannte Fehler werden sofort angezeigt und beeinträchtigen den Rest des Arbeitsblatts nicht.

Das Gleiche wird mit Power Fx implementiert. Ein inkrementeller Compiler wird verwendet, um das Programm kontinuierlich mit den Daten zu synchronisieren, mit denen es arbeitet. Änderungen werden automatisch durch das Programmdiagramm übertragen und wirken sich auf die Ergebnisse abhängiger Berechnungen aus, die möglicherweise die Eigenschaften von Steuerelementen wie Farbe oder Position beeinflussen. Der inkrementelle Compiler bietet außerdem ein umfassendes Bearbeitungserlebnis für Formeln mit IntelliSense, Vorschlägen, automatischer Vervollständigung und Typprüfung.

In der folgenden Animation wird die Bestellnummer in einem Beschriftungssteuerelement angezeigt, das vom Schieberegler abhängig ist, obwohl die darunter liegenden Beschriftungen zwei Fehler enthalten. Die App ist sehr lebendig und interaktiv. Der erste Versuch, die Formel durch Eingabe von .InvalidName zu korrigieren, führt zu einer sofortigen roten Linie und einem Fehler, der angezeigt wird, wie es sollte, die App wird jedoch weiter ausgeführt.

Immer live

Die Eingabe von .Employee bewirkt, dass der Bereich Data die Mitarbeitertabelle hinzufügt, die Metadaten für diese Tabelle abgerufen und Vorschläge für Spalten werden sofort angeboten werden. Wir sind gerade über eine Beziehung von einer Tabelle zur anderen gegangen, und das System hat die erforderlichen Anpassungen an den Referenzen der App vorgenommen. Dasselbe passiert, wenn .Customer hinzugefügt wird.

Nach jeder Änderung setzt der Schieberegler seinen letzten Wert fort und alle Variablen behalten ihren Wert. Währenddessen wurde die Bestellnummer weiterhin wie gewünscht auf der oberen Beschriftung angezeigt. Die App war die ganze Zeit live und hat echte Daten verarbeitet. Wir können es speichern, verlassen und andere können es wie Excel öffnen und verwenden. Es gibt keinen Erstellungsschritt, keine Kompilierung, sondern lediglich einen Veröffentlichungsschritt, um zu bestimmen, welche Version der App für Benutzer bereit ist.

Niedriger Code

Power Fx beschreibt die Geschäftslogik in prägnanten, aber leistungsstarken Formeln. Die meiste Logik kann mit viel Ausdruckskraft und Kontrolle für komplexere Anforderungen auf eine einzige Zeile reduziert werden. Ziel ist es, die Anzahl der Konzepte, die ein Hersteller verstehen muss, auf ein Minimum zu beschränken, idealerweise nicht mehr, als ein Excel-Benutzer bereits wissen würde.

Um zum Beispiel den Vornamen eines Mitarbeiters für einen Auftrag nachzuschlagen, schreiben Sie die Power Fx wie in der folgenden Animation gezeigt. Neben Excel-Konzepten wird hier nur die Punktnotation „.“ hinzugefügt um einen Drilldown in eine Datenstruktur auszuführen, in diesem Fall .Employee.'First Name'. Diese Animation zeigt die Zuordnung zwischen den Teilen der Power Fx-Formel und den Konzepten, die im entsprechenden JavaScript explizit codiert werden müssen.

codearmes Javascript

Sehen wir uns all die Dinge genauer an, die Power Fx für uns macht, und die Freiheit, die es zum Optimieren bietet, da die Formel deklarativ war:

  • Asynchron: Alle Datenvorgänge in Power Fx sind asynchron. Der Hersteller muss dies weder angeben noch Vorgänge synchronisieren, nachdem der Aufruf beendet ist. Der Hersteller muss sich dieses Konzepts überhaupt nicht bewusst sein, er muss nicht wissen, was ein Versprechen oder eine Lambda-Funktion ist.

  • Lokal und remote: Power Fx verwendet dieselbe Syntax und dieselben Funktionen für Daten, die lokal im Speicher gespeichert sind und eine Datenbank oder einen Dienst remote verbinden. Der Benutzer muss nicht über diese Unterscheidung nachdenken. Power Fx delegiert automatisch, was es delegieren kann, an den Server, um Filter zu verarbeiten und dort effizienter zu sortieren.

  • Relationale Daten: Bestellungen und Kunden sind zwei verschiedene Tabellen mit einer Eins-zu-Eins-Beziehung. Die OData-Abfrage erfordert ein $ expand mit Kenntnis des Fremdschlüssels, ähnlich einem Beitreten in SQL. Die Formel hat nichts davon. Tatsächlich sind Datenbankschlüssel ein weiteres Konzept, über das der Hersteller nichts wissen muss. Der Hersteller kann mithilfe der einfachen Punktnotation auf das gesamte Diagramm von Beziehungen aus einem Datensatz zugreifen.

  • Projektion: Beim Schreiben einer Abfrage schreiben viele Entwickler select * from table, wodurch alle Datenspalten angezeigt werden. Power Fx analysiert alle Spalten, die in der gesamten App verwendet werden, auch über Formelabhängigkeiten hinweg. Die Projektion wird automatisch optimiert, und auch hier muss ein Hersteller nicht wissen, was „Projektion“ bedeutet.

  • Nur das abrufen, was benötigt wird: In diesem Beispiel impliziert die LookUp-Funktion, dass nur ein Datensatz abgerufen werden sollte, und das ist alles, was zurückgegeben wird. Wenn weitere Datensätze mit der Filter-Funktion abgerufen werden, für die sich Tausende von Datensätzen qualifizieren könnten, wird jeweils nur eine Datenseite in der Größenordnung von 100 Datensätzen pro Seite zurückgegeben. Der Benutzer muss durch eine Galerie oder Datentabelle gestikulieren, um weitere Daten anzuzeigen, und diese werden automatisch für ihn eingeblendet. Der Hersteller kann große Datenmengen erwägen, ohne darüber nachdenken zu müssen, Datenanforderungen auf verwaltbare Blöcke zu beschränken.

  • Wird nur bei Bedarf ausgeführt: Wir haben eine Formel für die Text Eigenschaft des Beschriftungssteuerelements definiert. Wenn sich die ausgewählte Variable ändert, wird LookUp automatisch neu berechnet und die Beschriftung aktualisiert. Der Hersteller musste keinen OnChange-Handler für die Auswahl schreiben und sich nicht daran erinnern, dass diese Beschriftung davon abhängig ist. Dies ist eine deklarative Programmierung, wie zuvor bereits erwähnt. Der Hersteller hat angegeben, was in der Beschriftung enthalten sein soll und nicht, wie oder wann sie abgerufen werden soll. Wenn diese Beschriftung nicht sichtbar ist, weil sie sich auf einem nicht sichtbaren Bildschirm befindet oder ihre Visible-Eigenschaft falsch ist, können wir diese Berechnung verschieben, bis die Beschriftung sichtbar ist, und sie effektiv entfernen, wenn dies selten vorkommt.

  • Excel-Syntaxübersetzung: Excel wird von vielen Benutzenden verwendet, von denen die meisten wissen, dass das Und-Zeichen (&) für die Zeichenfolgenverkettung verwendet wird. JavaScript verwendet ein Pluszeichen (+) und andere Sprachen verwenden einen Punkt (.).

  • Anzeige von Namen und Lokalisierung: First Name wird in der Power Fx-Formel verwendet, während nwind_firstname in der JavaScript-Entsprechung verwendet wird. In Microsoft Dataverse und SharePoint ist zusätzlich zu einem eindeutigen logischen Namen ein Anzeigename für Spalten und Tabellen vorhanden. Die Anzeigenamen sind oft viel benutzerfreundlicher, wie in diesem Fall, aber sie haben eine weitere wichtige Eigenschaft, nämlich dass sie lokalisiert werden können. Wenn Sie ein mehrsprachiges Team haben, kann jedes Teammitglied Tabellen- und Feldnamen in seiner eigenen Sprache anzeigen. In allen Fällen stellt Power Fx sicher, dass der richtige logische Name automatisch an die Datenbank gesendet wird.

Kein Code

Sie müssen nicht erst Power Fx lesen und schreiben, um Logik auszudrücken. Es gibt viele Anpassungen und Logik, die durch einfache Schalter und UI-Builder ausgedrückt werden können. Diese No-Code-Tools wurden so entwickelt, dass sie Power Fx lesen und schreiben können, um sicherzustellen, dass es genügend Spielraum gibt, um weiterzukommen. Dabei ist klar, dass No-Code-Tools niemals die gesamte Ausdruckskraft einer vollständigen Sprache bieten werden. Selbst bei der Verwendung von No-Code-Buildern steht die Formelleiste in Power Apps im Vordergrund, um den Ersteller darüber aufzuklären, was in seinem Namen getan wird, damit er mit dem Erlernen von Power Fx beginnen kann.

Betrachten wir nun einige Beispiele. In Power Apps stellt der Eigenschaftenbereich codearme Schalter und Regler für die Eigenschaften der Steuerelemente bereit. In der Praxis sind die meisten Eigenschaftswerte statisch. Mit dem Farb-Generator können Sie die Hintergrundfarbe der Gallery ändern. Beachten Sie, dass die Formelleiste diese Änderung widerspiegelt und die Formel in einen anderen RGBA-Aufruf aktualisiert. Sie können jederzeit zur Formelleiste wechseln und noch einen Schritt weiter gehen – in diesem Beispiel mit ColorFade, um die Farbe anzupassen. Die Farbeigenschaft wird weiterhin im Eigenschaftenfenster angezeigt, wenn mit der Maus darauf gezeigt wird, wird jedoch ein fx-Symbol eingeblendet, und Sie werden zur Formelleiste weitergeleitet. Dies funktioniert auf zwei Arten: Durch das Entfernen des ColorFade-Aufrufs wird die Farbe auf etwas zurück, das das Eigenschaftenfenster verstehen kann, und Sie können erneut eine Farbe damit festlegen.

Farbe ohne Code

Hier ist ein komplizierteres Beispiel. Die Galerie zeigt eine Liste der Mitarbeiter von Dataverse. Dataverse bietet Ansichten über Tabellendaten. Wir können eine dieser Ansichten auswählen, und die Formel wird geändert, um die Filter-Funktion mit diesem Ansichtsnamen zu verwenden. Über die beiden Dropdown-Menüs können Sie die richtige Tabelle und Ansicht auswählen, ohne die Formelleiste zu berühren. Angenommen, Sie möchten noch weiter gehen und eine Sortierung hinzufügen. Wir können dies in der Formelleiste tun und das Eigenschaftenfenster zeigt wieder ein FX-Symbol und leitet Änderungen an der Formelleiste an. Wenn wir die Formel auf etwas vereinfachen, das das Eigenschaftenfenster lesen und schreiben kann, kann sie erneut verwendet werden.

Sortierung ohne Code

Dies waren einfache Beispiele. Wir glauben, dass Power Fx eine großartige Sprache für die Beschreibung von no-code Interaktionen ist. Sie ist prägnant, leistungsstark und einfach zu analysieren und bietet den so häufig benötigten Spielraum „ohne Klippen“ bis hin zu codearm.

Pro Code

Low Code-Hersteller entwickeln manchmal Dinge, die die Hilfe eines Experten erfordern oder von einem professionellen Entwickler übernommen werden, um sie zu warten und zu verbessern. Fachleute wissen es auch zu schätzen, dass die Entwicklung von Niedrig Codes einfacher, schneller und kostengünstiger sein kann als die Erstellung eines professionellen Tools. Nicht jede Situation erfordert die volle Kraft von Visual Studio.

Profis möchten professionelle Tools verwenden, um am Produktivsten zu sein. Power Fx Formeln können in YAML-Quelldateien gespeichert werden, die mit Visual Studio Code, Visual Studio oder jedem anderen Texteditor leicht zu bearbeiten sind und es ermöglichen, Power Fx mit GitHub, Azure DevOps oder jedem anderen Steuerelement für Versionskontrolle zu verwalten.

Pro Code Visual Studio Code.

Pro Code – GitHub

Power Fx unterstützt formelbasierte Komponenten für die gemeinsame Nutzung und Wiederverwendung. Wir haben die Unterstützung von Parametern für Komponenteneigenschaften angekündigt, die die Erstellung reiner benutzerdefinierter Funktionen mit weiteren Verbesserungen ermöglichen.

Außerdem eignet sich Power Fx hervorragend zum Zusammenfügen von Komponenten und Diensten, die von Profis entwickelt wurden. Standardmäßige Konnektoren bieten Zugriff auf Hunderte von Datenquellen und Webdiensten, angepasste Konnektoren ermöglichen es Power Fx, mit jedem RESTful-Webdienst zu kommunizieren, und Code-Komponenten ermöglichen es Power Fx, mit vollständig angepasstem JavaScript auf dem Bildschirm und der Seite zu interagieren.

Entwurfsprinzipien

Einfach

Power Fx ist für die Zielgruppe der Ersteller gedacht, deren Mitglieder nicht als Entwickler ausgebildet sind. Wo immer möglich nutzen wir das Wissen, das diese Zielgruppe bereits kennt oder schnell aufgreifen kann. Die Anzahl der Konzepte, die erforderlich sind, um erfolgreich zu sein, wird auf ein Minimum beschränkt.

Einfach zu sein ist auch gut für Entwickler. Für die Entwickler-Zielgruppen ist es eine Niedrig Code-Sprache, die die für die Erstellung einer Lösung erforderliche Zeit verkürzt.

Excel-Konstanz

Die Microsoft Power Fx-Sprache ist stark an die Excel-Formelsprache angelehnt. Wir möchten die Excel-Kenntnisse und -Erfahrungen der vielen Hersteller nutzen, die auch Excel verwenden. Typen, Operatoren und Funktionssemantik sind so nah wie möglich an Excel.

Wenn Excel keine Antwort bietet, sehen wir uns als nächstes SQL an. SQL ist nach Excel die am zweithäufigsten verwendete deklarative Sprache und kann Anleitungen zu Datenvorgänge und starker Typisierung bereitstellen, die Excel nicht bietet.

Deklarativ

Der Hersteller beschreibt, was seine Logik tun soll, und nicht genau, wie oder wann sie es tun soll. Auf diese Weise kann der Compiler optimiert werden, indem Vorgänge parallel ausgeführt, die Arbeit bis zur Verwendung verzögert und zwischengespeicherte Daten vorab abgerufen und wiederverwendet werden.

In einem Excel-Arbeitsblatt definiert der Autor beispielsweise die Beziehungen zwischen Zellen, Excel entscheidet jedoch, wann und in welcher Reihenfolge Formeln ausgewertet werden. Auf ähnliche Weise können Formeln in einer App als „Neuberechnung“ nach Bedarf basierend auf Benutzeraktionen, Datenbankänderungen oder Timerereignissen angesehen werden.

Funktional

Wir bevorzugen reine Funktionen, die keine Nebeneffekte haben. Dies führt zu einer Logik, die leichter zu verstehen ist und dem Compiler die größte Freiheit zur Optimierung gibt.

Im Gegensatz zu Excel ändern Apps von Natur aus den Status – Apps verfügen beispielsweise über Schaltflächen, mit denen Änderungen am Datensatz in einer Datenbank gespeichert werden. Einige Funktionen haben daher Nebeneffekte, obwohl wir dies so weit wie möglich einschränken.

Anordnung

Falls möglich, passt die hinzugefügte Funktionalität gut zu den vorhandenen Funktionen. Leistungsstarke Funktionen können in kleinere Teile zerlegt werden, die einfacher unabhängig voneinander verwendet werden können.

Ein Galerie-Steuerelement weist beispielsweise keine getrennten Sort- und Filter-Eigenschaften auf. Stattdessen werden die Sort und Filter Funktionen zu einer einzigen Items Eigenschaft zusammengefasst. Die Benutzeroberfläche zum Ausdrücken von Sort- und Filter-Verhalten überlagert die Items-Eigenschaft mithilfe eines bidirektionalen Editors für diese Eigenschaft.

Stark getippt

Die Typen aller Werte sind zur Kompilierungszeit bekannt. Dies ermöglicht die frühzeitige Erkennung von Fehlern und umfangreichen Vorschlägen bei der Dokumenterstellung.

Polymorphen Typen werden unterstützt, aber bevor sie verwendet werden können, muss ihr Typ an einen statischen Typ angeheftet werden und dieser Typ muss zur Kompilierungszeit bekannt sein. Die IsType und AsType Funktionen werden zum Testen und Formen von Typen bereitgestellt.

Referenztyp

Typen werden aus ihrer Verwendung abgeleitet, ohne deklariert zu werden. Wenn Sie beispielsweise eine Variable auf eine Zahl festlegen, wird der Variablentyp als Zahl festgelegt.

Widersprüchliche Typverwendung führt zu einem Fehler bei der Kompilierung.

Gebietsschemasensitive Dezimaltrennzeichen

In einigen Regionen der Welt wird ein Punkt (.) als Dezimaltrennzeichen verwendet, in anderen Regionen hingegen ein Komma (,). Dies ist bei Excel ebenfalls der Fall. Dies wird normalerweise nicht in anderen Programmiersprachen durchgeführt, die im Allgemeinen einen kanonischen Punkt (.) als Dezimaltrennzeichen für alle Benutzer weltweit verwenden. Um für Hersteller auf allen Ebenen so zugänglich wie möglich zu sein, ist es wichtig, dass 3,14 eine Dezimalzahl für eine Person in Frankreich ist, die diese Syntax ihr ganzes Leben lang verwendet hat.

Die Wahl des Dezimaltrennzeichens wirkt sich kaskadierend auf das für Funktionsaufrufargumente verwendete Listentrennzeichen und den Verkettungsoperator aus.

Dezimaltrennzeichen der Sprache des Autors Power Fx-Dezimaltrennzeichen Power Fx-Listentrennzeichen Power Fx-Verkettungsoperator
, (Punkt) , (Punkt) , (Komma) ; (Semikolon)
, (Komma) , (Komma) ; (Semikolon) ;; (doppeltes Semikolon)

Weitere Informationen: Globale Unterstützung

Nicht objektorientiert

Excel ist nicht objektorientiert, und Power Fx ist es auch nicht. In einigen Sprachen wird beispielsweise die Länge einer Zeichenfolge als Eigenschaft der Zeichenfolge ausgedrückt wie "Hello World".length in JavaScript. Excel und Power Fx drücken dies stattdessen in Form einer Funktion als Len( "Hello World" ) aus.

Komponenten mit Eigenschaften und Methoden sind objektorientiert und Power Fx arbeitet problemlos mit ihnen. Nach Möglichkeit bevorzugen wir jedoch einen funktionalen Ansatz.

Erweiterbar

Ersteller können ihre Komponenten und Funktionen erstellen, indem sie Power Fx selbst verwenden. Entwickler können ihre Komponenten und Funktionen durch Schreiben von JavaScript erstellen.

Entwicklerfreundlich

Obwohl Entwickler unser Hauptzielgruppe sind, versuchen wir, wo immer möglich, entwicklerfreundlich zu sein. Wenn dies nicht im Widerspruch zu den oben genannten Design-Prinzipien steht, tun wir die Dinge so, dass ein Entwickler dies zu schätzen weiß. Zum Beispiel kann Excel keine Kommentare hinzufügen, daher verwenden wir C-ähnliche Zeilen- und Inline-Kommentare.

Sprachevolution

Die Weiterentwicklung der Programmiersprachen ist sowohl notwendig als auch schwierig. Jeder ist zu Recht besorgt darüber, dass eine Änderung, egal wie gut gemeint, vorhandenen Code beschädigen und die Benutzer dazu zwingen könnte, ein neues Muster zu lernen. Power Fx nimmt die Abwärtskompatibilität ernst, aber wir glauben auch fest daran, dass wir es nicht immer gleich beim ersten Mal richtig machen werden und dass wir als Community gemeinsam lernen werden, was das Beste ist. Wir müssen uns weiterentwickeln, und Power Fx hat die Entwicklung der Sprache von Anfang an unterstützt.

Jedes Power Fx-Dokument, das gespeichert wird, enthält einen Sprachversionsstempel. Wenn wir eine inkompatible Änderung vornehmen möchten, schreiben wir einen sogenannten Back-Compat-Konverter, der die Formel bei der nächsten Bearbeitung automatisch neu schreibt. Wenn es etwas Wichtiges ist, über das wir den Benutzer informieren müssen, zeigen wir auch eine Nachricht mit einem Link zu den Dokumenten an. Mit dieser Funktion können wir weiterhin Apps laden, die mit den Vorschauversionen von Power Apps von vor vielen Jahren erstellt wurden, trotz aller Veränderungen, die seitdem stattgefunden haben.

Zum Beispiel haben wir die ShowError Funktion zum Anzeigen eines Fehlerbanners mit rotem Hintergrund eingeführt.

Fehler anzeigen

Die Benutzer waren begeistert, fragten uns aber auch, wie wir ein Erfolgsbanner (grüner Hintergrund) oder ein Informationsbanner (blauer Hintergrund) anzeigen können. Also haben wir uns eine allgemeinere Notify-Funktion ausgedacht, die ein zweites Argument für die Art der Benachrichtigung benötigt. Wir hätten einfach Notify hinzufügen und ShowError so lassen können, wie es war. Aber wir haben es nicht getan, wir haben ShowError durch Notify ersetzt. Wir haben eine Funktion, die zuvor in Produktion war, mit etwas anderem entfernt. Da es zwei Möglichkeiten gegeben hätte, dasselbe zu tun, hätte dies insbesondere bei neuen Benutzern Verwirrung gestiftet und vor allem die Komplexität erhöht. Niemand beschwerte sich, alle schätzten die Änderung und gingen dann zu ihrer nächsten Benachrichtigungsfunktion über.

So sieht dieselbe App aus, wenn sie in die neueste Version von Power Apps geladen wird. Der Benutzer benötigte keine Aktion, um diese Umwandlung durchzuführen. Sie erfolgte automatisch beim Öffnen der App.

Benachrichtigungsfunktion ersetzt ShowError

Mit dieser Funktion kann sich Power Fx schneller und aggressiver weiterentwickeln als die meisten Programmiersprachen.

Kein undefinierter Wert

Einige Sprachen wie JavaScript verwenden das Konzept eines undefinierten Werts für nicht initialisierte Variablen oder fehlende Eigenschaften. Der Einfachheit halber haben wir dieses Konzept vermieden. Instanzen, die an anderer Stelle nicht definiert wären, werden entweder als Fehler oder als Leerwert behandelt. Beispielsweise beginnen alle nicht initialisierten Variablen mit einem leeren Wert. Alle Datentypen können den Wert leer annehmen.

Data types
Operatoren und Bezeichner
Tabellen
Variablen
Imperative Logik
Globaler Support
Ausdrucksgrammatik
YAML-Formelgrammatik
Formeln in Canvas Apps