Premenné
Poznámka
Microsoft Power Fx je nový názov jazyka vzorcov pre aplikácie plátna. Tieto články sú rozpracované, pretože jazyk extrahujeme z aplikácií plátna a integrujeme ho s ostatnými produktmi Microsoft Power Platform, aby sme ho sprístupnili ako open source. Začnite s prehľadom Microsoft Power Fx ako úvod do jazyka.
Ak ste používali iný programovací nástroj, napríklad Visual Basic alebo JavaScript, možno sa pýtate: Kde sú premenné? Microsoft Power Fx je trochu iný a vyžaduje iný prístup. Namiesto hľadania premennej pri písaní vzorca si položte otázku: Ako by sa to robilo v tabuľkovom hárku?
V iných nástrojoch ste pravdepodobne vykonali výpočet a uložili výsledok vo forme premennej. Služba Power Fx a Excel však pri zmene vstupných údajov automaticky prepočítavajú vzorce, takže väčšinou nie je nutné vytvárať a aktualizovať premenné. Takýmto prístupom, kde je to možné, sa aplikácia vytvára, používa a udržiava oveľa jednoduchšie.
V niektorých prípadoch, ktoré rozširujú model Excelu pridaním vzorcov správania, budete musieť v službe Power Fx použiť premenné. Tieto vzorce sa spustia, keď napríklad používateľ vyberie tlačidlo. Vo vzorci správania je často vhodné nastaviť premennú, ktorá sa bude používať v iných vzorcoch.
Vo všeobecnosti sa však používanie premenných neodporúča. Niekedy je však výsledok, ktorý chcete dosiahnuť, možný iba s pomocou premennej. Premenné sa implicitne vytvárajú a napíšu, keď sa objavia vo funkciách, ktoré určujú ich hodnoty.
Zavedenie Excelu do služby Power Fx
Excel
Zopakujme si, ako funguje Excel. Bunka môže obsahovať hodnotu, ako napríklad číslo alebo reťazec či vzorec, ktorý je založený na hodnotách v iných bunkách. Keď používateľ zadá do bunky inú hodnotu, Excel automaticky prepočíta všetky vzorce, ktoré sú prepojené s novou hodnotou. Na fungovanie tohto procesu nemusíte nič programovať.
V nasledujúcom príklade bunka A3 je nastavená na vzorec A1 + A2. Ak sa A1 alebo A2 zmenia, A3 sa automaticky prepočíta, aby odrážal zmenu. Toto správanie nevyžaduje žiadne kódovanie mimo samotného vzorca.
Excel neobsahuje premenné. Hodnota bunky, ktorá obsahuje vzorec, sa mení na základe vstupov, ale zapamätať si výsledok vzorca a uložiť ho do inej bunky nie je možné. Ak zmeníte hodnotu v bunke, môže sa zmeniť celý tabuľkový hárok a všetky predtým vypočítané hodnoty sa stratia. Používatelia môžu v Exceli manuálne kopírovať a priliepať bunky, ale pomocou vzorcov to nie je možné uskutočniť.
Power Fx
Logika vytvorená v Power Fx sa správa veľmi podobne ako Excel. Namiesto aktualizovania buniek môžete kdekoľvek na obrazovku pridať ovládacie prvky a pomenovať ich, aby ich bolo možné použiť vo vzorcoch.
V Power Apps môžete napríklad replikovať správanie Excelu v aplikácii tak, že pridáte ovládací prvok Označenie s názvom Label1 a dva ovládacie prvky textového vstupu s názvom TextInput1 a TextInput2. Ak potom nastavíte vlastnosť Text vlastnosti Label1 na TextInput1.Text + TextInput2 .Text, vždy zobrazí súčet všetkých čísel v TextInput1 a TextInput2 automaticky.
Všimnite si, že je vybratý ovládací prvok Label1 a vo vzorcovom paneli v hornej časti obrazovky sa zobrazuje vzorec Text. Tu nájdeme vzorec TextInput1.Text + TextInput2.Text. Vzorec vytvorí závislosť medzi týmito ovládacími prvkami, rovnako ako sa vytvárajú závislostí medzi bunkami v excelovom zošite. Teraz zmeníme hodnotu TextInput1:
Vzorec položky Label1 sa automaticky prepočíta a zobrazí novú hodnotu.
V službe Power Fx môžete používať vzorce na určenie nielen primárnej hodnoty ovládacieho prvku, ale aj vlastností ako formátovanie. V nasledujúcom príklade vzorec vlastnosti Farba označenia automaticky zobrazí záporné hodnoty červenou farbou. Funkcia If by mala vyzerať podobne ako v Exceli:
If( Value(Label1.Text) < 0, Color.Red, Color.Black )
Vzorce môžete použiť pre najrôznejšie scenáre:
- Pomocou GPS vášho zariadenia môže ovládací prvok mapy zobraziť vašu aktuálnu polohu pomocou argumentov Location.Latitude a Location.Longitude. Pri pohybe bude mapa vašu polohu automaticky sledovať.
- Ostatní používatelia môžu aktualizovať zdroje údajov. Ostatní členovia tímu môžu napríklad aktualizovať položky v SharePoint zozname. Keď obnovíte zdroj údajov, všetky závislé vzorce sú automaticky prepočítané tak, aby obsahovali aktualizované údaje. Ďalej v našom príklade môžete nastaviť vlastnosť Položky galérie na vzorec Filter ( SharePointList ), ktorý automaticky zobrazí novofiltrovanú množinu záznamov.
Výhody
Používanie vzorcov pri tvorbe aplikácií má mnoho výhod:
- Ak viete používať Excel, viete používať službu Power Fx. Model a programovací jazyk vzorcov sú rovnaké.
- Ak ste používali iné programovacie nástroje, zamyslite sa, koľko kódu by bolo potrebné na dosiahnutie výsledkov v uvedených príkladoch. V jazyku Visual Basic by ste museli pre každú udalosť zmeny v každom ovládacom prvku zadávania textu napísať obsluhu udalostí. Kód na vykonanie požadovaného výpočtu v každej udalosti je nadbytočný, a ak by ste nenapísali spoločný podprogram, mohlo by dôjsť k výpadku synchronizácie. V službe Power Fx všetky vyriešite jednoriadkovým vzorcom.
- Ak chcete zistiť, odkiaľ pochádza text v ovládacom prvku Label1, stačí sa pozrieť na vlastnosť Text vo vzorci. Neexistuje žiadny iný spôsob, ako ovplyvniť text tohto ovládacieho prvku. V tradičnom programovacom nástroji môže každá udalosť zmeny alebo podprogram zmeniť hodnotu označenia z ľubovoľného miesta v programe. To môže sťažovať zisťovanie času a miesta zmeny premennej.
- Ak používateľ zmení ovládací prvok jazdca a potom zmení názor, môže zmeniť hodnotu jazdca na pôvodnú. Bude to akoby sa nič nestalo. Aplikácia bude zobrazovať rovnaké hodnoty ovládacieho prvku ako predtým. Cena za experimentovanie a kladenie otázok „Čo by sa stalo keby?“ je podobne ako v Exceli nulová.
Vo všeobecnosti platí, že ak viete dosiahnuť svoj cieľ pomocou vzorca, je to lepšia cesta. Zapojte mechanizmus vzorcov v službe Power Fx do práce pre vás.
Situácie, kedy je vhodné použiť premenné
Zmeňme našu jednoduchú sčítačku, aby fungovala ako tradičný sčítací stroj s medzisúčtom. Ak vyberiete tlačidlo Pridať pripočítate k medzisúčtu číslo. Ak vyberiete tlačidlo Vymazať, vynulujete medzisúčet.
Zobrazenie | Popis |
---|---|
![]() |
Po spustení aplikácie je celkový prevádzkový počet 0. Červená bodka predstavuje prst používateľa v poli na zadávanie textu, kam používateľ zadá 77. |
![]() |
Používateľ stlačí tlačidlo Pridať. |
![]() |
77 sa pridá k celkovému súčtu. Používateľ znova stlačí tlačidlo Pridať. |
![]() |
77 sa opäť pridá k priebežnému súčtu, čo vedie k 154. Používateľ stlačí tlačidlo Vymazať. |
![]() |
Priebežný súčet sa vynuluje na 0. |
V našom sčítacom systéme používame niečo, čo v Exceli neexistuje – tlačidlo. V tejto aplikácii nemôžete na výpočet medzisúčtu používať iba vzorce, pretože hodnota medzisúčtu závisí od série akcií vykonaných používateľom. Náš medzisúčet musí byť zaznamenávaný a aktualizovaný manuálne. Väčšina programovacích nástrojov uchováva túto informáciu v premennej.
Niekedy však bude potrebné, aby sa premenná v aplikácii správala tak, ako chcete. Pri tomto prístupe však treba vziať do úvahy niekoľko skutočností:
- Medzisúčet musíte aktualizovať manuálne. Nie je možné aktualizovať automatickým prepočítavaním.
- Medzisúčet nie je naďalej možné počítať z hodnôt iných ovládacích prvkov. Bude záležať od toho, koľkokrát používateľ stlačil tlačidlo Pridať a aká hodnota sa nachádzala v ovládacom prvku zadávania textu pri každom stlačení. Vybral používateľ číslo 77 a dvakrát stlačil tlačidlo Pridať alebo pridal čísla 24 a 130? Potom, ako sa vypočíta súčet 154, to už nie je možné určiť.
- Zmeny v súčte môžu pochádzať z rôznych ciest. V tomto príklade je možné súčet aktualizovať tlačidlami Pridať a Vymazať. Ak sa aplikácia nespráva tak, ako ste očakávali, ktoré tlačidlo je príčinou problému?
Použitie globálnej premennej.
Ak chcem vytvoriť sčítací systém, je potrebné stanoviť premennú, ktorá bude obsahovať medzisúčet. Najjednoduchšie premenné v službe Power Fx sú globálne premenné.
Ako fungujú globálne premenné:
- Hodnotu globálnej premennej nastavíte pomocou funkcie Nastaviť. Set( MyVar, 1 ) nastaví globálnu premennú MyVar na hodnotu 1.
- Globálnu premennú použijete odkazom na názov, ktorý ste použili pri funkcii Nastaviť. V tomto prípade premenná MyVar vráti hodnotu 1.
- Globálne premenné môžu obsahovať ľubovoľnú hodnotu vrátane reťazcov, čísel, záznamov a tabuliek.
Zmeňme náš sčítací stroj pomocou globálnej premennej:
Pridajte ovládací prvok zadávania textu s názvom TextInput1 a dve tlačidlá, s názvom Button1 a Button2.
Nastavte vlastnosť Text tlačidla Tlačidlo1 na hodnotu "Pridať" a vlastnosť Text tlačidla Tlačidlo2 na hodnotu "Vymazať".
Ak chcete aktualizovať medzisúčet vždy, keď používateľ stlačí tlačidlo Pridať, nastavte jeho vlastnosť OnSelect na tento vzorec:
Set( RunningTotal, RunningTotal + TextInput1.Text )
Poukazuje na to samotná existencia tohto vzorca RunningTotal ako globálna premenná, ktorá drží číslo z dôvodu operátora +. Na RunningTotal môžete odkazovať kdekoľvek v aplikácii. Kedykoľvek používateľ otvorí túto aplikáciu, RunningTotal má počiatočnú hodnotu prázdnu.
Prvýkrát, keď používateľ stlačí tlačidlo Pridať, spustí sa Nastavenie, RunningTotal sa nastaví na hodnotu RunningTotal + TextInput1.
Ak chcete nastaviť medzisúčet na hodnotu 0 vždy, keď používateľ stlačí tlačidlo Vymazať nastavte vlastnosť OnSelect na tento vzorec:
Súprava (Beží celkom, 0)
Pridajte ovládací prvok Označenie a nastavte vlastnosť Text na hodnotu RunningTotal.
Vzorec sa automaticky prepočíta a zobrazí používateľovi meniacu sa hodnotu RunningTotal podľa toho, ktoré tlačidlá používateľ stlačí.
Zobrazte ukážku aplikácie, v ktorej sme podľa postupu popísaného vyššie, vytvorili sčítací stroj. Zadajte do textového poľa číslo a niekoľkokrát stlačte tlačidlo Pridať. Keď budete hotoví, vráťte sa k tvorbe stlačením klávesu Esc.
Ak chcete zobraziť hodnotu globálnej premennej, vyberte ponuku Súbor a na ľavej table vyberte možnosť Premenné.
Ak chcete zobraziť všetky miesta, kde je premenná definovaná a použitá, vyberte ju.
Typy premenných
Power Fx má dva typy premenných:
Typ premenných | Scope | Description | Funkcie, ktoré vytvárajú |
---|---|---|---|
Globálne premenné | Aplikácia | Najjednoduchšie použitie. Obsahujú číslo, textový reťazec, booleovskú hodnotu, záznam, tabuľku atď., ktoré môžu byť odkazované z ľubovoľného miesta v aplikácii. | Set |
Kolekcie | Aplikácia | Obsahuje tabuľku, na ktorú je možné odkazovať odkiaľkoľvek z aplikácie. Umožňuje upravovať v tabuľke obsah, ktorý nie je nutné nastavovať ako celok. Je možné ju uložiť v lokálnom zariadení a použiť neskôr. | zbierať ClearCollect |
Pri použití v Power Apps existuje tretí typ premennej:
Typ premenných | Scope | Popis | Funkcie, ktoré vytvárajú |
---|---|---|---|
Kontextové premenné | Obrazovka | Skvelé riešenie pri prenose hodnôt, ako napríklad parametrov do procesu v iných jazykoch. Možno odkazovať len z jednej obrazovky. | UpdateContext Navigovať |
Vytvorte a odstráňte premenné
Všetky premenné sa vytvárajú implicitne, keď sa objavia vo funkcii Nastaviť, UpdateContext, Navigácia, Zhromaždiť alebo ClearCollect. Ak chcete premennú a jej typ deklarovať, musíte ju zahrnúť iba do ktorejkoľvek z týchto funkcií kdekoľvek v aplikácii. Žiadna z týchto funkcií nevytvára premenné; vyplňujú premenné iba hodnotami. Nikdy neurčíte premenné explicitne, ako by ste mohli v inom programovacom nástroji, a všetky písania sú implicitné z použitia.
Napríklad môžete mať gombíkové ovládanie pomocou OnSelect vzorec rovný Set( X, 1 ). Tento vzorec zavádza X ako premennú s typom čísla. Môžete použiť X vo vzorcoch ako číslo a táto premenná má hodnotu prázdnu po otvorení aplikácie, ale pred výberom tlačidla. Keď stlačíte tlačidlo, dáte X hodnotu 1.
Ak ste pridali ďalšie tlačidlo a nastavili jeho vlastnosť OnSelect na Set( X, "Hello" ), došlo by k chybe, pretože typ (textový reťazec) sa nezhoduje s predchádzajúcim typom Nastaviť (Číslo). Všetky implicitné definície premennej sa musia dohodnúť na type. Opäť sa to všetko stalo, pretože ste zmienili X vo vzorcoch, nie preto, že by sa niektorý z týchto vzorcov skutočne spustil.
Premennú odstránite odstránením všetkých funkcií Nastaviť, UpdateContext, Navigácia, Zhromaždiť alebo ClearCollect, ktoré implicitne vytvárajú premennú. Bez týchto funkcií premenná neexistuje. Musíte tiež odstrániť všetky odkazy na premennú, pretože spôsobia chybu.
Životnosť a počiatočná hodnota premennej
Počas spustenia aplikácie sú všetky premenné v pamäti. Po zatvorení aplikácie sa hodnoty v premenných stratia.
Obsah premennej môžete uložiť do zdroj údajov pomocou funkcií Záplata alebo Zhromaždiť. Hodnoty môžete tiež ukladať do kolekcií na miestnom zariadení pomocou funkcie SaveData.
Keď používateľ otvorí aplikáciu, počiatočné hodnoty všetkých premenných sú prázdne.
Čítanie premenných
Hodnotu premenných prečítate pomocou ich názvu. Pomocou tohto vzorca môžete napríklad definovať premennú:
Set( Radius, 12 )
Potom môžete jednoducho použiť Polomer kdekoľvek, kde môžete použiť číslo, čo sa nahradí za hodnotu 12:
Pi() * Power( Radius, 2 )
Ak dáte kontextovej premennej rovnaké meno ako globálna premenná alebo kolekcia, má prednosť kontextová premenná. Stále je možné odkazovať na globálnu premennú alebo kolekciu pomocou operátora rozlišovania[@Radius].
Použitie kontextovej premennej (len Power Apps)
Pozrime sa, ako by sme vytvorili sčítací systém namiesto globálnej premennej pomocou kontextovej premennej.
Ako fungujú kontextové premenné:
- Implicitne vytvoríte a nastavíte kontextové premenné pomocou funkcie UpdateContext alebo Navigovať. Keď používateľ spustí aplikáciu, počiatočné hodnoty všetkých kontextových premenných sú prázdne.
- Kontextové premenné aktualizujete pomocou záznamov. V iných programovacích nástrojoch na priradenie bežne používate výraz "=", ako napríklad tu: "x = 1". Pri kontextových ponukách použite výraz { x: 1 }. Ak používate kontextovú premennú, použite jej názov priamo bez syntaxe záznamu.
- Kontextovú premennú môžete nastaviť aj pomocou funkcie Navigovať, čím sa zobrazí obrazovka. Ak vnímate obrazovku ako určitý druh postupu alebo podprogramu, tento prístup sa podobá na odovzdávanie parametrov v iných programovacích nástrojoch.
- Okrem funkcie Navigovať sú ostatné kontextové premenné obmedzené na kontext jednej obrazovky, podľa čoho sú pomenované. Mimo tohto kontextu ich nie je možné použiť.
- Kontextové premenné môžu obsahovať ľubovoľnú hodnotu vrátane reťazcov, čísel, záznamov a tabuliek.
Zmeňme náš sčítací systém pomocou kontextovej premennej:
Pridajte ovládací prvok zadávania textu s názvom TextInput1 a dve tlačidlá, s názvom Button1 a Button2.
Nastavte vlastnosť Text tlačidla Tlačidlo1 na hodnotu "Pridať" a vlastnosť Text tlačidla Tlačidlo2 na hodnotu "Vymazať".
Ak chcete aktualizovať medzisúčet vždy, keď používateľ stlačí tlačidlo Pridať, nastavte jeho vlastnosť OnSelect na tento vzorec:
UpdateContext( { RunningTotal: RunningTotal + TextInput1.Text } )
Poukazuje na to samotná existencia tohto vzorca RunningTotal ako kontextová premenná, ktorá drží číslo z dôvodu operátora +. Na RunningTotal môžete odkazovať kdekoľvek na tejto obrazovke. Kedykoľvek používateľ otvorí túto aplikáciu, RunningTotal má počiatočnú hodnotu prázdnu.
Prvýkrát, keď používateľ stlačí tlačidlo Pridať, spustí sa UpdateContext, RunningTotal sa nastaví na hodnotu RunningTotal + TextInput1.
Ak chcete nastaviť medzisúčet na hodnotu 0 vždy, keď používateľ stlačí tlačidlo Vymazať nastavte vlastnosť OnSelect na tento vzorec:
UpdateContext( { RunningTotal: 0 } )
Opäť sa použije funkcia UpdateContext so vzorcom UpdateContext( { RunningTotal: 0 } ).
Pridajte ovládací prvok Označenie a nastavte vlastnosť Text na hodnotu RunningTotal.
Vzorec sa automaticky prepočíta a zobrazí používateľovi meniacu sa hodnotu RunningTotal podľa toho, ktoré tlačidlá používateľ stlačí.
Zobrazte ukážku aplikácie, v ktorej sme podľa postupu popísaného vyššie, vytvorili sčítací stroj. Zadajte do textového poľa číslo a niekoľkokrát stlačte tlačidlo Pridať. Keď budete hotoví, vráťte sa k tvorbe stlačením klávesu Esc.
Počas prechodu na obrazovku môžete nastaviť hodnotu kontextovej premennej. Je to užitočné na odovzdávanie kontextov a parametrov z jednej obrazovky na druhú. Ak chcete demonštrovať túto techniku, vložte obrazovku, vložte tlačidlo a nastavte jej vlastnosť OnSelect podľa tohto vzorca:
Navigovať( Obrazovka 1, Žiadna, { Celkom beží: -1 000 } )
Keď toto tlačidlo stlačíte, podržte stlačený kláves Alt, aby sa zobrazili obe Screen1 a nastavila sa kontextová premenná RunningTotal na -1000.
Ak chcete zobraziť hodnotu kontextovej premennej, vyberte ponuku Súbor a na ľavej table vyberte možnosť Premenné.
Ak chcete zistiť, kde sa kontextová premenná používa a definuje, vyberte ju.
Používanie kolekcie
Nakoniec sa pozrime na vytváranie sčítacieho systému pomocou kolekcie. Keďže kolekcia obsahuje tabuľku, ktorú je možné jednoducho upravovať, nastavíme sčítací stroj, aby uchovával „papierový záznam“ každej hodnoty, ktorú zadáme.
Ako fungujú kolekcie:
- Kolekcie vytvorte a nastavte pomocou funkcie ClearCollect. Namiesto toho môžete použiť funkciu Zbierať, ale namiesto nahradenia starej premennej bude potrebné vytvoriť ďalšiu premennú.
- Kolekcia je tabuľkou, pretože je to určitý druh zdroja údajov. Ak chcete získať prístup k jednej hodnote v kolekcii, použite funkciu Prvý a z výsledného záznamu extrahujte jedno pole. Ak ste používali jednu hodnotu s funkciou ClearCollect, stane sa poľom Hodnota, ako v tomto príklade:
First(Názov premennej).Value
Opätovne vytvorme sčítací systém pomocou kolekcie:
Pridajte ovládací prvok zadávania textu s názvom TextInput1 a dve tlačidlá, s názvom Tlačidlo1 a Tlačidlo2.
Nastavte vlastnosť Text tlačidla Tlačidlo1 na hodnotu "Pridať" a vlastnosť Text tlačidla Tlačidlo2 na hodnotu "Vymazať".
Ak chcete aktualizovať medzisúčet vždy, keď používateľ stlačí tlačidlo Pridať, nastavte jeho vlastnosť OnSelect na tento vzorec:
Collect( PaperTape, TextInput1.Text )
Poukazuje na to samotná existencia tohto vzorca PaperTape ako zbierka, ktorá obsahuje tabuľku textových reťazcov s jedným stĺpcom. Na PaperTape môžete odkazovať kdekoľvek v tejto aplikácii. Kedykoľvek používateľ otvorí túto aplikáciu, PaperTape bude predstavovať prázdnu tabuľku.
Po spustení tohto vzorca sa pridá nová hodnota na koniec zbierky. Keďže pridávame jednu hodnotu, funkcia Zhromaždiť ju automaticky umiestni do tabuľky s jedným stĺpcom a stĺpec nazve Hodnota, čo použijeme neskôr.
Ak chcete vymazať papierovú pásku po stlačení tlačidla Vymazať používateľom, nastavte vlastnosť OnSelect na tento vzorec:
Priehľadné (papierová páska)
Ak chcete zobraziť medzisúčet, pridajte označenie a do jeho vlastnosti Text nastavte tento vzorec:
Súčet (papierová páska, hodnota)
Ak chcete spustiť sčítací systém, stlačte kláves F5 a otvorte ukážku. Potom zadajte čísla do ovládacieho prvku zadávania textu a stlačte tlačidlá.
Ak sa chcete vrátiť do predvoleného pracovného priestoru, stlačte kláves Esc.
Ak chcete zobraziť papierovú pásku, vložte ovládací prvok Tabuľka údajov a nastavte jej vlastnosť Položky na tento vzorec:
Papierová páska
Na pravej table vyberte možnosť Úprava polí a potom stlačte Pridať pole, vyberte stĺpec Hodnota a potom na zobrazenie stlačte možnosť Pridať.
Ak chcete zobraziť hodnoty v kolekcii, vyberte položku Kolekcie v ponuke Súbor.
Ak chcete ukladať a obnoviť kolekciu, pridajte dva ďalšie ovládacie prvky tlačidiel a ich vlastnosť Text nastavte na Načítať a Uložiť. Nastavte vlastnosť OnSelect tlačidla Načítať na tento vzorec:
Clear( PaperTape ); LoadData( PaperTape, "StoredPaperTape", true )
Najprv je potrebné vymazať kolekciu, pretože funkcia LoadData pripojí uložené hodnoty na koniec kolekcie.
Vlastnosť OnSelect tlačidla Uložiť nastavte na tento vzorec:
SaveData (PaperTape, "StoredPaperTape")
Zobrazte ukážku stlačením klávesu F5, zadajte čísla do ovládacieho prvku zadávania textu a stlačte tlačidlá. Stlačte tlačidlo Uložiť. Zavrite a znova načítajte aplikáciu a znova načítajte kolekciu stlačením tlačidla Načítať.