Делите путем


Променљиве

Белешка

Microsoft Power Fx је ново име за језик формула за апликације са подлогом. Ови чланци су у изради док издвајамо језик из апликација на платну, интегришемо га са другим Microsoft Power Platform производима и чинимо га доступним у виду отвореног кода. Почните са Microsoft Power Fx прегледом за увод у језик.

Ако сте користили другу алатку за програмирање, као што је Visual Basic или JavaScript, можда ћете питати: Где су променљиве? Microsoft Power Fx е мало другачији и захтева другачији приступ. Уместо да посегнете за променљивом када пишете формулу, запитајте се: Шта бих урадио у унакрсној табели?

У другим алаткама можда сте изричито извршили израчунавање и сачували резултат у променљиву. Међутим, Power Fx и Excel аутоматски израчунавају формуле како се улазни подаци мењају, тако да обично не морате да креирате и ажурирате променљиве. Ако примените овај приступ кад год је то могуће, можете лакше да креирате, разумете и одржавате своју апликацију.

У неким случајевима, мораћете да користите променљиве у Power Fx, који проширује модел програма Excel тако што додаје формуле понашања. Овре формуле се покрећу када, на пример, корисник изабере дугме. У формулама понашања, често је корисно поставити променљиву која ће се користити у другим формулама.

Генерално избегавајте коришћење променљивих. Али понекад само променљива може омогућити искуство које желите. Променљиве се имплицитно креирају и уносе када се појаве у функцијама које постављају њихове вредности.

Превод програма Excel у Power Fx

Excel

Погледајмо како функционише Excel. Ћелија може да садржи вредност, као што је број или низ, или формула која се заснива на вредностима других ћелија. Након што корисник унесе другу вредност у ћелију, Excel аутоматски прерачунава све формуле које зависе од нове вредности. Не морате радити било какво програмирање да бисте омогућили ово понашање.

У следећем примеру ћелија A3 је постављена на формулу A1+A2. Ако се A1 или A2 промени, A3 аутоматски прерачунава да би се одразиле промене. Ово понашање не захтева никакво кодирање изван саме формуле.

Анимација поновног израчунавања збира два броја у програму Excel.

Excel нема променљиве. Вредност ћелије која садржи формулу мења се на основу њеног уноса, али нема начина да се сетите резултата формуле и да је сместите у ћелију или било где другде. Ако промените вредност ћелије, може се променити целокупна табела и све претходно израчунате вредности се губе. Корисник програма Excel може да копира и налепи ћелије, али то је под ручном контролом корисника и није могуће помоћу формула.

Power Fx

Логика коју креирате у језику Power Fx понаша се врло слично програму Excel. Уместо да ажурирате ћелије, можете да додајете контроле где год желите на екрану и да их именујете за употребу у формулама.

На пример, у услузи Power Apps можете да поновите Excel понашање у апликацији додавањем контроле ознаке под именом Label1 и две контроле уноса текста под именом TextInput1 и TextInput2. Ако затим подесите Текст особину Label1 на TektInput1.Тект + TektInput2.Тект , увек ће приказати збир било ког броја који су у TextInput1 и TextInput2 аутоматски.

Израчунавање збира два броја у Power Fx.

Имајте у виду да је изабрана контрола Ознака 1 и да приказује своју формулу Текст у траци са формулама на врху екрана. Овде налазимо формулу ТектИнпутКСНУМКС.Тект + ТектИнпутКСНУМКС.Тект. Ова формула ствара зависност између ових контрола, баш као што се стварају зависности између ћелија у Excel радној свесци. Променимо вредност Унос текста 1:

Анимација израчунавања збира два броја у Power Fx.

Формула за Ознака 1 се аутоматски прерачунава, показујући нову вредност.

У Power Fx, можете користити формуле да одредите не само примарну вредност контроле већ и својства као што је форматирање. У следећем примеру формула за својство ознаке Боја аутоматски приказује негативне вредности црвеном бојом. Функција Ако би требало да вам изгледа познато из програма Excel:

If( Value(Label1.Text) < 0, Color.Red, Color.Black )

Анимација условног форматирања.

Можете користити формуле за најразличитије сценарије:

  • Коришћењем GPS положаја уређаја, контрола мапе може да прикаже вашу тренутну локацију са формулом која користи Location.Latitude и Location.Longitude. Док се крећете, мапа аутоматски прати вашу локацију.
  • Други корисници могу да се ажурирају извори података. На пример, остали чланови тима могу да ажурирају ставке у SharePoint листи. Када освежите извор података, све зависне формуле се аутоматски прерачунавају како би одражавале ажуриране податке. Настављајући овај пример, можете да подесите својство галерије Ставке на формулу Филтер (SharePointList), која ће аутоматски приказати нови Филтерирани скуп записа.

