, funktionelle planlægning i folkesundhedsprogrammet,,,,, 19,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, ny hype i programmeringen er alt om funktionelle planlægning paradigmer.funktionelle sprog anvendes mere og mere i større og bedre ansøgninger.scala, haskel osv. er velfungerende og andre, mere konservative sprog som java begyndte at vedtage nogle af de funktionelle planlægning paradigmer (se lukninger i java7 og dovne evaluering for lister i java8).men hvad kun få mennesker ved, at folkesundhedsprogrammet er meget alsidige, når det kommer til funktionelle planlægning.alle de væsentligste funktionelle planlægning begreber kan udtrykkes i folkesundhedsprogrammet.så hvis du er ny i funktionelle planlægning, være rede til at blive blæst væk, og hvis du allerede er bekendt med funktionelle planlægning, være rede til at have meget med denne forelæsning.,,,, programmering paradigmer, uden nogen programmering paradigmer, vi kunne gøre, hvad vi vil, uanset på hvilken måde, vi ønsker.dette vil føre til en ekstrem fleksibilitet, det vil også føre til umulige arkitekturer og meget lille kode.således programmering paradigmer blev opfundet for at hjælpe os, programmører, til at tænke på en bestemt måde om et specifikt program, og på denne måde begrænser vores evne til at give udtryk for vores løsning. hver programmering paradigme, tager en frihed fra os:,, modulopbygget programmering, fjerner ubegrænset program størrelse.,, struktureret og proceduremæssige programmering tager de "til" og begrænser programmør rækkefølgen, udvælgelse og iteration.,, objekt orienterede programmering, fjerner henvisninger til funktioner,.,, funktionelle planlægning, fjerner opgave og ustadigt.,, funktionelle planlægning principper i funktionelle planlægning, har du ingen data, repræsenteret af variabler,.,, i funktionelle planlægning, alt er en funktion.og jeg mener alt.f.eks. et sæt, som i matematik, kan være repræsenteret med flere funktioner.et system eller liste er også en funktion eller en gruppe af funktioner. i objekt orienterede programmering, alt er et objekt.og en ting er en samling af data og metoder, der er aktioner på disse data.genstande, der er en stat, en flygtig, ustadigt. i funktionelle planlægning, har du ingen data, repræsenteret af variabler.der foreligger ingen data beholdere.data er ikke tilknyttet en variabel.nogle værdier kan defineres og anvendes.men i de fleste tilfælde er de opgaver, der er tildelt "variabler".jeg har sat »variabler« mellem citater, fordi de funktionelle planlægning er uforanderlige.selv om de fleste funktionelle programmeringssprog ikke håndhæver uforanderlighed, på samme måde som de fleste mål orienterede sprog ikke håndhæver de genstande, hvis du ændrer værdi efter en opgave, de gør ikke rent funktionelle programmeringen mere. fordi du ikke har værdier, der er tildelt variabler i funktionelle planlægning, du har ingen stat,., på grund af nogen stat, og ingen opgaver, i funktionelle planlægning, funktioner har ingen bivirkninger. og på grund af de foregående tre grunde, funktioner, altid er forudsigelige.det betyder, at hvis du kalder en funktion med de samme parametre, igen og igen og igen...du vil altid have det samme resultat.det er en stor fordel i forhold til objekt resultatorienteret programmering og i høj grad reducerer kompleksiteten af multi-threaded og massivt multi-threaded ansøgninger, men hvis vi ønsker at give udtryk for alt i funktioner, skal vi være i stand til at tildele dem til parametre eller returnere dem fra andre funktioner.således funktionelle planlægning kræver støtte til højre hierarki funktioner. dette betyder, at en funktion, kan henføres til en variabel ", sendt ind som en parameter til en anden funktion, og vendte tilbage som følge af en funktion, vi har ingen værdier i variabler, mens og loops er usædvanligt at funktionelle programmering og erstattes med recursion.,, vis mig koden.nok snak og filosofi for en lærestreg.lad os koden.oprette et php projekt i din bedste ide eller kode redaktør.skabe en "prøver" mappe.skabe to filer:, funsets.php i projektets mappe, og funsetstest.php i test mappe.vi vil skabe en ansøgning med prøvninger, der skal repræsentere begrebet fastsætter, i matematik, der er en samling af forskellige genstande, der betragtes som et mål i sig selv.(wikipedia), det betyder, at der er en masse ting i et enkelt sted.disse grupper kan være og er præget af matematiske operationer: fagforeninger, vejkryds, forskelle osv. og brugbare egenskaber, som indeholder. vores programmering begrænsninger, så lad os koden.men vent.hvordan?- med hensyn til begreberne funktionelle planlægning, bliver vi nødt til at anvende følgende restriktioner på vores kode:,, ingen opgaver. - vi har ikke lov til at tildele værdier til variabler.vi er dog tilladt at overdrage funktioner til variabler.,, ingen ustadigt. - vi er ikke tilladt i tilfælde af en opgave at ændre værdien af denne opgave.vi er heller ikke i stand til at ændre værdien af en variabel, der havde den værdi, der er fastsat som parameter for den nuværende funktion.så, ingen ændring af parametre.,, mens og loops. - vi har ikke lov til at anvendes på ", mens" og "til" kommandoer.vi kan dog fastsætte vores egen metode til konjunkturforløbet ved hjælp af de elementer af et sæt og kalder det for hvert /i /tid.,, ingen begrænsninger gælder for test.på grund af arten af phpunit, vil vi bruge klassisk objekt orienterede php kode.også for bedre at imødekomme vores test, vi vil få vores produktion kode til en enkelt klasse. listen er at definere funktion, hvis de er en erfaren programmør, men ikke bekendt med funktionelle planlægning, nu er det tid til at stoppe med at tænke som du plejer, og være klar til at forlade din komfortzone.glem alle dine tidligere former for argumentation om et problem, og at alle funktioner., fastlæggelse af et sæt, er dets funktion "indeholder" metode, funktion indeholder ($, $elem) {tilbage $fastsat ($elem)}, ok...det er ikke så tydeligt, så lad os se, hvordan vi skulle bruge det. - sæt = funktion ($element) {tilbage.} indeholder ($, 100), det forklarer det lidt bedre.den funktion, "indeholder", har to parametre:,, $, - er der defineret som funktion. $elem - udgør et element, der defineres som en værdi. i denne sammenhæng, at "indeholder", har at gøre, er at anvende funktion i $, der med den parameter, $elem,.lad os slutte i en test, klasse funsetstest udvider phpunit_framework_testcase (private $funsets; beskyttede funktion setup() {$- > funsets = nye funsets();} funktion testcontainsisimplemented() (//vi caracterize en fastsat af dens indeholder funktion.det er den grundlæggende funktion i et sæt.- sæt = funktion ($element) {} $tilbage. - > asserttrue ($- > funsets - > indeholder ($, 100)), og tager vores produktion kode ind, funsets.php, i en klasse, klasse funsets {offentlige funktion indeholder ($, $elem) {tilbage $fastsat ($elem)}}, du kan løbe denne test, og det vil gå over.det, vi har fastlagt for denne test er en funktion, der vender altid tilbage.det er et "ægte". den singleton, hvis det tidligere kapitel var lidt forvirrende eller så ubrugelig i logik, det vil præcisere det lidt.vi ønsker at fastlægge et sæt med et enkelt element, en singleton.husk, det er en funktion, og vi vil bruge det som i nedenstående prøvning, funktion testsingletonsetcontainssingleelement() (//en singleton, der er kendetegnende for en funktion, som gik til indeholder, vil vende tilbage til det fælles element //vedtaget som parameter.med andre ord en singleton er et sæt med et enkelt element.$singleton = $- > funsets - > singletonset (1); $- > asserttrue ($- > funsets - > indeholder ($singleton, 1)}, er vi nødt til at fastlægge en funktion kaldes, "singeltonset" med en parameter, som repræsenterer et element af.i testen, det er nummer 1 (1).så vi forventer, at vores, indeholder metode, når han med en singleton funktion, til at vende tilbage, sandt, hvis de sendes i parameter er lig med 1.den kode, der er prøven bestå, er som følger: offentlig funktion singletonset ($elem) {tilbage funktion ($otherelem) anvendelse ($elem) {tilbage $elem = = $otherelem;}}, wow!det er skørt.så, funktion, "singletonset", bliver som en parameter, et element, som elem dollars.så er det tilbage i en anden funktion, som har en parameter, $otherelem, og denne anden funktion vil sammenligne, $elem, $otherelem,., så, hvordan virker det?for det første linje: $singleton = $- > funsets - > singletonset (1), er blevet omdannet til hvad, "singletonset (1)" tilbage: $singleton = funktion ($otherelem) {tilbage 1 = = $otherelem;}, så "indeholder ($singleton, 1)", der kaldes.som i kalder det i $singleton,.så koden bliver: $singleton (1), der rent faktisk gennemfører den kode i den med $otherelem under værdien. tilbage 1 = = 1, hvilket er rigtigt, og at vores test går. er du allerede smiler?mener du din hjerne er begyndt at koge?det gjorde jeg, da jeg skrev dette eksempel i scala, og jeg gjorde det igen, da jeg skrev dette eksempel i folkesundhedsprogrammet.jeg synes, det er utroligt.det lykkedes os at definere et sæt med et element, med mulighed for at kontrollere, at det indeholder den værdi, vi gik med til det.vi har alle disse uden en fælles opgave for værdi.vi har ingen variabel indeholder værdien eller under en stat.nej, ingen opgave, ingen forandring, ingen loops.vi er på rette spor her.,, union of sæt nu, at vi kan skabe et sæt, med en enkelt værdi, er vi nødt til at være i stand til at skabe et sæt med flere værdier.den indlysende måde at gøre det på er at definere eu 's drift på vores fjernsyn.foreningen af to singleton fastsætter vil repræsentere en anden eu - med begge værdier.I want you to take a minute and think about the solution before scrolling to the code, maybe take a peak on the tests below.,function testUnionContainsAllElements() { \t//A union is characterized by a function which gets 2 sets as parameters and contains all the provided sets \t//We can only create singletons at this point, so we create 2 singletons and unite them \t$s1 = $this->funSets->singletonSet(1); \t$s2 = $this->funSets->singletonSet(2); \t$union = $this->funSets->union($s1, $s2); \t//Now, check that both 1 and 2 are part of the union \t$this->assertTrue($this->funSets->contains($union, 1)); \t$this->assertTrue($this->funSets->contains($union, 2)); \t//... og at det ikke indeholder 3 $- > assertfalse ($- > funsets - > indeholder ($union. 3)}, vi vil have en funktion kaldes, "union", der får to parametre, begge sæt.husk, der er kun funktioner for os, så vores "union" funktion vil få to funktioner som parametre.så vil vi være i stand til at tjekke med "indeholder", hvis eu indeholder et element eller ej.så vores "union" funktion skal vende tilbage en anden funktion, at "indeholder", kan bruge. offentlige funktion union ($s1, s2 ($) tilbage funktion ($otherelem) anvendelse ($s1, s2 $) (tilbagevenden $- > indeholder ($s1, $otherelem)
funktionelle planlægning i folkesundhedsprogrammet
Previous:dato og tidspunkt
Next Page:behat for resten af os