Promenljive
Belešku
Microsoft Power Fx je novo ime za jezik formula za aplikacije sa podlogom. Ovi članci su u izradi dok izdvajamo jezik iz aplikacija na platnu, integrišemo ga sa drugim Microsoft Power Platform proizvodima i činimo ga dostupnim u vidu otvorenog koda. Počnite sa Microsoft Power Fx pregledom za uvod u jezik.
Ako ste koristili drugu alatku za programiranje, kao što je Visual Basic ili JavaScript, možda ćete pitati: Gde su promenljive? Microsoft Power Fx e malo drugačiji i zahteva drugačiji pristup. Umesto da posegnete za promenljivom kada pišete formulu, zapitajte se: Šta bih uradio u unakrsnoj tabeli?
U drugim alatkama možda ste izričito izvršili izračunavanje i sačuvali rezultat u promenljivu. Međutim, Power Fx i Excel automatski izračunavaju formule kako se ulazni podaci menjaju, tako da obično ne morate da kreirate i ažurirate promenljive. Ako primenite ovaj pristup kad god je to moguće, možete lakše da kreirate, razumete i održavate svoju aplikaciju.
U nekim slučajevima, moraćete da koristite promenljive u Power Fx, koji proširuje model programa Excel tako što dodaje formule ponašanja. Ove formule se pokreću kada, na primer, korisnik izabere dugme. U formulama ponašanja, često je korisno postaviti promenljivu koja će se koristiti u drugim formulama.
Generalno izbegavajte korišćenje promenljivih. Ali ponekad samo promenljiva može omogućiti iskustvo koje želite. Promenljive se implicitno kreiraju i unose kada se pojave u funkcijama koje postavljaju njihove vrednosti.
Prevod programa Excel u Power Fx
Excel
Pogledajmo kako funkcioniše Excel. Ćelija može da sadrži vrednost, kao što je broj ili niska, ili formula koja se zasniva na vrednostima drugih ćelija. Nakon što korisnik unese drugu vrednost u ćeliju, Excel automatski preračunava sve formule koje zavise od nove vrednosti. Ne morate raditi bilo kakvo programiranje da biste omogućili ovo ponašanje.
U sledećem primeru ćelija A3 je postavljena na formulu A1+A2. Ako se A1 ili A2 promeni, A3 automatski preračunava da bi se odrazile promene. Ovo ponašanje ne zahteva nikakvo kodiranje izvan same formule.
Excel nema promenljive. Vrednost ćelije koja sadrži formulu menja se na osnovu njenog unosa, ali nema načina da se setite rezultata formule i da je smestite u ćeliju ili bilo gde drugde. Ako promenite vrednost ćelije, može se promeniti celokupna tabela i sve prethodno izračunate vrednosti se gube. Korisnik programa Excel može da kopira i nalepi ćelije, ali to je pod ručnom kontrolom korisnika i nije moguće pomoću formula.
Power Fx
Logika koju kreirate u jeziku Power Fx ponaša se vrlo slično programu Excel. Umesto da ažurirate ćelije, možete da dodajete kontrole gde god želite na ekranu i da ih imenujete za upotrebu u formulama.
Na primer, u usluzi Power Apps možete da ponovite Excel ponašanje u aplikaciji dodavanjem kontrole oznake pod imenom Label1 i dve kontrole unosa teksta pod imenom TextInput1 i TextInput2. Ako zatim podesite Tekst osobinu Label1 na TektInput1.Tekt + TektInput2.Tekt , uvek će prikazati zbir bilo kog broja koji su u TextInput1i TextInput2 automatski.
Imajte u vidu da je izabrana kontrola Label1 i da prikazuje svoju formulu Text u traci sa formulama na vrhu ekrana. Ovde nalazimo formulu TektInputKSNUMKS.Tekt + TektInputKSNUMKS.Tekt. Ova formula kreira zavisnost između ovih kontrola, baš kao što se stvaraju zavisnosti između ćelija u Excel radnoj svesci. Promenimo vrednost TextInput1:
Formula za Label1 se automatski preračunava, pokazujući novu vrednost.
U usluzi Power Fx, možete koristiti formule da odredite ne samo primarnu vrednost kontrole već i svojstva kao što je formatiranje. U sledećem primeru formula za svojstvo oznake Color automatski prikazuje negativne vrednosti crvenom bojom. Funkcija Ako bi trebalo da vam izgleda poznato iz programa Excel:
If( Value(Label1.Text) < 0, Color.Red, Color.Black )
Možete koristiti formule za najrazličitije scenarije:
- Korišćenjem GPS položaja uređaja, kontrola mape može da prikaže vašu trenutnu lokaciju sa formulom koja koristi Location.Latitude i Location.Longitude. Dok se budete kretali, mapa će automatski pratiti vašu lokaciju.
- Drugi korisnici mogu da ažuriraju izvore podataka. Na primer, ostali članovi tima mogu da ažuriraju stavke u SharePoint listi. Kada osvežite izvor podataka, sve zavisne formule se automatski preračunavaju kako bi odražavale ažurirane podatke. Nastavljajući ovaj primer, možete da podesite svojstvo galerije Items na formulu Filter (SharePointList), koja će automatski prikazati novi filtrirani skup zapisa.
Prednosti
Korišćenje formula za izradu aplikacija ima brojne prednosti:
- Ako poznajete Excel, onda znate Power Fx. Model i jezik formule su isti.
- Ako ste koristili druge alatke za programiranje, razmislite o tome koliko će koda biti potrebno za postizanje ovih primera. U programskom jeziku Visual Basic, treba da napišete rukovalac događajem za događaj promene na svakoj kontroli unosa teksta. Kôd za obavljanje proračuna u svakom od njih je suvišan i može da izađe iz sinhronizacije ili ćete morati da napišete zajedničku pomoćnu rutinu. U usluzi Power Fx, sve ste to postigli jednom formulom u jednom redu.
- Da biste razumeli odakle dolazi tekst za Label1, znate tačno gde da pogledate: formula u svojstvu Text. Ne postoji drugi način da se utiče na tekst ove kontrole. U tradicionalnom programu za programiranje, svaki rukovalac događajem ili pomoćnom rutinom može promeniti vrednost oznake, sa bilo kog mesta u programu. Ovo može otežati pronalaženje vremena i mesta gde je izmenjena promenljiva.
- Ako korisnik promeni kontrolu klizača, a zatim se predomisli, klizač može da vrati na originalnu vrednost. I kao da se ništa nikada nije promenilo: aplikacija pokazuje iste kontrolne vrednosti kao i ranije. Ne postoje posledice eksperimentisanja i postavljanja pitanja „šta ako“, mada ih u programu Excel nema.
Uopšteno, ako možete postići efekat koristeći formulu, biće vam bolje. Pustite da sistem formula u jeziku Power Fx radi za vas.
Treba da znate kada se koriste promenljive
Promenimo naš jednostavni dodavač koji deluje kao staromodna mašina za dodavanje, sa tekućim ukupnim iznosom. Ako izaberete dugme Dodaj, dodaćete broj tekućem ukupnom iznosu. Ako izaberete dugme Obriši, resetovaćete tekućem ukupni iznos na nulu.
Prikaz | Opis |
---|---|
![]() |
Kada se aplikacija pokrene, tekući ukupni iznos je 0. Crvena tačka predstavlja prst korisnika u polju za unos teksta, gde korisnik unosi 77. |
![]() |
Korisnik bira dugme Dodaj. |
![]() |
Tekućem ukupnom iznosu se dodaje 77. Korisnik ponovo bira dugme Dodaj. |
![]() |
Ponovo se tekućem ukupnom iznosu dodaje 77, što daje rezultat 154. Korisnik bira dugme Obriši. |
![]() |
Tekući ukupan iznos je resetovan na 0. |
Naša mašina za dodavanje koristi nešto što ne postoji u programu Excel: dugme. U ovoj aplikaciji ne možete koristiti samo formule za izračunavanje ukupnog iznosa jer njegova vrednost zavisi od niza radnji koje korisnik preduzme. Umesto toga, naš ukupan iznos se mora beležiti i ažurirati ručno. Većina alatki za programiranje skladišti ove informacije u promenljivim.
Ponekad će vam biti potrebna promenljiva da bi se vaša aplikacija ponašala onako kako želite. Ali pristup dolazi sa upozorenjima:
- Morate ručno ažurirati tekući ukupan iznos. Automatsko preračunavanje to neće učiniti za vas.
- Tekući ukupan iznos više ne može da se izračuna na osnovu vrednosti drugih kontrola. To zavisi od toga koliko je puta korisnik izabrao dugme Dodaj i koja vrednost je bila u kontroli unosa teksta svaki put. Da li je korisnik uneo 77 i izabrao Dodaj dva puta ili je odredio 24 i 130 za svako dodavanje? Ne možete da utvrdite razliku nakon što je ukupan iznos dostigao 154.
- Promene u ukupnom iznosu mogu doći sa različitih putanja. U ovom primeru oba dugmeta, Dodaj i Obriši, mogu da ažuriraju ukupan iznos. Ako se aplikacija ne ponaša onako kako očekujete, koji taster uzrokuje problem?
Korišćenje globalne promenljive
Da bismo kreirali našu mašinu za dodavanje, potrebna nam je promenljiva koja će držati tekući ukupan iznos. Najjednostavnije promenljive sa kojima se može raditi u Power Fx su globalne promenljive.
Kako funkcionišu globalne promenljive:
- Vrednost globalne promenljive postavljate pomoću funkcije Set. Set( MyVar, 1 ) postavlja globalnu promenljivu MyVar na vrednost 1.
- Koristite globalnu promenljivu referenciranjem naziva koji se koristi sa funkcijom Set. U ovom slučaju, MyVar vraća 1.
- Globalne promenljive mogu da sadrže bilo koju vrednost, uključujući niske, brojeve, zapise i tabele.
Hajde da obnovimo našu mašinu za dodavanje koristeći globalnu promenljivu:
Dodajte kontrolu unosa teksta pod nazivom TextInput1 i dva dugmeta pod nazivom Button1 i Button2.
Podesite svojstvo Text za Button1 na „Dodaj“ i postavite svojstvo Text za Button2 na „Obriši“.
Da biste ažurirali rastući zbir kad god korisnik izabere dugme Dodaj, podesite njegovo svojstvo OnSelect prema ovoj formuli:
Set( RunningTotal, RunningTotal + TektInputKSNUMKS.Tekt )
Samo postojanje ove formule utvrđuje Tekući ukupan iznos kao globalnu promenljivu koja ima broj zbog + operatora. Možete da referencirate Tekući ukupan iznos bilo gde u aplikaciji. Kad god korisnik otvori ovu aplikaciju, Tekući ukupan iznos ima početnu vrednost prazno.
Prvi put kada korisnik izabere dugme Dodaj i pokrene se Podesi, Tekući ukupan iznos se postavlja na vrednost Tekući ukupan iznos + Unos teksta 1.
Da biste podesili rastući zbir na 0 kad god korisnik izabere dugme Obriši, podesite njegovo svojstvo OnSelect prema ovoj formuli:
Set( RunningTotal, 0 )
Dodajte kontrolu Oznaka i podesite njeno svojstvo Text na RunningTotal:
Ova formula će se automatski preračunati i korisniku pokazati vrednost Tekući ukupan iznos kako se bude menjala na osnovu tastera koje korisnik izabere.
Pregledajte aplikaciju a naša mašina za dodavanje je spremna kao što je gore opisano. Unesite broj u okvir za tekst i pritisnite dugme Dodaj nekoliko puta. Kada budete spremni, vratite se na iskustvo kreiranja sadržaja pomoću tastera Esc.
Da biste prikazali vrednost globalne promenljive, izaberite meni Datoteka i izaberite Promenljive u levom oknu.
Da biste prikazali sva mesta na kojima se promenljiva definiše i koristi, izaberite je.
Tipovi promenljivih
Power Fx ima dve vrste promenljivih:
Tip promenljivih | Scope | Opis | Funkcije koje uspostavljaju |
---|---|---|---|
Globalne promenljive | Aplikacija | Najjednostavnije za upotrebu. Sadrži broj, tekstualnu nisku, logičku vrednost, zapis, tabelu itd. koji mogu biti reference sa bilo kog mesta u aplikaciji. | Postavite |
Kolekcije | Aplikacija | Sadrži tabelu na koju se može referencirati bilo gde u aplikaciji. Omogućava izmenu sadržaja tabele, a ne postavljanje u celini. Može se sačuvati na lokalnom uređaju za kasniju upotrebu. |
Prikupljanje Preuzmite |
Kada se koristi u usluzi Power Apps, postoji treći tip promenljive:
Tip promenljivih | Scope | Opis | Funkcije koje uspostavljaju |
---|---|---|---|
Promenljive konteksta | Ekran | Izvrsno za prenošenje vrednosti na ekran, slično parametrima u proceduri na drugim jezicima. Može se referencirati samo sa jednog ekrana. |
UpdateContext Kretanje |
Kreiranje i uklanjanje promenljivih
Sve promenljive se kreiraju implicitno kada se pojave u funkciji Set, UpdateContext, Navigate, Collect ili ClearCollect. Da biste proglasili promenljivu i njen tip, treba samo da je uključite u bilo koju od ovih funkcija bilo gde u vašoj aplikaciji. Nijedna od ovih funkcija ne kreira promenljive; samo popunjavaju promenljive sa vrednostima. Nikada ne deklarišete promenljive izričito kao što biste mogli u drugom alatu za programiranje, a svako kucanje je implicitno od upotrebe.
Na primer, možda imate kontrolu dugmeta sa formulom OnSelect jednako je Set( X, 1 ). Ova formula uspostavlja X kao promenljivu sa tipom broja. Možete koristiti X u formulama kao broj, a ta promenljiva ima vrednost prazno nakon što otvorite aplikaciju, ali pre nego što izaberete dugme. Kada izaberete dugme, dajete X vrednost 1.
Ako ste dodali još jedno dugme i podesili njegovo svojstvo OnSelect na Set( X, "Hello" ), došlo bi do greške jer tip (tekstualna niska) ne odgovara tipu u prethodnoj funkciji Set (broj). Sve implicitne definicije promenljive moraju se slagati po tipu. Dakle, se sve ovo dogodilo jer ste pomenuli X u formulama, a ne zato što se bilo koja od tih formula zapravo izvodila.
Uklonite promenljivu tako što ćete ukloniti sve funkcije Set, UpdateContext, Navigate, Collect ili ClearCollect koje implicitno uspostavljaju promenljivu. Bez ovih funkcija, promenljiva ne postoji. Morate ukloniti i sve reference na promenljivu jer će one prouzrokovati grešku.
Vek trajanja i početna vrednost promenljive
Sve promenljive se čuvaju u memoriji dok aplikacija radi. Nakon što se aplikacija zatvori, vrednosti zadržanih promenljivih se gube.
Sadržaj promenljive možete da smestite u izvor podataka koristeći funkcije Patch ili Collect. Takođe možete da sačuvate vrednosti u kolekcijama na lokalnom uređaju koristeći funkciju SaveData.
Kada korisnik otvori aplikaciju, sve promenljive imaju početnu vrednost prazno.
Čitanje promenljivih
Naziv promenljive možete da koristite za čitanje njene vrednosti. Na primer, možete definisati promenljivu ovom formulom:
Set( Radius, 12 )
Tada jednostavno možete da koristite Radijus bilo gde da možete da koristite broj, i on će biti zamenjen sa 12:
Pi() * Power( Radius, 2 )
Ako date promenljivoj konteksta isti naziv kao globalnoj promenljivoj ili kolekciji, promenljiva konteksta ima prednost. Međutim, i dalje možete referencirati globalnu promenljivu ili kolekciju ako koristite operator razjašnjavanja[@Radius].
Korišćenje promenljive konteksta (samo Power Apps)
Pogledajmo kako bi bila kreirana naša mašina za dodavanje pomoću promenljive konteksta umesto globalne promenljive.
Kako funkcionišu promenljive konteksta:
- Implicitno uspostavite i postavite promenljive konteksta koristeći funkciju UpdateContext ili Navigate. Kada se aplikacija pokrene, početna vrednost svih promenljivih konteksta je prazno.
- Ažurirajte promenljive konteksta sa zapisima. U ostalim alatkama za programiranje obično koristite „=“ za dodelu, kao u „x = 1“. Za promenljive konteksta koristite { x: 1 } umesto toga. Kada koristite promenljivu konteksta, koristite njeno ime direktno bez sintakse zapisa.
- Takođe možete postaviti promenljivu konteksta kada koristite funkciju Navigate za prikazivanje ekrana. Ako na ekran mislite kao na neku vrstu postupka ili pomoćne rutine, ovaj pristup podseća na parametre koji se prenose u druge alate za programiranje.
- Osim ekrana Navigate, promenljive konteksta su ograničene na kontekst jednog ekrana, po kome su i dobile ime. Ne možete ih koristiti ili postavljati izvan ovog konteksta.
- Promenljive konteksta mogu da sadrže bilo koju vrednost, uključujući niske, brojeve, zapise i tabele.
Hajde da obnovimo našu mašinu za dodavanje koristeći promenljivu konteksta:
Dodajte kontrolu unosa teksta pod nazivom TextInput1 i dva dugmeta pod nazivom Button1 i Button2.
Podesite svojstvo Text za Button1 na „Dodaj“ i postavite svojstvo Text za Button2 na „Obriši“.
Da biste ažurirali rastući zbir kad god korisnik izabere dugme Dodaj, podesite njegovo svojstvo OnSelect prema ovoj formuli:
UpdateContext( { RunningTotal: RunningTotal + TektInputKSNUMKS.Tekt } )
Samo postojanje ove formule utvrđuje Tekući ukupan iznos kao promenljivu konteksta koja ima broj zbog + operatora. Možete da referencirate RunningTotal bilo gde na ovom ekranu. Kad god korisnik otvori ovu aplikaciju, Tekući ukupan iznos ima početnu vrednost prazno.
Prvi put kada korisnik izabere dugme Dodaj i pokrene se UpdateContext, RunningTotal se postavlja na vrednost RunningTotal + TextInput1.
Da biste podesili rastući zbir na 0 kad god korisnik izabere dugme Obriši, podesite njegovo svojstvo OnSelect prema ovoj formuli:
UpdateContext( { RunningTotal: KSNUMKS } )
Dakle, UpdateContext se koristi sa formulom UpdateContext( { RunningTotal: 0 } ).
Dodajte kontrolu Oznaka i podesite njeno svojstvo Text na RunningTotal:
Ova formula će se automatski preračunati i korisniku pokazati vrednost Tekući ukupan iznos kako se bude menjala na osnovu tastera koje korisnik izabere.
Pregledajte aplikaciju a naša mašina za dodavanje je spremna kao što je gore opisano. Unesite broj u okvir za tekst i pritisnite dugme Dodaj nekoliko puta. Kada budete spremni, vratite se na iskustvo kreiranja sadržaja pomoću tastera Esc.
Tokom navigacije do ekrana možete postaviti vrednost promenljive konteksta. Ovo je korisno za prenošenje „konteksta“ ili „parametara“ sa jednog ekrana na drugi. Da biste demonstrirali ovu tehniku, umetnite ekran, umetnite dugme i podesite svojstvo OnSelect prema ovoj formuli:
Navigate( Screen1, None, { RunningTotal: -1000 } )
Držite pritisnut taster Alt dok birate ovo dugme da biste prikazali Screen1 i podesili promenljivu konteksta RunningTotal na -1000.
Da biste prikazali vrednost promenljive konteksta, izaberite meni Datoteka, a zatim izaberite Promenljive u levom oknu.
Da biste prikazali gde se promenljiva konteksta definiše i koristi, izaberite je.
Korišćenje kolekcije
Na kraju pogledajmo kreiranje naše mašine za dodavanje sa kolekcijom. Budući da kolekcija sadrži tabelu koju je lako izmeniti, napravićemo da ova mašina za dodavanje zadrži „papirnu traku“ svake vrednosti onako kako su unete.
Kako rade kolekcije:
- Kreirajte i postavite kolekcije koristeći funkciju ClearCollect. Umesto nje možete koristiti funkciju Collect, ali će efektivno biti potrebna još jedna promenljiva umesto da se zameni stara.
- Zbirka je vrsta izvora podataka i samim tim je tabela. Da biste pristupili jedinstvenoj vrednosti u kolekciji, koristite funkciju First i izdvojite jedno polje iz rezultujućeg zapisa. Ako ste koristili jednu vrednost sa ClearCollect, ovo će biti polje Value, kao u ovom primeru:
First(VariableName). Vrednost
Obnovimo našu mašinu za dodavanje koristeći kolekciju:
Dodajte kontrolu Unos teksta pod nazivom TextInput1 i dva dugmeta pod nazivom Button1 i Button2.
Podesite svojstvo Text za Button1 na „Dodaj“ i postavite svojstvo Text za Button2 na „Obriši“.
Da biste ažurirali rastući zbir kad god korisnik izabere dugme Dodaj, podesite njegovo svojstvo OnSelect prema ovoj formuli:
Collect( PaperTape, TextInput1.Tekt )
Samo postojanje ove formule određuje PaperTape kao zbirku koja sadrži tabelu tekstualnih niski sa jednom kolonom. Možete da referencirate PaperTape bilo gde u aplikaciji. Kad god korisnik otvori ovu aplikaciju, PaperTape je prazna tabela.
Kada se ova formula pokrene, dodaje novu vrednost na kraj kolekcije. Zato što dodajemo jedinstvenu vrednost, Collect je automatski postavlja u tabelu sa jednom kolonom, a naziv kolone je Vrednost, i koristićete ga kasnije.
Da biste obrisali papirnu traku kada korisnik izabere dugme Obriši, podesite njegovo svojstvo OnSelect prema ovoj formuli:
Jasno (PaperTape)
Da biste prikazali tekući ukupan iznos, dodajte oznaku i podesite svojstvo Text prema ovoj formuli:
Suma (PaperTape, vrednost)
Da biste pokrenuli mašinu za dodavanje, pritisnite F5 da biste otvorili Pregled, unesite brojeve u kontrolu unosa teksta i izaberite dugmad.
Da biste se vratili na podrazumevani radni prostor, pritisnite taster Esc.
Da biste prikazali papirnu traku, umetnite kontrolu Tabela podataka i podesite njeno svojstvo Items prema ovoj formuli:
Papirna traka
U desnom oknu izaberite Uredi polja, a zatim izaberite Dodaj polje, izaberite kolonu Vrednost, a zatim Dodaj da biste je prikazali.
Da biste videli vrednosti u svojoj kolekciji, izaberite Kolekcije u meniju Datoteka.
Da biste sačuvali i preuzeli svoju kolekciju, dodajte dve dodatne kontrole dugmadi i podesite njihova svojstva Text na Učitaj i Sačuvaj. Podesite svojstvo OnSelect dugmeta Učitaj prema ovoj formuli:
Clear( PaperTape ); LoadData (PaperTape, "StoredPaperTape", istina)
Prvo morate da obrišete kolekciju zato što će LoadData dodati sačuvane vrednosti na kraj kolekcije.
Podesite svojstvo OnSelect dugmeta Sačuvaj prema ovoj formuli:
SaveData( PaperTape, "StoredPaperTape")
Ponovo pregledajte pritiskom na taster F5, unesite brojeve u kontrolu unosa teksta i izaberite dugmad. Izaberite dugme Sačuvaj. Zatvorite i ponovo učitajte aplikaciju i izaberite dugme Učitaj za ponovno učitavanje kolekcije.