Предности

Коришћење формула за израду апликација има бројне предности:

  • Ако познајете Excel, онда знате Power Fx. Модел и језик формуле су исти.
  • Ако сте користили друге алатке за програмирање, размислите о томе колико ће кода бити потребно за постизање ових примера. У програму Visual Basic, треба да напишете руковалац догађајем за догађај промене на свакој контроли уноса текста. Кôд за обављање прорачуна у сваком од њих је сувишан и може да изађе из синхронизације или ћете морати да напишете заједничку помоћну рутину. У Power Fx, све сте то постигли једном формулом у једном реду.
  • Да бисте разумели одакле долази текст за Ознака 1, знате тачно где да погледате: формула у својству Текст. Не постоји други начин да се утиче на текст ове контроле. У традиционалном програму за програмирање, сваки руковалац догађајем или помоћном рутином може променити вредност ознаке, са било ког места у програму. Ово може отежати проналажење времена и места где је промењена променљива.
  • Ако корисник промени контролу клизача, а затим се предомисли, клизач може да врати на оригиналну вредност. И као да се ништа никада није променило: апликација показује исте контролне вредности као и раније. Не постоје последице експериментисања и постављања питања „шта ако“, мада их у програму Excel нема.

Уопштено, ако можете постићи ефекат користећи формулу, биће вам боље. Пустите да систем формула у језику Power Fx ради за вас.

Треба да знате када се користе променљиве

Променимо наш једноставни додавач који делује као старомодна машина за додавање, са текућим укупним износом. Ако изаберете дугме Додај, додаћете број текућем укупном износу. Ако изаберете дугме Обриши, ресетоваћете текућем укупни износ на нулу.

Приказ Опис
Апликација са контролом уноса текста, ознаком и два дугмета. Када се апликација покрене, текући укупни износ је 0.

Црвена тачка представља прст корисника у пољу за унос текста, где корисник уноси 77.
Контрола уноса текста садржи 77 и притиска се дугме Додај. Корисник бира дугме Додај.
Укупан збир је 77, а њему се додаје још 77. Текућем укупном износу се додаје 77.

Корисник поново бира дугме Додај.
Укупни износ је 154 пре брисања. Поново се текућем укупном износу додаје 77, што даје резултат 154.

Корисник бира дугме Обриши.
Укупан износ је обрисан. Текући укупан износ је ресетован на 0.

Наша машина за додавање користи нешто што не постоји у програму Excel: дугме. У овој апликацији не можете користити само формуле за израчунавање укупног износа јер његова вредност зависи од низа радњи које корисник предузме. Уместо тога, наш укупан износ се мора бележити и ажурирати ручно. Већина алатки за програмитање складишти ове информације у променљивим.

Понекад ће вам бити потребна променљива да би се ваша апликација понашала онако како желите. Али приступ долази са упозорењима:

  • Морате ручно ажурирати текући укупан износ. Аутоматско прерачунавање то неће учинити за вас.
  • Текући укупан износ више не може да се израчуна на основу вредности других контрола. То зависи од тога колико је пута корисник изабрао дугме Додај и која вредност је била у контроли уноса текста сваки пут. Да ли је корисник унео 77 и изабрао Додај два пута или је одредио 24 и 130 за свако додавање? Не можете да утврдите разлику након што је укупан износ достигао 154.
  • Промене у укупном износу могу доћи са различитих путања. У овом примеру оба дугмета, Додај и Обриши, могу да ажурирају укупан износ. Ако се апликација не понаша онако како очекујете, који тастер узрокује проблем?

Коришћење глобалне променљиве

Да бисмо креирали нашу машину за додавање, потребна нам је променљива која ће држати текући укупан износ. Најједноставније променљиве са којима се може радити у Power Fx су глобалне променљиве.

Како функционишу глобалне променљиве:

  • Вредност глобалне променљиве постављате помоћу функције Подеси. Сет ( МyВар, 1 ) поставља глобалну променљиву МyВар на вредност 1.
  • Користите глобалну променљиву референцирањем назива који се користи са функцијом Подеси. У овом случају, MyVar враћа 1.
  • Глобалне променљиве могу да садрже било коју вредност, укључујући ниске, бројеве, записе и табеле.

