Fljótleg kynning á virkni-viðbragðsforritun (FRP)

FRP táknar gatnamót tveggja forritunaraðgerða. En áður en við djúpum ofan í hugtökin verðum við að vita aðeins meira um nokkur grunnskilmál.

Frp: bregðast við atburðum

Brýnt forritun

Hefð skrifum við kóða sem lýsir því hvernig það ætti að leysa vandamál. Hver kóðalína er keyrð í röð til að framleiða tilætlaða útkomu, sem er þekkt sem nauðsynlegur forritun. Brýna hugmyndafræði neyðir forritara til að skrifa „hvernig“ forrit mun leysa ákveðið verkefni. Athugaðu að í fyrri yfirlýsingunni er lykilorðið „hvernig“.

Hér er dæmi:

látum tölur = [1, 2, 3, 4, 5, 6, 7, 8, 9]
var numbersLessThanFive = [Int] ()
fyrir vísitölu í 0 .. 

Eins og þú sérð framfylgjum við röð af leiðbeiningum til að framleiða tilætluð framleiðsla.

Virk forritun

Hagnýtur forritun er forritunarhugmynd þar sem þú líkar öllu sem afleiðing af aðgerð sem forðast að breyta ástandi og stökkbreyta gögn. Við munum ræða hugtök eins og ástand og gögn stökkbreytni og mikilvægi þeirra í síðari hlutum, en til viðmiðunar:

  • líta á ástand sem eina af mismunandi permutations og samsetningum sem forritið þitt getur haft á hverjum tíma meðan á framkvæmd hennar stendur
  • gagnbreytileiki er hugtakið þar sem tiltekið gagnapakki gæti breyst á tilteknum tíma meðan framkvæmd áætlunarinnar stendur.

Sama dæmi og gefin var með nauðsynlegri forritun er hægt að nota á eftirfarandi hátt með því að nota hagnýta nálgunina:

látum tölur = [1, 2, 3, 4, 5, 6, 7, 8, 9]
let numbersLessThanFive = numbers.filter {$ 0 <5}

Við matum síuaðgerðina með lokun sem inniheldur ákveðin viðmiðun. Sú viðmiðun er síðan notuð á hvern þátt í tölustafnum og fylkingin sem af því leiðir inniheldur þætti sem uppfylla skilyrði okkar.

Taktu eftir yfirlýsingu fylkinganna tveggja í báðum dæmunum.

Í fyrra dæminu var tölunniLessThanFive fylking lýst yfir sem var en í öðru dæminu var sama fylking lýst yfir sem let.

Hringir það nokkrar bjöllur?

Hvaða aðferð er betri, hvaða fylking er öruggari að vinna með?

Hvað ef fleiri en einn þráður er að reyna að vinna með sama fylki og þætti hans?

Er ekki stöðugur fylking áreiðanlegri?

Viðbrögð forritun

Viðbrögð forritun er framkvæmd forritunar með ósamstilltum gagnastraumi eða atburðarrásum. Atburðarstraumur getur verið hvað sem er eins og inntak hljómborðs, hnappatappa, bendingar, GPS staðsetningu uppfærslur, hraðamælir og iBeacon. Þú getur hlustað á straum og brugðist við í samræmi við það.

Þú gætir hafa heyrt um viðbrögð forritunar, en það gæti hafa hljómað of hótandi, ógnvekjandi eða dulinn til að prófa jafnvel. Þú gætir hafa séð eitthvað svona:

var twoDimensionalArray = [[1, 2], [3, 4], [5, 6]]
láta flatArray = twoDimensionalArray.flatMap {fylki inn
    return array.map {heiltala í
        skila heiltölu * 2
    }
}

prenta (flatArray)

Úttak: [2, 4, 6, 8, 10, 12]

Við fyrstu sýn gæti fyrri kóðinn fundið fyrir svolítið óskýrri og þetta gæti verið ástæðan fyrir því að þú snerir baki við þessum forritunarstíl. Viðbrögð forritunar, eins og við nefndum áðan, er forritun með atburðarrásum.

Stærri spurningunni er samt ósvarað. Hvað er hagnýtur viðbrögð forritun (FRP)?

FRP er sambland af hagnýtum og viðbrögðum hugmyndafræði. Með öðrum orðum, það er að bregðast við gagnastraumum með því að nota hagnýtur hugmyndafræði. FRP er ekki tól eða bókasafn - það breytir því hvernig þú skipulagir umsóknir þínar og hvernig þú hugsar um forritin þín.

Í næsta bloggi mun ég tala um grunnbyggingarblásara viðbragðs forritunar - þangað til vertu stilltur og nýtur þess að lesa :)

Til að hafa traust tök á viðbragðslegum hugtökum og skrifa iOS forrit í RxSwift geturðu lesið bókina mína: Reactive forritun í Swift 4.

Fleiri af verkefnum mínum og kóða sem hægt er að hlaða niður eru í opinberu github endurvörpunum mínum

Þú getur lesið meira um efnið hér

Takk fyrir að lesa, vinsamlegast deildu því ef þér fannst það gagnlegt :)