Omówienie aplikacji Microsoft Power Fx

Power Fx to język i niskiej ilości kodu, który będzie używany w całym programie Microsoft Power Platform. Jest to ogólny, dobrze wpisany, deklaracyjny i funkcjonalny język programowania.

Power Fx jest wyrażany w przyjaznym użytkownikowi formacie tekstowym. Jest to język niskiej zawartości kodu, z którym można pracować bezpośrednio w pasku formuł lub w oknie tekstowym, podobnie jak w programie Visual Studio Code lub w programie Excel. Określenie „niska zawartość kodu” wynika z tego, że jest to prosty i zwięzły język, co ułatwia tworzenie typowych zadań programistycznych zarówno deweloperom, jak i twórcom. Umożliwia pełnej wersji projektowania z bez konieczności wykorzystywania kodu dla osób, które nigdy wcześniej nie zostały zaznajomione z pracą w środowisku koderskim, bez potrzeby zdobywania wiedzy ani ponownego „zdobywania gór”, co umożliwia zespołom współpracę oraz pozwala zaoszczędzić czas i koszty.

Uwaga

  • Microsoft Power Fx to nowa nazwa języka formuł dla aplikacji kanw w programie Power Apps. Te informacje i powiązane artykuły są pracą w toku, gdyż stale wyodrębniamy język z aplikacji kanw, integrujemy go z innymi produktami Microsoft Power Platform i udostępniamy jako rozwiązanie open source. Aby dowiedzieć się więcej o języku i korzystać z niego dzisiaj, Zacznij od formuł dostępnych w aplikacjach kanw w dokumentacji Power Apps i zarejestruj się w celu uzyskania bezpłatnej wersji próbnej Power Apps.
  • W tym artykule twórca oznacza osobę, która może ale nie musi posiadać umiejętność kodowania. Jeśli natomiast funkcja jest bardziej zaawansowana i prawdopodobnie wykracza poza zakres typowego użytkownika programu Excel, używamy określenia deweloper (programista/koder).

Program Power Fx łączy obiekty z deklaratywnymi formułami przypominającymi arkusz kalkulacyjny. Na przykład można pomyśleć o właściwościach Widoczne formantu interfejsu użytkownika jako komórki w arkuszu programu Excel ze skojarzoną formułą obliczaną na podstawie właściwości innych formantów. W logice formuły jest automatycznie przeliczana wartość, podobnie jak w przypadku arkusza kalkulacyjnego, co ma wpływ na widoczność formantu.

Ponadto Power Fx oferuje potrzebną logikę. Arkusze nie mają zazwyczaj przycisków, które mogą przesyłać zmiany do bazy danych, ale aplikacje często je zawierają. Ten sam język wyrażenia jest używany zarówno w logice deklaratywnej, jak i koniecznej.

Program Power Fx zostanie udostępniony jako oprogramowanie open-source. Jest on obecnie zintegrowany z aplikacjami kanw i w trakcie wyodrębniania go z Power Apps do użycia w innych produktach Microsoft Power Platform jako open-source. Więcej informacji: Microsoft Power Fx w witrynie GitHub

W tym artykule znajdują się informacje poglądowe na temat języka i jego zasad projektowych. Aby dowiedzieć się więcej o Power Fx, zobacz następujące artykuły:

Myśl w arkuszach

Chcesz utworzyć aplikację tak łatwo, jak łatwo tworzysz arkusz w programie Excel?

Czy chcesz skorzystać z posiadanej wiedzy w zakresie arkuszy kalkulacyjnych?

To były pytania, które zainspirowały utworzenie Power Apps i Power Fx. Setki milionów osób tworzących arkusze za pomocą programu Excel każdego dnia. Użyjmy funkcji tworzenia aplikacji, które są łatwe, i skorzystajmy ze znanych już pojęć programu Excel. Odłączając Power Fx od Power Apps odpowiemy na te pytania dotyczące automatyzacji tworzenia, agenta wirtualnego lub innych domen.

Wszystkie języki programowania, w tym także język Power Fx mają wyrażenia: sposób reprezentowania obliczania liczb, ciągów i innych typów danych. Na przykład mass * acceleration w większości języków oznacza pomnożenie mass przez acceleration. Wynik wyrażenia może zostać umieszczony w zmiennej, używanej jako argument dla procedury lub zagnieżdżony w większym wyrażeniach.

