Microsoft Power Fx – áttekintés
A Power Fx egy olyan alacsony kódigényű nyelv, amelyet a teljes Microsoft Power Platform szolgáltatásban használni fognak. Ez egy általános célú, erős típusú, deklaratív és funkcionális programozási nyelv.
A Power Fx ember számára olvasható szövegként jelenik meg. Ez egy alacsony kódigényű nyelv, amely segítségével a készítők közvetlenül egy Excelhez hasonló szerkesztőlécen vagy a Visual Studio Code-szövegablakán dolgozhatnak. Az „alacsony” jellemző az alacsony kódigényű kifejezésben a nyelv tömörségének és egyszerűségének köszönhető, amellyel a programozási feladatok a készítők és a fejlesztők számára is egyszerűek. A fejlesztés teljes spektrumát biztosítja kódolást nem igénylő megoldásoktól azok számára, akik korábban még nem programoztak, a professzionális kódolású megoldásokig a tapasztalt szakemberek számára, és ezek között nincs tanulási görbe vagy újraírás így lehetővé válik a változatos csapatok együttműködése, és időt és költségeket takaríthatnak meg.
Feljegyzés
- A Microsoft Power Fx a vászonalapú alkalmazások képletnyelvének új neve a Power Apps-ban. Ez az áttekintés és a kapcsolódó cikkek még folyamatban vannak, miközben kinyerjük a vászonalapú alkalmazás nyelvét, integráljuk más Microsoft Power Platform-termékekkel, és nyílt forráskódúként elérhetővé tesszük. Ha szeretne többet megtudni a nyelvről, és szeretné megismerni, kezdje az Első lépések a vászonalapú alkalmazások képleteivel résszel a Power Apps dokumentációban, és iratkozzon fel egy Power Apps próbaverzióra.
- Ebben a cikkben a készítőkre hivatkozunk, amikor egy olyan funkciót írunk le, amely a programozási készség spektrumának bármely végén használható. Ha a funkció összetettebb, és valószínűleg túllépi egy tipikus Excel-felhasználó hatókörét, akkor fejlesztőnek hívjuk a felhasználót.
A Power Fx az objektumokat deklaratív táblázatszerű képletekkel köti össze. Vegyünk például egy felhasználóifelület-vezérlő Látható tulajdonságát egy cellaként egy Excel-munkalapon, ahol található egy társított képlet, amely kiszámítja az értékét más vezérlők tulajdonságai alapján. A képletlogika a számolótáblákhoz hasonlóan automatikusan újra átszámálja az értéket, ami befolyásolja a vezérlőelem láthatóságát.
A Power Fx imperatív logikát is kínál, ha szükséges. A munkalapok általában nem tartalmaznak olyan gombokat, amelyek be tudnak nyújtani módosításokat egy adatbázisba, de az alkalmazások gyakran használnak ilyeneket. Ugyanazt a kifejezésnyelvet használja a deklaratív és az imperatív logika is.
A Power Fx elérhető lesz nyílt forráskódú szoftverként. Jelenleg vászonalapú alkalmazásokba integráljuk, és azon dolgozunk, hogy kinyerjük a Power Apps alkalmazásokból, és felhasználjuk más Microsoft Power Platform termékekben és nyílt forráskódúként. További információ: Microsoft Power Fx a GitHubon
Ez a cikk áttekintést ad a nyelvről és a tervezési elveiről. Ha szeretne többet megtudni a Power Fx-ről, tekintse meg a következő cikkeket:
- Adattípusok
- Operátorok és azonosítók
- Táblázatok
- Változók
- Imperatív logika
- Globális támogatás
- Kifejezés nyelvtan
- YAML-képlet nyelvtana
Gondolkodjon számolótáblában
Mi történne, ha olyan könnyen tudna alkalmazást létrehozni, mint ahogy táblázatot az Excelben?
Mi történne, ha kiaknázhatná a meglévő tudását a táblázatokkal kapcsolatban?
Ezek voltak azok a kérdések, amelyek inspirálták a Power Apps és a Power Fx létrehozását. Naponta emberek százmilliói hoznak létre munkalapokat az Excelben; így elhoztuk az alkalmazáskészítést nekik, ami egyszerű, és a már ismert Excel-fogalmakat használja. A Power Fx kiemelésével a Power Apps szolgáltatásból megválaszoljuk ezeket a kérdéseket az automatizálás kialakításával, a virtuális ügynökkel vagy más területekkel kapcsolatban.
Minden programnyelv – beleértve a Power Fx-et is – kifejezéseket tartalmaz: amelyek a számításokat jelképezik a számokon, sztringeken vagy egyéb adattípusokon keresztül. A legtöbb nyelven például a mass * acceleration
a mass
(tömeg) és az acceleration
(gyorsulás) összeszorzását jelenti. A kifejezések eredménye elhelyezhető egy változóban, használható argumentumként egy eljárásban, vagy egy nagyobb kifejezésbe ágyazható.
A Power Fx egy lépéssel tovább megy. A kifejezés önmagában nem árul el semmit arról, amit kiszámít. A készítő feladata, hogy változóba helyezze, vagy átadja egy függvénynek. A Power Fx-ben ahelyett, hogy olyan kifejezést írna, amely nem rendelkezik különleges jelentéssel, olyan képletet ír, amely a kifejezést egy azonosítóval köti. A force
kiszámításához a képletként a következőt írja: force = mass * acceleration
. A mass
vagy az acceleration
módosulása esetén a rendszer automatikusan frissíti a force
értékét egy új értékre. A kifejezés egy számítást írt le, a képlet a számításnak nevet ad, és egy receptúraként használja. Ezért hivatkozunk képletnyelvként a Power Fx-re.
Például ez a képlet a Stack Overflow-ból fordított sorrendben keres egy sztringet. Az Excel alkalmazásban a következőhöz hasonló a kép.
Képernyőkép az Excelben lévő szerkesztőlécről a következő képlettel: =RIGHT(A1,LEN(A1)- FIND("|", SUBSTITUTE(A1," ","|", LEN(A1)-LEN(SUBSTITUTE(A1," ","")))) az A1 cella a következő szöveget tartalmazza: „Helló, világ! Örülök, hogy megismerhetem! Az A2 cella az „Ön” szöveget tartalmazza.
Ugyanezen képlettel működik a Power Fx, de a cellahivatkozásokat vezérlőtulajdonság-hivatkozások váltják fel:
Képernyőkép a Power Fx képletsávról a Power Apps szolgáltatásban. A képlet: =RIGHT(Input.Text,Len(Input.Text)- FIND("|", SUBSTITUTE(Input.Text," ","|", Len(Input.Text)-Len(Substitute(Input.Text," ","")))) A képlet alatti beviteli mezőben a „Helló, világ! Örülök, hogy megismerhetem!" – megjelenik betűk szerint. Ugyanakkor a Címke mezőben az utolsó szó betűi is megjelennek. Amikor a teljes szöveg megjelenik a Beviteli mezőben, az „Ön” szó megjelenik a címke mezőben.
Amikor módosul az Input
vezérlő értéke, a Label
vezérlőelem automatikusan újraszámálja a képletet, és megjeleníti az új értéket. Itt nincsenek OnChange
eseménykezelők, mint más nyelvekben gyakran.
Egy másik példa, amely képletet használ a képernyő Fill
színére. Ahogy a piros, zöld és kék színt vezérlő csúszkák megváltoznak, a háttér színe automatikusan megváltozik, miközben újraszámítás történik.
A csúszka vezérlőelemek esetén nincsenek olyan OnChange
események, amelyek más nyelvekben gyakoriak. A Fill
tulajdonság értékét nem lehet külön beállítani. Ha a szín nem az elvárt módon működik, ezt a képletet kell megnézve megérteni, hogy miért nem működik. Nem kell az alkalmazáson keresztül keresgélni egy kis kóddarabot, amely váratlan időpontban beállítja a tulajdonságot, nincs időbeli elem. A helyes képletértékek mindig megmaradnak.
Amikor a csúszkák sötét színre vannak állítva, a piros, zöld és kék címkék feliratai fehérre változnak a kompenzáláshoz. Ez egy egyszerű képlet segítségével történik az egyes címkevezérlők Color
tulajdonságán.
Ebben az a nagyszerű, hogy el van különítve attól, ami a Fill
színnel történik: ez két teljesen eltérő számítás. A nagy eljárások helyett a Power Fx logikája jellemzően több kisebb, egymástól független képletből áll össze. Így könnyebben érthetővé és egyszerűbbé válik a fejlesztések a meglévő logika használata nélkül is.
A Power Fx deklaratív nyelv, ahogyan az Excel is. A készítő meghatározza, hogy milyen viselkedést szeretne, de a rendszer saját maga határozhatja meg és optimalizálhatja a feladatot, és mikor. Ahhoz, hogy ez praktikus legyen, a munka nagy részében tiszta függvényekben történik mellékes hatsások nélkül, így a Power Fx is egy funkcionális nyelv, akárcsak az Excel.
Mindig éles
A munkalapok egyik meghatározó eleme, hogy mindig élő állapotúak, és a változások azonnal megjelennek. A munkalapon nincs fordítási vagy futtatásos mód. A képlet módosításakor vagy egy érték bevitelekor a munkalapot a rendszer azonnal újraszámítja, hogy az tükrözze a változásokat. Az észlelt hibák azonnal előkerülnek, és nincsenek hatással a munkalap többi részét.
Ugyanez van megvalósítva a Power Fx-szel is. A rendszer növekményes fordító segítségével folyamatosan szinkronizálja a programot azokkal az adatokkal, amelyeken működik. A program grafikonján keresztül automatikusan megjelennek a változtatások, ami hatással van a függő számítások eredményeire, ami a vezérlőelemek (például szín vagy pozíció) tulajdonságait befolyásolhatja. A lépésekben működő fordító gazdag képletszerkesztő élményt nyújt IntelliSense-funkcióval, javaslatokkal, az automatikus kiegészítéssel és típusellenőrzéssel.
A lenti animációban a rendelési szám a csúszka vezérlőelemtől függő címkevezérlőben megjelenik, annak ellenére, hogy két hiba van az alatta található címkéken. Az alkalmazás nagyon is élő és interaktív. A képlet kijavításának első kísérlete a .InvalidName
megadásával azonnali piros vonal és hiba megjelenését eredményezi, ahogy illik, de az alkalmazás tovább fut.
Az .Employee
megadásakor ez azt okozza, hogy a Data
panel hozzáadja az Alkalmazottak táblát, a rendszer lekéri az adott táblához tartozó metaadatokat, és azonnal megjelennek az oszlopokra vonatkozó javaslatok. Egyszerűen átléptünk egy kapcsolaton az egyik táblából egy másikba, és a rendszer a szükséges módosításokat elvégezte az alkalmazás hivatkozásain. Ugyanez történik a .Customer
hozzáadásakor is.
Minden módosítás után a csúszka az utolsó értékével folytatódik, és minden változó megtartja az értékét. A rendelési szám végig s megjelenik a felső címkén, ahogyan kell neki. Az alkalmazás éles volt, a valós adatokat feldolgozva a teljes idő alatt. Elmenthetjük, elmehetünk, és mások is megnyithatják és használhatják, akárcsak az Excelt. Nincs buildelési lépés, nincs fordítás, csak egy közzétételi lépés van, amely meghatározza, hogy az alkalmazás melyik verziója áll készen a felhasználók számára.
Kevés kód
A Power Fx az üzleti logikát rövid, mégis hatékony képletekben írja le. A legtöbb logika egyetlen sorra csökkenthető, sok kifejező képességgel és szabályozással az összetettebb igényekhez. A cél az, hogy a készítők által megértendő fogalmak száma minimális legyen, és ez – ideális esetben – nem több, mint amit egy Excel-felhasználó már amúgy is ismer.
Ha például egy alkalmazott utónevét keresi egy rendeléshez, akkor a Power Fx-t a következő animációban látható módon írja. Az Excel-fogalmakon túl az egyetlen hozzáadott fogalom itt a pont "." magyarázata az adatstruktúrába való lefúráshoz, ebben az esetben az .Employee.'First Name'
elembe. Az animáció megjeleníti a Power Fx-képlet részei közötti leképezést, valamint azokat a fogalmakat, amelyekhez külön kódot kell tartalmazni az azzal egyenértékű JavaScriptben.
Nézzük meg jobban, mi mindent tesz értünk a Power Fx a segítségével, és milyen optimalizálási szabadsága van, mert a képlet deklaratív volt:
Aszinkron: Minden adatművelet Power Fx aszinkron. A készítőnek ezt nem kell megadnia, és a hívás után sem kell a készítőnek szinkronizálnia a műveleteket. A készítőnek ezt a fogalmat egyáltalán nem kell ismernie, nem kell tudnia arról, hogy mi az az ígéret vagy lambda függvény.
Helyi és távoli: Power Fx ugyanazt a szintaxist és függvényeket használja a memóriában lévő helyi adatokhoz, és távolról csatlakoztat egy adatbázist vagy szolgáltatást. A felhasználónak nem kell ezen a különbségen gondolkodni. A Power Fx automatikusan delegálja a kiszolgálóra, amit lehetséges hogy a hatékonyabban tudja feldolgozni a szűréseket és rendezéseket.
Relációs adatok: A Rendelések és a Vevők két különböző tábla, amelyek több-az-egyhez kapcsolatban állnak. Az OData lekérdezéshez egy "$expand" szükséges az idegen kulcs ismeretével, hasonlóan az SQL Joinhoz. A képletben semmi ilyen nincs, az adatbáziskulcsok olyan fogalmak, amelyekről a készítőnek nem kell tudni. A készítő egyszerű pontjelölést használhat a rekordból származó teljes kapcsolati diagram eléréséhez.
Vetítés: Lekérdezés írásakor sok fejlesztő ír
select * from table
, ami visszahozza az összes adatoszlopot. A Power Fx a teljes alkalmazásban használt összes oszlopot elemzi még a képletek függőségei között is. A rendszer automatikusan optimalizálja a leképezést, és a készítőknek itt sem kell tudni, hogy mit jelent a „leképezés”.Csak a szükséges adatok lekérése: Ebben a példában a
LookUp
függvény azt jelenti, hogy csak egy rekordot kell lekérni, és csak ennyit ad vissza. Ha több rekordot kell lekérnie aFilter
függvény használatával, amelyhez akár több ezer rekord minősíthető, a rendszer egyszerre csak egy adatoldalt ad vissza, oldalanként 100 rekorddal. A felhasználónak végig kell haladnia egy gyűjteményen vagy adattáblán, hogy több adatot lássanak, és ez automatikusan megjelenik számukra. A készítő úgy is oka lehet a nagy adathalmazra, hogy nem kell gondolnia arra, hogy az adatkéréseket kezelhető adattömbökre korlátozza.Csak szükség esetén fut: Definiáltunk egy képletet a
Text
címke vezérlőelem tulajdonságához. Ahogy a kiválasztott változó megváltozik, automatikusan újra van számítva aLookUp
művelet, és frissítve van a címke. A készítőnek nem kell írnia OnChange kezelőt a Kiválasztáshoz, és nem kell emlékeznie, hogy ez a címke ettől függ. Ez a deklaratív programozás a korábbiakban már említettek szerint, a készítő azt határozta meg, hogy mi legyen a címkében, és nem azt, hogy hogyan és mikor kell lekérni. Ha a címke azért nem látható, mert egy nem látható címkén szerepel, vagy aVisible
tulajdonsága hamis, a számítást elhalasztjuk, amíg a címke látható nem lesz, és ha ritkán fordul elő, akkor hatékonyan eltávolítható.Excel szintaxis fordítása: Az Excelt sok felhasználó használja, akik többsége tudja, hogy az és (&) jelet karakterlánc-összefűzésre használják. A JavaScript pluszjelet (+) használ, a többi nyelv pedig pontot (.).
Megjelenítendő nevek és honosítás: a
First Name
képletben használatos, Power Fx mígnwind_firstname
a JavaScript megfelelőjében használatos. A Microsoft Dataverse-ben és a SharePointban az oszlopokhoz és táblákhoz tartozó megjelenítendő név is szerepel egy egyedi logikai név mellett. A megjelenítendő nevek sokszor felhasználóbarátabbak, mint ebben az esetben, de más fontos tulajdonsága van, hogy honosíthatók. Többnyelvű csoport esetén minden csoporttag a saját nyelvén láthatja az tábla- és mezőneveket. A Power Fx minden használati esetében automatikusan a helyes logikai nevet küldi el az adatbázisnak.
Nincs kód
A logika kifejezésének elkezdéséhez nem kell Power Fx-et olvasnia és írnia. Számos testreszabás és logika van, amelyek kifejezhetők egyszerű kapcsolók és felhasználói felület szerkesztői segítségével. Ezek a kódolást nem igénylő eszközök arra szolgálnak, hogy Power Fx-et olvassanak és írjanak, és biztosítsák, hogy van elég lehetőség ahhoz, hogy következő szintre emeljék, miközben tudatosítják, hogy a kódolást nem igénylő eszközök sosem nyújtják a teljes nyelv kifejezőképességét. Még kódolás nélküli buildelőeszközök használatakor is a képletsáv a Power Apps kiemelt helyén található, amellyel tájékoztatja a program a készítőt, hogy mit tesz a program a nevükben, és így megtanulhatják a Power Fx-et.
Lássunk néhány példát! A Power Apps tulajdonságpanelen a vezérlőelemek tulajdonságaihoz "kód néküli" kapcsolók és gombok tartoznak. A legtöbb tulajdonságérték a gyakorlatban statikus. A színszerkesztővel módosíthatja a Gallery
háttérszínét. Figyelje meg, hogy a képletsáv tükrözi ezt a változást, és a képletet egy másik RGBA
hívásra módosítja. Bármikor a képletsávhoz léphet, és ebben a példában továbbléphet, és a szín módosításához a ColorFade
elemet használhatja. A színtulajdonság továbbra is megjelenik a tulajdonságok panelen, de a mutatón egy fx ikon jelenik meg rámutatáskor, és a szerkesztőlécre léphet. Ez teljesmértékben kétféleképpen működik: a ColorFade
hívás eltávolítása visszaadja a színt a tulajdonság panel számára érthető módon, és ismét használhatja szín beállítására.
Ez egy összetettebb példa. A gyűjtemény megjeleníti a munkatársak listáját a Dataverse-ből. A Dataverse nézeteket kínál fel a táblaadatokból. Kiválaszthat egyet ezek közül a nézetek közül, és a képlet módosul, hogy tartalmazza a Filter
függvényt ezzel a nézetnévvel. A két legördülő menü segítségével a megfelelő táblázathoz léphet és megtekintheti a szerkesztőléc módosítása nélkül. Tegyük fel azonban, hogy tovább szeretne menni, és rendezést szeretne hozzáadni. Ezt meg lehet tenni a szerkesztőlécen, és a tulajdonság panelen ismét megjelenik egy fx ikon, és a módosításokhoz a képletsávra irányítja. Ha pedig a képletet leegyszerűsítjük olyanra, amit a tulajdonságpanel olvasni és írni tud, az megint használható.
Ezek egyszerű példák voltak. Úgy gondoljuk, hogy a Power Fx nagyszerű nyelvet a kód nélküli interakciók leírására. Tömör, hatékony és könnyen elemezhető, és olyan tartalékot biztosít, amely gyakran szükséges, hogy zökkenőmentesen el lehessen jutni az enyhe kódoláshoz.
Professzionális kód
A kevés kódolásra képes készítők néha olyan dolgokat hoznak létre, amelyhez egy szakértő segítsége szükséges, vagy átveszi őket egy profi fejlesztő a karbantartás és fejlesztés érdekében. A szakemberek azt is nagyra értékelik, hogy a kevés kódot használó fejlesztés egyszerűbb, gyorsabb és kevésbé költséges lehet, mint egy professzionális eszköz. Nem minden helyzethez szükségesek a Visual Studio kimerítő lehetőségei.
A szakemberek a professzionális eszközöket szeretnek használni, hogy a lehető legproduktívabbak lehessenek. A Power Fx-képletek tárolhatók YAML forrásfájlokban, amelyek könnyen szerkeszthetők a Visual Studio Code, a Visual Studio vagy bármely más szövegszerkesztő segítségével, és engedélyezhető, hogy a Power Fx a forrásvezérlés alatt álljon a GitHub, az Azure DevOps vagy bármely más forráskódvezérlő rendszerrel.
A Power Fx a képletalapú összetevőket megosztáshoz és újrahasználathoz is támogatja. A paraméterek összetevő-tulajdonságokhoz való támogatását is bejelentettük, így lehetővé vált a tisztán felhasználók által megadott függvények létrehozása, és további fejlesztések várhatók.
Emellett a Power Fx szakemberek által fejlesztett összetevők és szolgáltatások összekapcsolására is jó megoldás. A gyári összekötők több száz adatforráshoz és webes szolgáltatáshoz biztosítanak hozzáférést, az egyéni összekötők lehetővé teszik, hogy a Power Fx az összes REST-webszolgáltatással kommunikáljon, a kódösszetevők pedig lehetővé teszik, hogy a Power Fx teljesen egyéni JavaScriptekkel kommunikáljon a képernyőn és az oldalon.
Tervezési alapelvek
Egyszerű
A Power Fx tervezett célközönsége a készítők, akik nem rendelkeznek fejlesztői képzettséggel. Ahol csak lehetséges, azt a tudást használjuk, amivel ez a célközönség már rendelkezik, vagy könnyen el tudja sajátítani. A sikeres munkához szükséges fogalmak számát minimálisra kell csökkenteni.
Az egyszerűség a fejlesztők számára is jó. A fejlesztői célközönségszámára célunk, hogy egy kevés kóddal operáló nyelv legyen, amely csökkenti a megoldások építéséhez szükséges időt.
Excel-konzisztencia
A Microsoft Power Fx nyelv számos elemet az Excel képletnyelvéből vesz át. Arra törekszünk, hogy kihasználjuk az Excel-tudást és a tapasztalatokat sok olyan készítőtől, akik szintén az Excelt használják. A típusok, operátorok és függvényszemantikák a lehető legnagyobb mértékben hasonlítanak az Excelhez.
Ha az Excel nem tud választ adni, akkor az SQL következik. Az Excel után az SQL a következő leggyakrabban használt deklaratív nyelv, amely útmutatást adhat az olyan adatműveletekkel és az erősen típusos nyelvekkel kapcsolatban, amelyekre az Excel nem biztosít.
Deklaratív
A készítő azt írja le, mit csináljon a logikájuk, nem pedig pontosan azt, hogy hogyan vagy mikor tegye. Így a fordító párhuzamosan végezhet műveleteket, szükség esetén elhalaszthatja a feladatokat, előzetes beolvasást alkalmazhat, és újra felhasználhatja a gyorsítótárazott adatokat.
Például egy Excel-munkalapon a szerző meghatározza a cellák közötti kapcsolatok, de az Excel dönti el, hogy mikor és milyen sorrendben kell kiértékelni a képleteket. Hasonlóképp az alkalmazásban található képleteket úgy vehetjük, hogy „újraszámítják” az értékeket a felhasználói műveletek, adatbázis-módosítások vagy időzítőesemények alapján.
Funkcionális
Az olyan tiszta függvényeket részesítjük előnyben, amelyeknek nincsenek mellékhatásai. Ennek eredménye, hogy könnyen érthető logikát követ, és így a fordító számára az optimalizálásban a legnagyobb szabadság áll rendelkezésre.
Az Exceltől eltérően az alkalmazások a jellegüknél fogva mutálódnak, például az alkalmazásokhoz olyan gombok tartoznak, amelyek a rekord változásait mentik az adatbázisban. Ennek megfelelően néhány függvénynek vannak azonban mellékes hatásai, ugyanakkor azt a lehető legjobban korlátozzuk.
Kompozíció
Ahol lehetséges, a hozzáadott funkció jól együttműködik a meglévő funkciókkal. Az erős funkciók kisebb, függetlenül is könnyen használható részekre bonthatók.
Egy Katalógus vezérlő például nem rendelkezik külön Sort
és Filter
tulajdonságokkal. Ehelyett a Sort
és Filter
függvények egyetlen Items
tulajdonságba vannak rendezve. A Sort
és a Filter
viselkedés kifejezésére szolgáló felhasználói felület a Items
tulajdonság tetejére van rétegezve a tulajdonság kétirányú szerkesztője segítségével.
Erősen tipizált
Az összes érték típusa fordításkor ismert. Ez lehetővé teszi a hibák korai észlelését és a számos összetett javaslatot az írás során.
A polimorf típusok támogatottak, de használatuk előtt a típust statikus típushoz kell rögzítetni, és a típusnak ismertnek kell lennie a fordítási időpontban. Az IsType és AsType függvényeket és tesztelésre és típusok konvertálására biztosítjuk.
Típusinterferencia
A típusok a használatukból vannak származtatva, deklarálás nélkül. Ha például egy változót számra állít be,, akkor a változó típusa számként fog létrejönni.
A típusúhasználattal kapcsolatos ütközés hibát okoz fordításkor.
Területibeállítás-érzékeny tizedes elválasztók
A világ bizonyos régióiban a pontot (.) használják tizedesjelként, míg máshol a vesszőt (,). Az Excel is ezt teszi. Ez általában nem más programozási nyelveken történik, amelyek általálban a kanonikus pontot (.) használják tizedesjelként az összes felhasználónál világszerte. Ahhoz, hogy a döntéshozók számára minden szinten a lehető legnagyobb mértékben elérhető legyen, fontos, hogy a 3,14
egy tizedesszám legyen egy franciaországi személy számára, aki ezt a szintaxist használta egész életében.
A tizedeselválasztónak kaszkádolt hatása van a függvényhívások argumentumainál használt listaelválasztóra és a láncoló operátorra.
Szerzői nyelv tizedesjele | Power Fx tizedesjel | Power Fx listaelválasztó | Power Fx láncolási operátor |
---|---|---|---|
. (pont) | . (pont) | , (vessző) | ; (pontosvessző) |
, (vessző) | , (vessző) | ; (pontosvessző) | ;; (dupla pontosvessző) |
További információk: Globális támogatás
Nem objektumorientált
Az Excel nem objektumorientált, és a Power Fx sem. Bizonyos nyelveken például a karakterlánc hossza a karakterlánc tulajdonságaként van kifejezve, például "Hello World".length
a JavaScriptben. Excel, és a Power Fx ehelyett ezt függvény formájában fejezi ki: Len( "Hello World" )
.
A tulajdonságokat és metódusokat is tartalmazó összetevők objektumorientáltak, és a Power Fx egyszerűen együttműködik velük. De ahol lehetséges, ott a funkcionális megközelítést részesítjük előnyben.
Bővíthető
A készítők létrehozhatják saját összetevőiket és függvényeiket maga a Power Fx használatával. A fejlesztők JavaScript írásával hozhatják létre összetevőiket és függvényeiket.
Fejlesztőbarát
Annak ellenére, hogy a készítők az elsődleges célközönség, lehetőség szerint fejlesztőbarátok próbálunk lenni. Ha a fent leírt tervezési elvvel nem ütközik, a fejlesztők által megbecsült módon hajtjuk végre. Az Excelben például nem lehet megjegyzéseket hozzáadni, ezért C-hez hasonló sor- és beágyazott megjegyzéseket használunk.
Nyelvfejlődés
A programozási nyelvek fejlesztése szükséges és bonyolult is. Mindenki – jogosan – attól tart, hogy a változás, függetlenül attól, hogy milyen jó szándékú, a meglévő programkódot esetleg megszegi, és a felhasználóknak új mintát kell tanulniuk. A Power Fx az előző verziókkal való kompatibilitást nagyon komolyan veszi, de abban is erősen hiszünk, hogy nem mindig sikerül mindent elsőre megoldani, és közösségként együtt megtanulhatjuk a legjobb megoldást. A fejlődés elengedhetetlen, és a Power Fx már az elejétől fogva úgy van kialakítva, hogy támogassa a nyelv fejlődését.
A nyelvi verzióbélyegzőt minden mentett Power Fx-dokumentum tartalmazza. Ha inkompatibilis módosítást akarunk végrehajtani, akkor az egy „előző verziókkal való kompatibilitási átalakítót” hívunk meg, amely a következő szerkesztéskor automatikusan felülírja a képletet. Ha a változás olyan jelentős változás, amelyről a felhasználót még oktatni kell, a dokumentumokra mutató hivatkozást tartalmazó üzenetet is megjelenítünk. A létesítmény használatával továbbra is betölthetőek az olyan alkalmazások, amelyek sok évvel ezelőtt a Power Apps előzetes verzióival készültek, az azóta végzett változásoktól függetlenül.
Bevezettük például a ShowError
függvényt, hogy egy piros színű hibasávot jelenítsen meg.
A felhasználók imádták, de arra kértek, hogy jelenítsünk meg egy sikeres bannert (zöld háttér) is vagy egy információs bannert (kék háttér). Kifejlesztettünk egy általánosabb Notify
függvényt, amely az értesítés típusához egy második argumentumot is figyelembe vesz. Egyszerűen hozzáadhattuk volna a Notify
függvényt, és a megszokott módon megtarthattuk volna a ShowError
függvényt, de ehelyett lecseréltük a ShowError
függvényt a Notify
elemmel. Eltávolítottunk egy függvényt, amely korábban az éles környezetben volt, és lecseréltünk egy másik függvénnyel. Mivel ugyanez kétféleképpen is lehetséges lett volna, ez zavart okozna – különösen az új felhasználók számára – és ami a legfontosabb, hogy összetettebbé tette volna a függvényeket. Senki sem panaszkodott, mindenki elfogadta a változást, és továbbléptek a következő Notify függvényre.
Ugyanez az alkalmazás így néz ki, amikor betöltődik a Power Apps legújabb verziójába. Az átalakításhoz nem volt szükség felhasználói beavatkozásra, automatikusan történt az alkalmazás megnyitásakor.
Ezzel a létesítménnyel a Power Fx képes gyorsabban és a agresszívebben fejlődni, mint a legtöbb programozási nyelv.
Nincs definiáltalan érték
Bizonyos nyelvek– például a JavaScript – a nem meghatározott érték koncepcióját használják az visszavont inicializációjú változókhoz vagy hiányzó tulajdonságokhoz. Az egyszerűség kedvéért elkerültük ezt a koncepciót. A más nyelveken nem meghatározott példányokat a rendszer hibának vagy üres értéknek kezeli. Például minden inicializálatlan változó üres értékkel kezdődik. Az üres értéket minden adattípus felveheti.
Kapcsolódó cikkek
Adattípusok
Operátorok és azonosítók
Táblázatok
Változók
Imperatív logika
Globális támogatás
Kifejezés nyelvtan
YAML-képlet nyelvtana
Képletek vászonalapú alkalmazásokban