Хајде да обновимо нашу машину за додавање користећи глобалну променљиву:

  1. Додајте контролу уноса текста под називом Унос текста 1 и два дугмета под називом Дугме1 и Дугме2.

  2. Подесите својство Text за Button1 на „Додај“ и поставите својство Text за Button2 на „Обриши“.

  3. Да бисте ажурирали растући збир кад год корисник изабере дугме Додај, подесите његово својство OnSelect према овој формули:

    Сет ( РуннингТотал, РуннингТотал + ТектИнпутКСНУМКС.Тект )

    Само постојање ове формуле утврђује Текући укупан износ као глобалну променљиву која има број због + оператера. Можете да референцирате Текући укупан износ било где у апликацији. Кад год корисник отвори ову апликацију, Текући укупан износ има почетну вредност празно.

    Први пут када корисник изабере дугме Додај и покрене се Подеси, Текући укупан износ се поставља на вредност Текући укупан износ + Унос текста 1.

    Својство OnSelect дугмета „Додај“ се поставља на функцију Set.

  4. Да бисте подесили растући збир на 0 кад год корисник изабере дугме Обриши, подесите његово својство OnSelect према овој формули:

    Сет ( РуннингТотал, 0 )

    Својство OnSelect дугмета „Обриши“ се поставља на функцију Set.

  5. Додајте контролу Ознака и подесите њено својство Text на RunningTotal:

    Ова формула ће се аутоматски прерачунати и кориснику показати вредност Текући укупан износ како се буде мењала на основу тастера које корисник изабере.

    Својство Text за ознаку се поставља на назив променљиве.

  6. Прегледајте апликацију а наша машина за додавање је спремна као што је горе описано. Унесите број у оквир за текст и притисните дугме Додај неколико пута. Када будете спремни, вратите се на искуство стварања аутора помоћу тастера Esc.

    Контрола за унос текста садржи вредност, а ознака садржи растући збир.

  7. Да бисте приказали вредност глобалне променљиве, изаберите мени Датотека и изаберите Променљиве у левом окну.

    Опција променљивих у менију „Датотека“.

  8. Да бисте приказали сва места на којима се променљива дефинише и користи, изаберите је.

    Листа места где се користи променљива.

Типови променљивих

Power Fx има две врсте променљивих:

Тип променљивих Scope Опис Функције које успостављају
Глобалне променљиве Апликација Најједноставније за употребу. Садржи број, текстуалну ниску, логичку вредност, запис, табелу итд. који могу бити референце са било ког места у апликацији. Поставите
Колекције Апликација Садржи табелу на коју се може референцирати било где у апликацији. Омогућава измену садржаја табеле, а не постављање у целини. Може се сачувати на локалном уређају за каснију употребу. Прикупљање
Преузмите

Када се користи у услузи Power Apps, постоји трећи тип променљиве:

Тип променљивих Scope Опис Функције које успостављају
Променљиве контекста Екран Изврсно за преношење вредности на екран, слично параметрима у процедури на другим језицима. Може се референцирати само са једног екрана. УпдатеЦонтеxт
Кретање

Креирање и уклањање променљивих

Све променљиве се креирају имплицитно када се појаве у функцији Постави, Ажурирај контекст, Иди до, Прикупи или Обриши прикупљено. Да бисте прогласили променљиву и њен тип, треба само да је укључите у било коју од ових функција било где у вашој апликацији. Ниједна од ових функција не креира променљиве; само попуњавају променљиве са вредностима. Никада не декларишете променљиве изричито као што бисте могли у другом алату за програмирање, а свако куцање је имплицитно од употребе.

На пример, можда имате контролу дугмета са формулом OnSelect једнако је Set( X, 1 ). Ова формула успоставља X као променљиву са типом броја. Можете користити X у формулама као број, а та променљива има вредност празно након што отворите апликацију, али пре него што одаберете дугме. Када изаберете дугме, дајете X вредност 1.

Ако сте додали још једно дугме и подесили његово својство OnSelect на Set( X, "Hello" ), дошло би до грешке јер тип (текстуална ниска) не одговара типу у претходној функцији Постави (број). Све имплицитне дефиниције променљиве морају се слагати по типу. Дакле, се све ово догодило јер сте поменули X у формулама, а не зато што се било која од тих формула заправо изводила.

Уклоните променљиву тако што ћете уклонити све функције Постави, Ажурирај контекст, Иди до, Прикупи или Обриши прикупљено које имплицитно успостављају променљиву. Без ових функција, променљива не постоји. Морате уклонити и све референце на променљиву јер ће оне проузроковати грешку.