W tym celu Power Fx idzie o krok dalej. Wyrażenie same w sobie nie zawiera informacji o tym, co jest obliczane. Zadaniem twórcy jest umieścić ją w zmiennej lub przekazać do funkcji. W programie Power Fx zamiast pisania wyrażenia bez konkretnego znaczenia napisać formułę połączoną z identyfikatorem. Zapisujesz force = mass * acceleration jako formułę obliczania force. W miarę zmiany mass lub accelerationforce jest automatycznie aktualizowana do nowej wartości. W wyrażeniach opisano obliczenia, formułę, która określa nazwę i używa ją jako pliku składniowego. Właśnie z tego powodu mamy do odwoływać się do Power Fx jako języka formuł.

Na przykład ta formuła z Stack Overflow wyszukuje ciąg w kolejności odwrotnej. W programie Excel wygląda to jak na obrazie.

Odwrotne wyszukiwanie

Zrzut ekranu paska formuł w programie Excel z formułą: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) Komórka A1 zawiera tekst „Witaj, Świecie! Wspaniale cię poznać!” W komórce A2 znajduje się tekst „ty!”

Power Fx działa z tą samą formułą, a odwołania do komórek zastąpione odwołaniami do właściwości formantu:

Odwrotne wyszukiwanie Power Fx.

Zrzut ekranu paska formuł Power Fx w programie Power Apps. Formułą jest =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) W polu danych poniżej formuły, tekst „Witaj, Świecie! Wspaniale jest cię poznać!” pojawia się litera po literze. Jednocześnie w polu Etykieta zostaną wyświetlone litery ostatniego wyrazu. Gdy pełny tekst pojawi się w polu wprowadzania, słowo „ty!” pojawi się w polu Etykieta.

Wraz ze zmianą wartości kontrolnej Input, kontrolka Label automatycznie przelicza ponownie formułę, pokazująć nową wartość. Brak tutaj obsługi zdarzeń OnChange, tak jak ma to miejsce w innych językach.

Innym przykładem jest użycie formuły Fill, aby nadać kolor ekranu. Wraz ze zmianą suwaków odpowiedzialnych za czerwony, zielony i niebieski kolor tło zmienia się automatycznie po przeliczeniu.

Suwak kolorów.

Nie ma zdarzeń OnChange dla formantów suwaka, tak jak dzieje się to w innych językach. Nie ma możliwości jawnie ustawiać wartości Fill właściwości. Jeśli kolor nie działa zgodnie z oczekiwaniami, należy przypatrzeć się tej jednej formule, aby zrozumieć, dlaczego nie działa. Nie trzeba przeszukiwać aplikacji, aby znaleźć fragment kodu odpowiedzialny za problem. Nie ma czegoś takiego. Poprawne wartości formuł są zawsze zachowywane.

Suwaki ustawiono na ciemny kolor, więc etykiety dla koloru czerwonego, zielonego i niebieskiego zmienią się na biały. Odbywa się to za pomocą prostej formuły dla właściwości Color każdego formantu etykiety.

Suwaki kolorów Power Fx.

Co więcej, jest on odcięty od tego, co dzieje się w Fill kolorze. Są to dwa zupełnie inne obliczenia. Zamiast dużych procedur składniowych logika Power Fx zawiera zwykle wiele mniejszych formuł, które są niezależne. Ułatwi to zrozumienie i włączenie ulepszeń bez konieczności zachowania istniejącej logiki.

Power Fx jest językiem deklaratywnym, tak jak program Excel. Twórca definiuje żądane zachowanie, ale to do systemu należy określenie i zoptymalizowanie sposobu i czasu jego wykonania. Aby ta funkcja był bardziej praktyczna, większość pracy jest wykonywana za pomocą funkcji bez efektów ubocznych, co sprawia, że Power Fx jest także językiem funkcjonalnym (tak jak w przypadku programu Excel).

Zawsze na żywo

Definiującym aspektem arkuszy jest to, że są one zawsze dostępne, a zmiany są odzwierciedlane błyskawicznie. Brak trybu kompilacji ani uruchomienia w arkuszu. Po zmodyfikowaniu formuły lub wprowadzeniu wartości w arkuszu jest on natychmiast ponownie przeliczany w celu odzwierciedlenia zmian. Wszelkie wykryte błędy zostaną natychmiast wykryte i nie kolidują z pozostałą częścią arkusza.

