Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Power Fx is de taal met weinig code die Microsoft Power Platform gebruikt. Het is een algemene, sterk getypte, declaratieve en functionele programmeertaal.
Power Fx wordt uitgedrukt in mensvriendelijke tekst. Het is een taal met weinig code waarmee makers direct kunnen werken in een Excel-achtige formulebalk of Visual Studio Code-tekstvenster. De 'laag' in lage code komt van de beknopte en eenvoudige aard van de taal, waardoor algemene programmeertaken voor zowel makers als ontwikkelaars gemakkelijk zijn. Het maakt het volledige spectrum van ontwikkeling mogelijk van no-code voor degenen die nooit eerder hebben geprogrammeerd voor "pro-code" voor de doorgewinterde professional, zonder leren of herschrijven van kliffen tussendoor. Diverse teams kunnen samenwerken en tijd en kosten besparen.
Opmerking
- Microsoft Power Fx is de nieuwe naam voor de formuletaal voor canvas-apps in Power Apps. Dit overzicht en de bijbehorende artikelen zijn een werk dat wordt uitgevoerd wanneer Microsoft de taal uit canvas-apps extraheert, integreert met andere Microsoft Power Platform producten en deze beschikbaar maakt als open source. Begin voor meer informatie over en ervaring met de taal vandaag met Aan de slag met formules in canvas-apps in de Power Apps-documentatie en meld u aan voor een gratis Power Apps-proefversie.
- In dit artikel verwijzen makers naar gebruikers die aan beide uiteinden van het spectrum van programmeervaardigheden een functie kunnen gebruiken. Ontwikkelaars verwijzen naar gebruikers wanneer de functie geavanceerder is en waarschijnlijk buiten het bereik van een typische Excel gebruiker valt.
Power Fx bindt objecten aan elkaar met declaratieve spreadsheetachtige formules. Denk bijvoorbeeld aan de Zichtbaar-eigenschap van een UI-besturingselement als een cel in een Excel-werkblad, met een bijbehorende formule die de waarde berekent op basis van de eigenschappen van andere besturingselementen. De formulelogica herberekent de waarde automatisch, vergelijkbaar met hoe een spreadsheet dat doet, wat de zichtbaarheid van het besturingselement beïnvloedt.
Power Fx biedt ook imperatieve logica wanneer dat nodig is. Werkbladen hebben doorgaans geen knoppen waarmee u wijzigingen in een database kunt indienen, maar apps hebben die vaak wel. Dezelfde expressietaal wordt gebruikt voor zowel declaratieve als imperatieve logica.
Microsoft maakt Power Fx beschikbaar als opensource-software. Het is momenteel geïntegreerd in canvas-apps en Microsoft wordt deze uit Power Apps geëxtraheerd voor gebruik in andere Microsoft Power Platform producten en als open source. Meer informatie: Microsoft Power Fx op GitHub
Dit artikel is een overzicht van de taal en de bijbehorende ontwerpprincipes. Raadpleeg de volgende artikelen voor meer informatie over Power Fx:
- Gegevenstypen
- Operators en id's
- Tabellen
- Variabelen
- Imperatieve logica
- Algemene ondersteuning
- Expressiegrammatica
- Grammatica van YAML-formules
Denk aan een werkblad
Wat als u net zo gemakkelijk een app zou kunnen bouwen als een werkblad in Excel?
Wat als u zou kunnen profiteren van uw bestaande kennis van spreadsheets?
Deze vragen inspireerden de creatie van Power Apps en Power Fx. Honderden miljoenen mensen maken elke dag werkbladen met Excel. Laten we ze meenemen naar het maken van apps die eenvoudig zijn en die gebruikmaken van Excel concepten die ze al kennen. Door Power Fx uit Power Apps te halen, gaan we deze vragen beantwoorden voor het creëren van automatisering, een virtuele agent of andere domeinen.
Alle programmeertalen, waaronder Power Fx, hebben expressies: een manier om een berekening weer te geven op basis van getallen, tekenreeksen of andere gegevenstypen.
mass * acceleration drukt bijvoorbeeld in de meeste talen de vermenigvuldiging uit van mass en acceleration. U kunt het resultaat van een expressie in een variabele plaatsen, deze gebruiken als argument voor een procedure of nesten in een grotere expressie.
Power Fx gaat nog een stap verder. Een expressie op zich zegt niets over wat ermee wordt berekend. Het is aan de maker om de expressie in een variabele te plaatsen of door te geven aan een functie. In Power Fx schrijft u in plaats van alleen een expressie te schrijven die geen specifieke betekenis heeft, een formule die de expressie aan een naam (identifier) bindt. U schrijft force = mass * acceleration als formule voor het berekenen van force. Als mass u wijzigingen aanbrengt acceleration , force wordt automatisch bijgewerkt naar een nieuwe waarde. De expressie beschreef een berekening, een formule gaf die berekening een naam en gebruikte de berekening als recept. Daarom noemen we Power Fx een formuletaal.
Met bijvoorbeeld deze formule van Stack Overflow wordt naar een tekenreeks gezocht in omgekeerde volgorde. In Excel ziet het eruit als de volgende afbeelding.
Schermopname van een formulebalk in Excel met de formule: = RIGHT (A1, LEN (A1) - FIND ("|", SUBSTITUTE (A1, "", "|", LEN (A1) -LEN (SUBSTITUTE (A1, " "," ")))) Cel A1 bevat de tekst" Hallo, wereld! Leuk je te ontmoeten!" In cel A2 staat de tekst "je!"
Power Fx werkt met dezelfde formule, waarbij de celverwijzingen zijn vervangen door verwijzingen naar eigenschappen van besturingselementen:
Schermopname van een Power Fx-formulebalk in Power Apps. De formule is = RIGHT (Input.Text, Len (Input.Text) - FIND ("|", SUBSTITUTE (Input.Text, "", "|", Len (Input.Text) -Len (Substitute (Input.Text), "", "")))) In het invoervak onder de formule wordt de tekst "Hallo, wereld! Leuk je te ontmoeten!" verschijnt letter voor letter. Tegelijkertijd verschijnen in het vak Label de letters van het laatste woord. Als de volledige tekst in het invoervak verschijnt, wordt het woord "je!" in het vak Label weergegeven.
Wanneer de waarde van het Input besturingselement verandert, wordt de Label formule automatisch opnieuw berekend en wordt de nieuwe waarde weergegeven. Er zijn hier geen OnChange-gebeurtenisverwerkers zoals gebruikelijk in andere talen.
In een ander voorbeeld wordt een formule gebruikt voor de Fill kleur van het scherm. Wanneer de schuifregelaars rood, groen en blauw veranderen, verandert de achtergrondkleur automatisch terwijl deze opnieuw wordt berekend.
Er zijn geen OnChange-gebeurtenissen voor de schuifregelaars zoals gebruikelijk in andere talen. Er is geen manier om de waarde van de Fill-eigenschap expliciet in te stellen. Als de kleur niet werkt zoals verwacht, moet u naar deze ene formule kijken om te begrijpen waarom deze niet werkt. U hoeft niet door de app te zoeken om een stukje code te vinden dat de eigenschap op een onverwacht moment instelt; er is geen tijdselement. De juiste formulewaarden blijven altijd behouden.
Omdat de schuifregelaars op een donkere kleur zijn ingesteld, veranderen de labels voor rood, groen en blauw in wit ter compensatie. Deze wijziging vindt plaats via een eenvoudige formule in de Color eigenschap voor elk labelbesturingselement.
Wat handig is aan deze formule is dat deze is geïsoleerd van wat er gebeurt voor de Fill kleur: dit zijn twee geheel verschillende berekeningen. In plaats van grote monolithische procedures, bestaat Power Fx-logica meestal uit veel kleinere formules die op zichzelf staan. Deze structuur maakt ze gemakkelijker te begrijpen en maakt verbeteringen mogelijk zonder bestaande logica te storen.
Power Fx is een declaratieve taal, net als Excel. De maker bepaalt het gewenste gedrag, maar het is aan het systeem om te bepalen en te optimaliseren hoe en wanneer het tot stand moet worden gebracht. In de praktijk wordt het meeste werk gedaan door middel van pure functies zonder neveneffecten, waardoor Power Fx ook een functionele taal is, net als Excel.
Altijd live
Een bepalend aspect van werkbladen is dat ze altijd live zijn en dat veranderingen onmiddellijk worden weergegeven. Er is geen compileer- of uitvoeringsmodus in een werkblad. Wanneer u een formule wijzigt of een waarde invoert, wordt het werkblad onmiddellijk opnieuw berekend om de wijzigingen weer te geven. Gedetecteerde fouten komen onmiddellijk voor en verstoren de rest van het werkblad niet.
Power Fx implementeert hetzelfde. Het maakt gebruik van een incrementele compiler om het programma continu gesynchroniseerd te houden met de gegevens waarop het werkt. Wijzigingen worden automatisch doorgegeven via de grafiek van het programma, wat van invloed is op de resultaten van afhankelijke berekeningen. Deze berekeningen kunnen eigenschappen aan besturingselementen, zoals kleur of positie, aandrijven. De incrementele compiler biedt ook een uitgebreide bewerkervaring voor formules met IntelliSense, suggesties, automatisch aanvullen en typecontrole.
In de volgende animatie wordt het ordernummer weergegeven in een labelbesturingselement dat afhankelijk is van het schuifregelaarbesturingselement, ook al zijn er twee fouten op de labels eronder. De app is helemaal live en interactief. De eerste poging om de formule te herstellen door .InvalidName in te voeren, resulteert in een onmiddellijke rode lijn en foutmelding, zoals het hoort, maar de app blijft actief.
Wanneer u invoert .Employee, wordt de Data tabel Werknemers toegevoegd, worden metagegevens voor deze tabel opgehaald en worden er onmiddellijk suggesties voor kolommen weergegeven. U hebt zojuist een relatie van de ene tabel naar de andere doorlopen en het systeem heeft de benodigde aanpassingen aangebracht aan de verwijzingen van de app. Hetzelfde gebeurt bij het toevoegen van een .Customer.
Na elke wijziging gaat de schuifregelaar verder met de laatste waarde en behouden alle variabelen hun waarde. Overal wordt het ordernummer op de juiste wijze weergegeven in het bovenste label. De app is live, verwerkt echte gegevens, de hele tijd. U kunt het opslaan, weglopen en anderen kunnen het net als Excel openen en gebruiken. Er is geen buildstap, geen compileer, er is slechts een publicatiestap om te bepalen welke versie van de app gereed is voor gebruikers.
Weinig code
Power Fx beschrijft bedrijfslogica in beknopte maar krachtige formules. De meeste logica vermindert tot één regel, met veel expressiviteit en controle voor complexere behoeften. Het doel is om het aantal concepten dat een maker moet begrijpen tot een minimum te beperken, idealiter niet meer dan een Excel-gebruiker al zou weten.
Om bijvoorbeeld de voornaam van een medewerker voor een order op te zoeken, schrijft u de Power Fx zoals weergegeven in de volgende animatie. Naast Excel-concepten is het enige toegevoegde concept dat hier wordt gebruikt de punt "." in de notatie om de details van een gegevensstructuur weer te geven, in dit geval .Employee.'First Name'. De animatie toont de toewijzing tussen de delen van de Power Fx-formule en de concepten die expliciet moeten worden gecodeerd in het equivalente JavaScript.
Laten we dieper ingaan op alle dingen die Power Fx voor ons doet en de vrijheid die power fx moet optimaliseren, omdat de formule declaratief is:
Asynchroon: alle gegevensbewerkingen in Power Fx zijn asynchroon. De maker hoeft dit niet op te geven en de maker hoeft ook geen bewerkingen te synchroniseren nadat de aanroep is afgelopen. De maker hoeft helemaal niet op de hoogte te zijn van dit concept, hij hoeft niet te weten wat een belofte- of lambda-functie is.
Lokaal en extern: Power Fx gebruikt dezelfde syntaxis en functies voor gegevens die lokaal in het geheugen zijn opgeslagen en maakt op afstand verbinding met een database of service. De gebruiker hoeft niet na te denken over dit onderscheid. Power Fx delegeert automatisch wat gedelegeerd kan worden aan de server om filters en sorteringen efficiënter te verwerken.
Relationele gegevens: Orders en Klanten zijn twee verschillende tabellen, met een veel-op-een-relatie. Voor de OData-query is "$expand" vereist met kennis van de externe sleutel, vergelijkbaar met een Join in SQL. Voor de formule is dit niet nodig, in feite zijn databasesleutels een ander concept dat de maker niet hoeft te kennen. De maker kan een eenvoudige puntnotatie gebruiken om vanuit een record toegang te krijgen tot de hele grafiek met relaties.
Projectie: bij het opstellen van een query schrijven veel ontwikkelaars
select * from table, waarmee alle kolommen met gegevens worden geretourneerd. Power Fx analyseert alle kolommen die door de hele app worden gebruikt, zelfs tussen formule-afhankelijkheden. De projectie wordt automatisch geoptimaliseerd en, nogmaals, een maker hoeft niet te weten wat "projectie" betekent.Haal alleen op wat nodig is: in dit voorbeeld impliceert de
LookUp-functie dat er maar één record hoeft te worden opgehaald en dat is alles wat wordt geretourneerd. Als er meer records worden aangevraagd met behulp van deFilter-functie - waarvoor duizenden records in aanmerking kunnen komen - wordt slechts één pagina met gegevens tegelijk geretourneerd, van ongeveer 100 records per pagina. De gebruiker moet een galerie of gegevenstabel doorlopen om meer gegevens weer te geven en er worden automatisch meer gegevens voor hen opgenomen. De maker kan zich beraden over grote hoeveelheden gegevens zonder na te hoeven denken over het beperken van gegevensaanvragen tot beheersbare brokken.Wordt alleen uitgevoerd wanneer dat nodig is: u definieert een formule voor de
Texteigenschap van het labelbesturingselement. Als de geselecteerde variabele verandert, wordt deLookUpautomatisch herberekend en het label bijgewerkt. De maker hoefde geen OnChange-handler te schrijven voor Selectie en hoefde niet te onthouden dat dit label ervan afhankelijk is. Dit is declaratief programmeren zoals eerder besproken: de maker specificeert wat hij in het label wil hebben, niet hoe of wanneer het moet worden opgehaald. Als dit label niet zichtbaar is omdat het op een scherm staat dat niet zichtbaar is ofVisiblede eigenschap onwaar is, kunt u deze berekening uitstellen totdat het label zichtbaar is en effectief elimineert als dat zelden gebeurt.Excel syntaxisvertaling : veel gebruikers weten dat het en-teken (& ) wordt gebruikt voor tekenreekssamenvoeging in Excel. JavaScript gebruikt hiervoor een plusteken (+) en andere talen gebruiken een punt (.).Weergavenamen en lokalisatie:
First Namewordt gebruikt in de Power Fx-formule ennwind_firstnamewordt gebruikt in het JavaScript-equivalent. In Microsoft Dataverse en SharePoint is er een weergavenaam voor kolommen en tabellen naast een unieke logische naam. De weergavenamen zijn vaak veel gebruiksvriendelijker, zoals in dit geval, maar ze hebben nog een andere belangrijk kenmerk en dat is dat ze kunnen worden gelokaliseerd. Als uw team meertalig is, kan elk teamlid tabel- en veldnamen in zijn eigen taal zien. In alle gevallen zorgt Power Fx ervoor dat de juiste logische naam automatisch naar de database wordt gestuurd.
Geen code
U hoeft Power Fx niet te lezen of schrijven om te beginnen met het uitdrukken van logica. U kunt veel aanpassingen en logica uitdrukken via eenvoudige switches en opbouwfuncties voor gebruikersinterfaces. Deze hulpprogramma's zonder code zijn gebouwd om Power Fx te lezen en te schrijven, dus er is genoeg ruimte voor iemand om het verder te doen. Hulpprogramma's zonder code bieden echter nooit alle expressiviteit van de volledige taal. Zelfs wanneer u geen code-opbouwfuncties gebruikt, bevindt de formulebalk zich in Power Apps om de maker te informeren over wat er namens hen wordt gedaan, zodat ze Power Fx kunnen leren.
Laten we eens kijken naar enkele voorbeelden. In Power Apps biedt het eigenschappenvenster schakelaars en knoppen zonder code voor de eigenschappen van de besturingselementen. In de praktijk zijn de meeste eigenschapswaarden statisch. U kunt de kleurenbouwer gebruiken om de achtergrondkleur van de Gallery te wijzigen. Merk op dat de formulebalk deze wijziging weergeeft en de formule bijwerkt naar een andere RGBA-aanroep. U kunt op elk gewenst moment naar de formulebalk gaan en deze wijziging nog een stap verder uitvoeren, in dit voorbeeld door ColorFade de kleur aan te passen. De kleureigenschap wordt nog steeds weergegeven in het eigenschappendeelvenster, maar een fx-pictogram verschijnt bij aanwijzen en u wordt naar de formulebalk geleid. Dit werkt volledig op twee manieren: het verwijderen van de ColorFade-aanroep brengt de kleur terug naar iets dat het eigenschappenpaneel kan begrijpen, en u kunt het opnieuw gebruiken om een kleur in te stellen.
Hier is een ingewikkelder voorbeeld. De galerie toont een lijst met medewerkers van Dataverse. Dataverse biedt weergaven van tabelgegevens. U kunt een van deze weergaven selecteren en de formule wordt gewijzigd om de Filter functie te gebruiken met deze weergavenaam. U kunt de twee vervolgkeuzelijsten gebruiken om in te bellen in de juiste tabel en weergave zonder de formulebalk aan te raken. Maar laten we zeggen dat u verder wilt gaan en een sortering wilt toevoegen. U kunt deze functie toevoegen in de formulebalk en in het eigenschappenvenster wordt opnieuw een fx-pictogram weergegeven en worden wijzigingen in de formulebalk doorsturen. En nogmaals, als u de formule vereenvoudigt tot iets wat het eigenschappenvenster kan lezen en schrijven, kan deze worden gebruikt.
Deze voorbeelden zijn eenvoudig. Power Fx is een uitstekende taal voor het beschrijven van interacties zonder code. Het is beknopt, krachtig en gemakkelijk te parseren. Het biedt de hoofdruimte die zo vaak nodig is met "geen kliffen" tot lage code.
Pro-code
Makers met weinig code bouwen soms oplossingen die de hulp van een expert vereisen of worden overgenomen door een professionele ontwikkelaar om deze te onderhouden en te verbeteren. Professionals beseffen ook dat low-code ontwikkeling eenvoudiger, sneller en goedkoper kan zijn dan het bouwen van een professionele tool. Niet elke situatie vereist de volledige kracht van Visual Studio.
Professionals willen professionele tools gebruiken om zo productief mogelijk te zijn. U kunt Power Fx-formules opslaan in YAML-bronbestanden, die u eenvoudig kunt bewerken met behulp van Visual Studio Code, Visual Studio of een andere teksteditor. Als u formules opslaat in YAML-bestanden, kunt u Power Fx onder broncodebeheer plaatsen met behulp van GitHub, Azure DevOps of een ander broncodebeheersysteem.
Power Fx ondersteunt op formules gebaseerde componenten voor delen en hergebruiken. Het ondersteunt parameters voor onderdeeleigenschappen, waardoor het maken van pure door de gebruiker gedefinieerde functies mogelijk maakt met meer verbeteringen onderweg.
Power Fx is ook geweldig in het samenvoegen van componenten en services die zijn gebouwd door professionals. Out-of-the-box-connectors bieden toegang tot honderden gegevensbronnen en webservices. Met aangepaste connectors kan Power Fx communiceren met een REST-webservice. Met codeonderdelen kan Power Fx communiceren met volledig aangepast JavaScript op het scherm en op de pagina.
Ontwerpprincipes
Eenvoudig
Power Fx is ontworpen om de doelgroep van de maker te bereiken, waarvan leden niet als ontwikkelaars worden getraind. Waar mogelijk gebruikt de taal kennis die deze doelgroep al kent of snel kan ophalen. Het aantal concepten dat nodig is om succesvol te zijn, wordt tot een minimum beperkt.
Eenvoudig zijn is ook goed voor ontwikkelaars. Voor de doelgroep van ontwikkelaars wil Power Fx een taal met weinig code zijn die de tijd die nodig is voor het bouwen van een oplossing vermindert.
Excel-consistentie
De Microsoft Power Fx-taal gebruikt veel elementen van de Excel-formuletaal. Het maakt gebruik van Excel kennis en ervaring van de vele makers die ook Excel gebruiken. Typen, operatoren en functiesemantiek liggen zo dicht mogelijk bij Excel.
Als Excel geen antwoord heeft, kijkt Power Fx naar SQL. Na Excel is SQL de volgende meest gebruikte declaratieve taal en kan het een leidraad bieden bij gegevensbewerkingen en sterk typeren wat Excel niet doet.
Declaratief
De makers beschrijven wat ze willen dat hun logica het doet, niet precies hoe of wanneer het gedaan moet worden. Met deze methode kan de compiler worden geoptimaliseerd door bewerkingen parallel uit te voeren, werk uit te stellen totdat dat nodig is, en gegevens in de cache vooraf te zetten en opnieuw te gebruiken.
In een Excel werkblad definieert de auteur bijvoorbeeld de relaties tussen cellen, maar Excel bepaalt wanneer en in welke volgorde formules moeten worden geëvalueerd. Op dezelfde manier kunt u formules in een app beschouwen als 'herberekenen' indien nodig op basis van gebruikersacties, databasewijzigingen of timergebeurtenissen.
Functioneel
Gebruik pure functies die geen bijwerkingen hebben. Deze benadering resulteert in logica die gemakkelijker te begrijpen is en de compiler de meeste vrijheid biedt om te optimaliseren.
In tegenstelling tot Excel, muteren apps volgens hun aard de status. Apps hebben bijvoorbeeld knoppen waarmee wijzigingen in de record in een database worden opgeslagen. Sommige functies hebben dus bijwerkingen, hoewel deze bijwerkingen zoveel mogelijk worden beperkt als praktisch.
Samenstelling
Voeg waar mogelijk functionaliteit toe die goed samenstelt met bestaande functionaliteit. U kunt krachtige functies opdelen in kleinere onderdelen die u gemakkelijker onafhankelijk kunt gebruiken.
Een Galerie-besturingselement heeft bijvoorbeeld geen aparte Sort- en Filter-eigenschappen. In plaats daarvan stelt u de Sort en Filter functies samen in één Items eigenschap. U laagt de gebruikersinterface voor het uitdrukken Sort en Filter gedrag van de Items eigenschap met behulp van een tweerichtingseditor voor deze eigenschap.
Krachtige typen
De typen van alle waarden zijn bekend tijdens het compileren. Met deze methode kunt u fouten en uitgebreide suggesties vroegtijdig detecteren tijdens het ontwerpen.
Polymorfe typen worden ondersteund, maar voordat u ze kunt gebruiken, moet u het type vastmaken aan een statisch type en dat type moet bekend zijn tijdens het compileren. De functies IsType en AsType worden geleverd voor testen en invullen.
Type-inferentie
Typen worden afgeleid van hun gebruik zonder te worden opgegeven. Als u bijvoorbeeld een variabele instelt op een getal, wordt het type van de variabele vastgesteld als getal.
Conflicterend typegebruik resulteert in een fout in de compilatietijd.
Landinstellingen voor decimale scheidingstekens
In sommige delen van de wereld gebruiken ze een punt (.) als decimaalteken, terwijl in andere delen een komma (,) wordt gebruikt. Excel volgt deze regionale conventie. Andere programmeertalen gebruiken over het algemeen een canonieke stip (.) als decimaalteken voor alle gebruikers over de hele wereld. Om zo benaderbaar mogelijk te zijn voor makers op alle niveaus, is het belangrijk dat 3,14 een decimaal getal is voor een persoon in Frankrijk die die syntaxis zijn hele leven heeft gebruikt.
De keuze van het decimaalteken heeft een trapsgewijze invloed op het lijstscheidingsteken, dat wordt gebruikt voor argumenten voor functieaanroepen en op de chainingoperator.
| Decimaalteken van taal van auteur | Decimaal scheidingsteken in Power Fx | Lijstscheidingsteken in Power Fx | Chainingoperator in Power Fx |
|---|---|---|---|
| . (punt) | . (punt) | , (komma) | ; (puntkomma) |
| , (komma) | , (komma) | ; (puntkomma) | ;; (dubbele puntkomma) |
Meer informatie: Wereldwijde ondersteuning
Niet objectgeoriënteerd
Excel is niet objectgeoriënteerd en Power Fx ook niet. In sommige talen wordt de lengte van een tekenreeks bijvoorbeeld uitgedrukt als een eigenschap van de tekenreeks, zoals "Hallo wereld".length in JavaScript. Excel en Power Fx drukken dit in plaats daarvan uit in termen van een functie, zoals Len( "Hallo wereld" ).
Componenten met eigenschappen en methoden zijn objectgeoriënteerd en Power Fx kan daarmee gemakkelijk werken. Maar waar mogelijk geeft u de voorkeur aan een functionele benadering.
Uitbreidbaar
Makers kunnen hun componenten en functies creëren door Power Fx zelf te gebruiken. Ontwikkelaars kunnen hun componenten en functies maken door JavaScript te schrijven.
Ontwikkelaarvriendelijk
Hoewel makers het primaire doel zijn, probeer dan waar mogelijk ontwikkelaarsvriendelijk te zijn. Als het niet conflicteert met de eerder beschreven ontwerpprincipes, doet u dingen op een manier die een ontwikkelaar waardeert. Excel heeft bijvoorbeeld geen mogelijkheid om opmerkingen toe te voegen, dus gebruik C-achtige lijn- en inlineopmerkingen.
Taalontwikkeling
Het ontwikkelen van programmeertalen is zowel noodzakelijk als lastig. Iedereen is terecht bezorgd dat een wijziging, hoe goedbedoeld ook, bestaande code zou kunnen opbreken en gebruikers ertoe zou verplichten een nieuw patroon te leren. Power Fx neemt compatibiliteit met eerdere versies serieus, maar het Power Fx-team gelooft er ook sterk van dat ze het niet altijd de eerste keer goed krijgen en dat de community gezamenlijk kan leren wat het beste is. Een programmeertaal moet zich ontwikkelen en Power Fx is ontworpen om vanaf het begin taalontwikkeling te ondersteunen.
Elk opgeslagen Power Fx-document bevat een taalversiestempel. Als het Power Fx-team een incompatibele wijziging wil aanbrengen, schrijven ze wat ze een 'back compat converter' noemen die de formule automatisch herschrijft wanneer deze de volgende keer wordt bewerkt. Als de wijziging belangrijk is voor het team om de gebruiker te informeren, wordt in de app een bericht weergegeven met een koppeling naar de documenten. Met behulp van deze faciliteit kan Power Fx nog steeds apps laden die zijn gebouwd met de preview-versies van Power Apps van vele jaren geleden, ondanks alle wijzigingen die sindsdien hebben plaatsgevonden.
Het Power Fx-team heeft bijvoorbeeld de ShowError functie geïntroduceerd om een foutbanner met een rode achtergrond weer te geven.
Gebruikers hielden ervan, maar ze vroegen ook om een manier om een succesbanner (groene achtergrond) of een informatieve banner (blauwe achtergrond) weer te geven. Het team heeft dus een algemenere Notify functie bedacht die een tweede argument gebruikt voor het soort melding. Het team had net kunnen toevoegen Notify en behouden ShowError zoals het was, maar in plaats daarvan vervangen door ShowErrorNotify. Ze hebben een functie verwijderd die eerder in productie was en deze vervangen door iets anders. Omdat er twee manieren zouden zijn geweest om hetzelfde te doen, zou deze wijziging verwarring hebben veroorzaakt, vooral voor nieuwe gebruikers, en het belangrijkste is dat het complexer zou zijn geworden. Niemand klaagde, iedereen waardeerde de verandering en ging verder met de volgende Notify-functie.
Dit is hoe dezelfde app eruitziet wanneer deze wordt geladen in de nieuwste versie van Power Apps. De gebruiker hoefde geen actie te ondernemen om deze transformatie te laten plaatsvinden, deze vond automatisch plaats toen de app werd geopend.
Door deze faciliteit te gebruiken, kan Power Fx zich sneller en agressiever ontwikkelen dan de meeste programmeertalen.
Geen ongedefinieerde waarde
Sommige talen, zoals JavaScript, gebruiken het concept van een ongedefinieerde waarde voor gedeïnitialiseerde variabelen of ontbrekende eigenschappen. Power Fx vermijdt dit concept om het eenvoudig te houden. Exemplaren die in andere talen ongedefinieerd zouden zijn, worden behandeld als een fout of een blanco waarde. Alle niet-geïnitialiseerde variabelen beginnen bijvoorbeeld met een lege waarde. Alle gegevenstypen kunnen de waarde van blanco aannemen.
Verwante artikelen
Gegevenstypen
Operators en id's
Tabellen
Variabelen
Imperatieve logica
Algemene ondersteuning
Expressiegrammatica
Grammatica van YAML-formules
Formules in canvas-apps