Век трајања и почетна вредност променљиве

Све променљиве се чувају у меморији док апликација ради. Након што се апликација затвори, вредности задржаних променљивих се губе.

Садржај променљиве можете да сместите у извор података користећи функције Закрпа или Прикупи. Такође можете да сачувате вредности у колекцијама на локалном уређају користећи функцију Сачувај податке.

Када корисник отвори апликацију, све променљиве имају почетну вредност празно.

Читање променљивих

Назив променљиве можете да користите за читање њене вредности. На пример, можете дефинисати променљиву овом формулом:

Set( Radius, 12 )

Тада једноставно можете да користите Радијус било где да можете да користите број, и он ће бити замењен са 12:

Pi() * Power( Radius, 2 )

Ако дате променљивој контекста исти назив као глобалној променљивој или колекцији, променљива контекста има предност. Међутим, и даље можете референцирати глобалну променљиву или колекцију ако користите оператор разјашњавања[@Radius].

Коришћење променљиве контекста (само Power Apps)

Погледајмо како би била креирана наша машина за додавање помоћу променљиве контекста уместо глобалне променљиве.

Како функционишу променљиве контекста:

  • Имплицитно успоставите и поставите променљиве контекста користећи функцију UpdateContext или Navigate. Када се апликација покрене, почетна вредност свих променљивих контекста је празно.
  • Ажурирајте променљиве контекста са записима. У осталим алаткама за програмирање обично користите „=“ за доделу, као у „x = 1“. За променљиве контекста користите { x: 1 } уместо тога. Када користите променљиву контекста, користите њено име директно без синтаксе записа.
  • Такође можете поставити променљиву контекста када користите функцију Navigate за приказивање екрана. Ако на екран мислите као на неку врсту поступка или помоћне рутине, овај приступ подсећа на параметре који се преносе у друге алате за програмирање.
  • Осим екрана Navigate, променљиве контекста су ограничене на контекст једног екрана, по коме су и добиле име. Не можете их користити или постављати изван овог контекста.
  • Променљиве контекста могу да садрже било коју вредност, укључујући ниске, бројеве, записе и табеле.

Хајде да обновимо нашу машину за додавање користећи променљиву контекста:

  1. Додајте контролу уноса текста под називом Унос текста 1 и два дугмета под називом Дугме1 и Дугме2.

  2. Подесите својство Text за Button1 на „Додај“ и поставите својство Text за Button2 на „Обриши“.

  3. Да бисте ажурирали растући збир кад год корисник изабере дугме Додај, подесите његово својство OnSelect према овој формули:

    УпдатеЦонтеxт ( { РуннингТотал : РуннингТотал + ТектИнпутКСНУМКС.Тект } )

    Само постојање ове формуле утврђује Текући укупан износ као променљиву контекста која има број због + оператера. Можете да референцирате Текући укупан износ било где на овом екрану. Кад год корисник отвори ову апликацију, Текући укупан износ има почетну вредност празно.

    Први пут када корисник изабере дугме Додај и покрене се Ажурирање контекста, Текући укупан износ се поставља на вредност Текући укупан износ + Унос текста 1.

    ОнСелецт особина дугмета Додај.

  4. Да бисте подесили растући збир на 0 кад год корисник изабере дугме Обриши, подесите његово својство OnSelect према овој формули:

    УпдатеЦонтеxт ( { РуннингТотал : КСНУМКС } )

    Дакле, Ажурирање контекста се користи са формулом UpdateContext( { RunningTotal: 0 } ).

    ОнСелецт особина дугмета Цлеар.

  5. Додајте контролу Ознака и подесите њено својство Text на RunningTotal:

    Ова формула ће се аутоматски прерачунати и кориснику показати вредност Текући укупан износ како се буде мењала на основу тастера које корисник изабере.

    Својство Text ознаке.

  6. Прегледајте апликацију а наша машина за додавање је спремна као што је горе описано. Унесите број у оквир за текст и притисните дугме Додај неколико пута. Када будете спремни, вратите се на искуство стварања аутора помоћу тастера Esc.

    Контрола за унос текста приказује вредност, а ознака приказује растући збир.

  7. Током навигације до екрана можете поставити вредност променљиве контекста. Ово је корисно за преношење „контекста“ или „параметара“ са једног екрана на други. Да бисте демонстрирали ову технику, уметните екран, уметните дугме и подесите својство OnSelect према овој формули:

    Навигате ( Screen1, Ноне, { РуннингТотал: -1000 } )

    Својство OnSelect дугмета.

    Држите притиснут тастер Alt док бирате ово дугме да бисте приказали Screen1 и подесили променљиву контекста RunningTotal на -1000.

    Screen1 је отворен.

  8. Да бисте приказали вредност променљиве контекста, изаберите мени Датотека, а затим изаберите Променљиве у левом окну.

    Опција променљивих у менију „Датотека“.

  9. Да бисте приказали где се променљива контекста дефинише и користи, изаберите је.

    Листа места где се користи променљива.