Ta sama rzecz jest zaimplementowana w programie Power Fx. Kompilator przyrostowy jest używany do stale synchronizowania programu z danymi, na których działa. Zmiany są automatycznie propagowane na wykresie programu, co ma wpływ na wyniki obliczeń zależnych, które mogą wpływać na właściwości formantów, takich jak kolor lub pozycja. Kompilator przyrostowy także udostępnia rozbudowane funkcje edycji formuł IntelliSense —sugestie, auto-uzupełnianie i sprawdzanie typów.

W animacji poniżej numer zamówienia jest wyświetlany w kontrolce etykiety zależnej od kontrolki suwaka, nawet jeśli na etykietach poniżej znajdują się dwa błędy. Aplikacja jest bardzo żywa i interakcyjna. Pierwsza próba naprawiania formuły przez wprowadzenie .InvalidName powoduje natychmiastowe wyświetlenie błędu, tak jak powinno, ale aplikacja działa.

Zawsze na żywo.

Wprowadzenie.Employee powoduje dodanie okienka Data do tabeli Pracownicy, pobierane są metadane tej tabeli, a sugestie dotyczące kolumn są natychmiast oferowane. Przeszliśmy właśnie przez relację z jednej tabeli do innej, a system dokonał niezbędnych poprawek do powiązań aplikacji. To samo dzieje się podczas dodawania .Customer.

Po każdej zmianie suwak będzie nadal używał swojej ostatniej wartości, a wszystkie zmienne zachowają swoją wartość. Przez cały czas numer zamówienia jest nadal wyświetlany w górnej etykiecie tak, jak powinien. Aplikacja natomiast pracuje, przetwarzając rzeczywiste dane przez cały czas. Możemy zapisać dane, zamknąć aplikację, a inni użytkownicy mogą ją otworzyć i z niej korzystać — jak w Excelu. Nie ma kroku tworzenia, brak kompilacji, jest tylko krok publikowania, aby określić, która wersja aplikacji jest gotowa dla użytkowników.

Bez umiejętności kodowania

Power Fx opisuje logikę biznesową w ścisłych, ale zaawansowanych formułach. Większość logiki można schować do jednego wiersza, ale pełno w nich możliwości i kontroli w przypadku bardziej złożonych potrzeb. Celem jest ograniczenie do minimum liczby pojęć, które twórca musi zrozumieć — najlepiej nie więcej, niż zna już użytkownik programu Excel.

Na przykład w celu wyszukania imienia pracownika etatowego dla zamówienia, należy napisać Power Fx w sposób przedstawiony w poniższej animacji. Oprócz pojęć programu Excel jedyna dodana tutaj koncepcja to kropka ".". Notacja ta dotyczy przetwarzania danych, w tym wypadku .Employee.'First Name'. Animacja zawiera mapowanie między częściami formuły Power Fx a pojęciami, które należy jawnie kodować w równoważnym języku JavaScript.

JavaScript wymagający niewiele kodowania.

Bardziej szczegółowo spójrzmy na wszystkie działania, które Power Fx dla nas wykonuje i wolność, z którą optymalizuje, ponieważ formuła jest deklaratywna:

  • Asynchronicznie: wszystkie operacje danych w Power Fx są asynchroniczne. Twórca nie musi tego określać, ani też nie musi synchronizować operacji po zakończeniu wywołania. Twórca w ogóle nie musi mieć świadomości tego konceptu. Nie musi wiedzieć czym jest np. funkcja lambda lub obietnica.

  • Lokalnie i zdalnie: Power Fx używa tej samej składni i funkcji dla danych lokalnych w pamięci i zdalnego łączenia bazy danych lub usługi. Użytkownik nie musi myśleć o tym rozróżnieniu. Program Power Fx automatycznie deleguje to, co może na serwer, aby efektywniej przetwarzać filtry i sortować obiekty.

  • Dane relacyjne: zamówienia i klienci to dwie różne tabele w relacji wiele-do-jednego. Zapytanie OData wymaga "$expand" z wiedzą na temat klucza obcego, podobnego do „Join” w SQL. Formuła nie zawiera żadnych informacji o tym. W rzeczywistości klucze bazy danych to kolejne pojęcie, o których twórca nie musi wiedzieć. Producent może użyć prostego zapisu kropki, aby uzyskać dostęp do całego wykresu relacji z rekordu.

  • Projekcja: podczas pisania zapytania wielu deweloperów zapisuje select * from table, co zwraca wszystkie kolumny danych. Power Fx analizuje wszystkie kolumny używane w całej aplikacji, nawet w zależności od formuł. Projekcja jest automatycznie zoptymalizowana i znowu producent nie musi wiedzieć, co to jest „projekcja”.

  • Pobierz tylko to, co jest potrzebne: w tym przykładzie funkcja LookUp oznacza, że należy pobrać tylko jeden rekord i to wszystko, co jest zwracane. Jeśli wymagane jest więcej rekordów przy użyciu funkcji Filter — do której tysiące rekordów może kwalifikować się jednocześnie — tylko jedna strona danych jest zwracana naraz. Na pojedynczej stronie jest zwracanych 100 rekordów na stronę. Użytkownik musi użyć galerii lub tabeli danych, aby zobaczyć więcej danych, co spowoduje automatyczne ich przetwarzanie. Producent może zastanowić się nad dużymi zestawami danych, nie myśląc o ograniczaniu żądań danych do łatwych do przetwarzania fragmentów.

  • Działa tylko wtedy, gdy jest to potrzebne: zdefiniowaliśmy formułę dla właściwości Text formantu etykiety. Wraz ze zmianą wybranej zmiennej, LookUp jest automatycznie ponownie przeliczane a etykieta aktualizowana. Twórca nie musi pisać procedury obsługi OnChange dla opcji Wyboru i nie musi pamiętać, że ta etykieta zależy od tego. Jest to deklaratywne programowanie, które zostało wcześniej omówione. Twórca określa, co chce mieć w etykiecie, a nie jak i kiedy ma zostać pobrana. Jeśli ta etykieta nie jest widoczna, ponieważ jest ona widoczna na niewidocznym ekranie lub jej właściwość Visible to false, można odroczyć to obliczenie, dopóki etykieta nie będzie widoczna, w efekcie eliminując ją do momentu wyświetlenia.

  • Tłumaczenie składniowe programu Excel: program Excel jest używany przez wielu użytkowników, z których większość wie, że ampersand (&) jest używany do połączenia ciągów. W języku JavaScript jest używany znak plus (+), a w innych językach kropka (.).

  • Nazwy wyświetlane i lokalizacja: First Name jest używane w formule Power Fx, podczas gdy nwind_firstname jest używane w odpowiedniku języka JavaScript. Oprócz unikatowej nazwy logicznej w Microsoft Dataverse i SharePoint jest nazwa dla kolumn i tabel. Wyświetlane nazwy są często bardziej przyjazne dla użytkownika, jak w tym przypadku, ale mają inną ważna jakość, ponieważ można je zlokalizować. W przypadku pracy z zespołem wielojęzycznym każdy członek zespołu może zobaczyć nazwy tabel i pól we własnym języku. We wszystkich przypadkach Power Fx upewni się, że prawidłowa nazwa logiczna jest automatycznie wysyłana do bazy danych.

Brak kodu

Nie trzeba czytać i pisać, aby Power Fx rozpoczął wyrażanie logiki. Istnieje wiele dostosowań i logiki, które można wyrażać za pomocą prostych przełączników i konstruktorów interfejsów użytkownika. Te narzędzia bez kodu skompilowane, by odczytywać i zapisywać w Power Fx, aby zapewnić, że istnieje mnóstwo miejsca, by ktoś kontynuował, równocześnie przyznając, że narzędzia bez kody nigdy nie zaoferują takich samych możliwości wyrażania, jak pełen język. Nawet po użyciu za pomocą kompilatorów bez kody pasek formuły jest w centrum w Power Apps, by informować twórców, jakie działania są przeprowadzane w ich imieniu, by mogli zacząć się uczyć Power Fx.