Коришћење колекције

На крају погледајмо креирање наше машине за додавање са колекцијом. Будући да колекција садржи табелу коју је лако изменити, направићемо да ова машина за додавање задржи „папирну траку“ сваке вредности онако како су унете.

Како раде колекције:

  • Креирајте и поставите колекције користећи функцију ClearCollect. Уместо ње можете користити функцију Collect, али ће ефективно бити потребна још једна променљива уместо да се замени стара.
  • Збирка је врста извора података и самим тим је табела. Да бисте приступили јединственој вредности у колекцији, користите функцију First и издвојите једно поље из резултујућег записа. Ако сте користили једну вредност са ClearCollect, ово ће бити поље Value, као у овом примеру:
    Фирст(ВариаблеНаме). Вредност

Обновимо нашу машину за додавање користећи колекцију:

  1. Додајте контролу Унос текста под називом TextInput1 и два дугмета под називом Button1 и Button2.

  2. Подесите својство Text за Button1 на „Додај“ и поставите својство Text за Button2 на „Обриши“.

  3. Да бисте ажурирали растући збир кад год корисник изабере дугме Додај, подесите његово својство OnSelect према овој формули:

    Цоллецт ( ПаперТапе, TextInput1.Тект )

    Само постојање ове формуле одређује PaperTape као збирку која садржи табелу текстуалних ниски са једном колоном. Можете да референцирате PaperTape било где у апликацији. Кад год корисник отвори ову апликацију, PaperTape је празна табела.

    Када се ова формула покрене, додаје нову вредност на крај колекције. Зато што додајемо јединствену вредност, Прикупљање је аутоматски поставља у табелу са једном колоном, а назив колоне је Вредност, и користићете га касније.

    ОнСелецт особина Додај дугме.

  4. Да бисте обрисали папирну траку када корисник изабере дугме Обриши, подесите његово својство OnSelect према овој формули:

    Јасно (ПаперТапе)

    ОнСелецт особина Обриши дугме.

  5. Да бисте приказали текући укупан износ, додајте ознаку и подесите својство Текст према овој формули:

    Сума (ПаперТапе, вредност)

    Ознака особине текста.

  6. Да бисте покренули машину за додавање, притисните F5 да бисте отворили Преглед, унесите бројеве у контролу уноса текста и изаберите дугмад.

    Контрола за унос текста приказује вредност, а ознака приказује растући збир.

  7. Да бисте се вратили на подразумевани радни простор, притисните тастер Esc.

  8. Да бисте приказали папирну траку, уметните контролу Табела података и подесите њено својство Ставке према овој формули:

    Папирна трака

    У десном окну изаберите Уреди поља, а затим изаберите Додај поље, изаберите колону Вредност, а затим Додај да бисте је приказали.

    Табела података која приказује вредности додате у колекцију.

  9. Да бисте видели вредности у својој колекцији, изаберите Колекције у менију Датотека.

    Преглед колекције PaperTape.

  10. Да бисте сачували и преузели своју колекцију, додајте две додатне контроле дугмади и подесите њихова својства Текст на Учитај и Сачувај. Подесите својство OnSelect дугмета Учитај према овој формули:

    Цлеар ( ПаперТапе ); ЛоадДата (ПаперТапе, "СторедПаперТапе", истина)

    Прво морате да обришете колекцију зато што ће LoadData додати сачуване вредности на крај колекције.

    ОнСелецт особина Учитај дугме.

  11. Подесите својство OnSelect дугмета Сачувај према овој формули:

    СавеДата ( ПаперТапе, "СторедПаперТапе")

    ОнСелецт особина Сачувај дугме.

  12. Поново прегледајте притиском на тастер F5, унесите бројеве у контролу уноса текста и изаберите дугмад. Изаберите дугме Сачувај. Затворите и поново учитајте апликацију и изаберите дугме Учитај за поновно учитавање колекције.