Spójrzmy na kilka przykładów. W panelu właściwości w Power Apps znajdują się przełączniki i pokrętła „bez kodu”, pozwalające kontrolować właściwości formantów. W praktyce większość wartości właściwości jest statyczna. Można użyć konstruktora kolorów, aby zmienić kolor w tle Gallery. Należy zauważyć, że pasek formuł odzwierciedla tę zmianę, aktualizując formułę do innego wywołania RGBA. W dowolnym momencie można przejść do paska formuł i zrobić krok dalej — w tym przykładzie, używając do dostosowania koloru ColorFade. Właściwość kolorów nadal jest wyświetlana w panelu właściwości, ale po umieszczeniu kursora na pasku formuł jest wyświetlana ikona fx. Działa to na dwa sposoby: usunięcie wywołania zwraca kolor do czegoś, co rozumie panel właściwości, i można jej użyć ponownie do ustawienia koloru ColorFade.

Brak koloru kodu.

Oto bardziej skomplikowany przykład. W galerii jest wyświetlona lista pracowników z Dataverse. Dataverse zawiera widoki na dane tabeli. Można wybrać jeden z tych widoków, a formuła zostanie zmieniona, aby użyć funkcji Filter w tej nazwie widoku. Dwa menu rozwijane mogą zostać użyte do połączenia poprawnej tabeli i wyświetlenia bez dotyku paska formuł. Załóżmy jednak, że chcesz przejść dalej i dodać sortowanie. Można to zrobić na pasku formuł, a w panelu właściwości ponownie jest wyświetlana ikona wyszukiwania, która umożliwia modyfikacje paska formuł. Jeśli uprościmy formułę do odczytu i zapisu przez panel właściwości, będzie można z niego ponownie korzystać.

Sortowanie bez kodu.

To były proste przykłady. Naszym zdaniem Power Fx jest doskonałym językiem do opisywania interakcji bez pisania kodu. Jest to rozwiązanie wygodne, wydajne i łatwe w analizie, a zatem umożliwia wydajną analizę tak często potrzebnych danych, oferując proste rozwiązanie z małą ilością kodu.

Kodowanie profesjonalne

Twórcy o niskich umiejętnościach koderskich czasami tworzą rzeczy, które wymagają pomocy eksperta lub zdarza się, że przejmie je profesjonalny deweloper w celu obsługi i zwiększenia możliwości. Specjaliści cenią sobie również, że w przypadku projektowania o niskiej zawartości kodu pracuje się łatwiej, szybciej i niższym kosztem, niż w przypadku korzystania z narzędzia profesjonalnego. Nie każda sytuacja wymaga wszystkich możliwości Visual Studio.

Specjaliści chcą używać narzędzi profesjonalnych, aby być jak najbardziej produktywnym. Formuły Power Fx mogą być przechowywane w plikach źródłowych YAML, które można łatwo edytować za pomocą Visual Studio Code, Visual Studio lub w innym edytorze tekstu i można włączyć Power Fx, by poddać go kontroli źródła w GitHub, Azure DevOps lub innym systemie kontroli kodu źródłowego.

Kod profesjonalny Visual Studio Code.

Kod profesjonalny GitHub.

Program Power Fx umożliwia udostępnianie i ponowne używanie składników opartych na formułach. Ogłoszono obsługę parametrów właściwości składnika, co umożliwia tworzenie funkcji zdefiniowanych przez użytkownika i większej liczby ulepszeń w pracy.

Ponadto Power Fx jest doskonały w łączeniu składników i usług zbudowanych przez specjalistów. Gotowe łączniki umożliwiają dostęp do setek źródeł danych i usług internetowych, łączniki niestandardowe umożliwiają Power Fx obsługę dowolnej usługi sieci Web REST, a składniki kodu umożliwiają Power Fx interakcję z w pełni niestandardowym skryptem JavaScript na ekranie i na stronie.

Zasady projektowania

Proste

Program Power Fx jest przeznaczony dla odbiorców twórców, których członkowie nie są przeszkoleni jako deweloperzy. W miarę możliwości używamy wiedzy, która znana jest już odbiorcy lub która nie wymaga wiele nauki. Liczba pojęć wymaganych jest utrzymywana na minimalnym poziomie.

Prostota jest także ważna dla deweloperów. Naszym celem jest język o niskiej zawartości kodu, który zmniejsza czas potrzebny na zbudowanie rozwiązania.

Spójność z Excelem

Język Microsoft Power Fx zapożycza dużo z programu Excel. Chcemy skorzystać z wiedzy i doświadczenia wielu twórców, którzy także korzystają z programu Excel. Typy, operatory i funkcje są jak najbardziej zbliżony do programu Excel.

Jeśli program Excel nie ma odpowiedzi, zaglądamy do SQL. Po programie Excel SQL to najbardziej znany język deklaracyjny, który zapewnia wskazówki dotyczące operacji danych oraz silne pisanie, którego Excel nie ma.

Deklaratywny

Twórca opisuje, co ma zrobić jego logika, a nie jak i kiedy należy to zrobić. Pozwoli to kompilatorowi na optymalizowanie operacji równocześnie, pobieranie danych z pamięci podręcznej i ich wstępne pobieranie oraz ponowne ich przetwarzanie.

Na przykład w arkuszu programu Excel autor definiuje element relacje komórek, ale program Excel decyduje, kiedy i w jakiej kolejności są szacowane formuły. Podobnie formuły w aplikacji mogą być jako „ponowne obliczanie” jako potrzebne na podstawie akcji użytkownika, zmian bazy danych lub zdarzeń zegara.

Funkcjonalność

Wolimy czyste instrukcje, które nie mają efektów ubocznych. Z tego wynika, że logika jest łatwiejsza do zrozumienia i zapewnia kompilatorowi najwięcej wolności do optymalizacji.

W przeciwieństwie do programu Excel aplikacje ze swojej natury mutują stan — na przykład aplikacje, które służą do zapisywania zmian w rekordzie bazy danych. Niektóre funkcje dostępne po stronie użytkownika mają więc efekty uboczne, ale ograniczymy je tak bardzo, jak jest to możliwe w praktyczny sposób.

Tworzenie

W miarę możliwości dodane funkcje oraz istniejące funkcje są już dostępne. Zaawansowane funkcje można rozłożyć na mniejsze części, które można łatwiej używać niezależnie.

Na przykład formant Galeria nie ma oddzielnych właściwości Sort i Filter. Zamiast tego funkcje Sort i Filter są składane w jedną właściwość Items. Interfejs użytkownika w celu wyrażania zachowania Sort i Filter jest warstwą na górze obiektu Items przy użyciu dwukierunkowego edytora tej właściwości.

Jednoznaczność

Typy wszystkich wartości są znane podczas kompilacji. Pozwala to na wczesne wykrywanie błędów i rozbudowane sugestie podczas tworzenia.

Typy statyczne są obsługiwane, ale przed ich rozpoczęciem należy przypiąć je do typu statycznego i ten typ musi być znany w czasie kompilacji. Funkcje IsType i AsType są dostępne do testowania i jako typy ogólne.

Dziedziczenie typów

Typy są dziedziczone ze względu na ich zastosowanie bez konieczności deklaracji. Na przykład ustawienie zmiennej na liczbę powoduje ustanowienie typu zmiennej jako liczby.

Kolidujące użycie typu powoduje błąd w czasie kompilacji.

Separatory dziesiętne zależne od lokalizacji

Na przykład niektóre regiony używają znaku „.” jako separatora dziesiętnego, a w innych stosuje się znak „.”. Tak samo działa też program Excel. Nie jest to często stosowane w innych językach programowania, które zazwyczaj używają kropki dziesiętnej (.) jako separatora dziesiętnego dla wszystkich użytkowników na całym świecie. Aby można było jak najbardziej ułatwić dla osób na wszystkich poziomach, należy stosować 3,14 jako oznaczenie dziesiętne dla osoby we Francji, która używa tej składni przez całe życie.

Wybór separatora dziesiętnego wpływa kaskadowo na separator list, używany na przykład dla argumentów funkcyjnych i operatorów łańcucha.

Separator dziesiętny języka autora Separator dziesiętny Power Fx Separator listy Power Fx Operator łańcuchowy Power Fx
. (kropka) . (kropka) , (przecinek) ; (średnik)
, (przecinek) , (przecinek) ; (średnik) ;; (podwójny średnik)

Więcej informacji: pomoc globalna

Bez orientacji na obiekt

Ani program Excel, ani Power Fx nie są ukierunkowane obiektowo. W niektórych językach długość ciągu jest na przykład wyrażana jako właściwość ciągu, na przykład w języku JavaScript jest to "Hello World".length. Excel i Power Fx zamiast tego wyrażają to samo jako funkcję, jak Len( "Hello World" ).

Składniki z właściwościami i metodami są ukierunkowane na obiekt i Power Fx łatwo z nimi współpracuje. Tam, gdzie to możliwe, wolimy jednak podejście funkcjonalne.

Możliwość rozszerzenia

Twórcy mogą tworzyć własne składniki i funkcje, używając samego Power Fx. Deweloperzy mogą tworzyć swoje składniki i funkcje, pisząc skrypt JavaScript.

Przyjazne dla deweloperów

Mimo że głównym celem jest twórca programu, staramy się, aby w miarę możliwości był on także przyjazny dla programistów. Jeśli nie koliduje z opisanymi wcześniej zasadami projektowania, używamy sposobów, które deweloper doceni. Na przykład program Excel nie ma możliwości dodawania komentarzy, więc używamy komentarzy w formacie C-podobnie jak w tekście.

Ewolucja języka

Zmieniający się język programowania jest potrzebny i niezbędny. Wszyscy użytkownicy — słusznie — obawiają się, że zmiana, bez względu na jej skalę i powód, może niszczyć istniejący kod i wymagać od użytkowników, aby nauczyli się nowego wzorca. Power Fx poważnie traktuje zgodność, ale głęboko wierzymy, że nie zawsze wszystko uda się za pierwszym razem i wspólnie uczymy się, co jest najlepszym rozwiązaniem dla społeczności. Musimy się rozwijać, więc Power Fx jest zaprojektowany do obsługi ewolucji języka od samego początku.

Sygnatura wersji językowej jest dołączona do każdego zapisanego dokumentu Power Fx. Jeśli chcemy wprowadzić niezgodną z wcześniejszą wersją zmianę, stworzymy coś, co nazywamy „konwerterem wstecznej zgodności”, który automatycznie zapisuje formułę przy następnej edycji. Jeśli zmieniane jest coś istotnego, o czym trzeba wyedukować użytkownika, zostanie również wyświetlony komunikat z łączem do dokumentów. Przy użyciu tego obiektu nadal można ładować aplikacje, które zostały wbudowane w wersje zapoznawcze sprzed wielu lat, mimo że wszystkie wprowadzone od tego czasu zmiany Power Apps zostały także wprowadzone.

Wprowadzono na przykład funkcję wyświetlania bannera błędu ShowError z czerwonym tłem.

Pokaż błąd.

Użytkownikom si to podoba, ale poprosili nas także o zielony banner z powiadomieniem o działaniu zakończonym pomyślnie i banner informacyjny (niebieski). Dla tego typu powiadomień utworzyliśmy bardziej ogólną funkcję Notify, która wymaga drugiego argumentu. Wystarczyło zachować Notify i pozostawić ShowError niezmienione. Ale zamiast tego zmieniliśmy ShowError za pomocą Notify. Usunęliśmy funkcję, która wcześniej była w środowisku produkcyjnym, i zastąpiliśmy ją inną. Ponieważ były to dwa sposoby na zrobienie tego samego, mogło to powodować zagubienie — szczególnie u nowych użytkowników, — poza tym tworzyło sztuczną kompleksowość. Zmiana podobała się wszystkim. Nikt nie miał problemów z korzystaniem z funkcji Notify.

W taki sposób aplikacja wygląda po załadowaniu w najnowszej wersji Power Apps. Do przekształcenia nie jest wymagane żadne działanie — wystąpiło ono automatycznie po otwarciu aplikacji.

Funkcja Notify zastępuje funkcję ShowError.

Dzięki temu obiektowi Power Fx może rozwijać się szybciej i bardziej dokładniej niż w większości języków programowania.

Brak niezdefiniowanych wartości

W niektórych językach, na przykład w JavaScript, istnieją pojęcia niezdefiniowanej wartości zmiennych lub brakujących właściwości. Aby uniknąć tego pojęcia, unikamy tego pojęcia. Wystąpienia, które w innych językach mogą być niezdefiniowane, są traktowane jako błąd lub pusta wartość. Na przykład wszystkie nieinicjowane zmienne zaczynają się od pustej wartości. Wszystkie typy danych mogą przyjąć wartość pustą.

Typy danych
Operatory i identyfikatory
Tabele
Zmienne
Logika konieczna
Wsparcie globalne
Gramatyka wyrażeń
Gramatyka formuły YAML
Formuły w aplikacjach kanwy