>> SPEAKER 1: Anta nå at jeg ønsket å gi Scratch muligheten
å nyse også.
Vel, mine første instinkter ville er, som før, for å gjøre en
blokk, kaller dette nys.
Spesifiser at jeg har lyst til å spesifisere med et tall på hvor mange ganger
Scratch skal nyse.
Deretter klikker OK.
La meg flytte denne over til høyre å gi meg selv litt mer plass.
>> Og så la meg igjen gå til Gjenta, styrer standard 10 med n.
La meg gå til si setningen og si ikke "hei", men
"Achoo" i ett sekund.
Så ta et øyeblikks pusterom.
Og det er det.
>> Nå har jeg en blokk kalt nys, så vel som en blokk kalles hoste.
Så det nå hvis jeg ønsker Skrap å hoste og nys, jeg kan bare spesifisere en
nyse under hans hoste.
Tre ganger, sier.
Klikk på den grønne flagg, og jeg burde se faktisk, hoste, hoste, hoste.
Etterfulgt av Achoo, Achoo, Achoo.
Mine mest realistiske nyser ennå.
>> Nå oppdager noe som er dårlig om dette designet.
Selv om jeg gjorde ikke outright duplikat noen puslebiter, jeg
definitivt dras og slippes pen mye de samme brikkene, noe som gir
den ene funksjonen en aldri så litt annet navn enn den andre, nys
versus hoste.
Så dette er en mulighet for facto ut noen felles kode.
Faktisk, merke den eneste forskjellen mellom hoste og nys er at ett
har Ripe ordtaket "hoste", den andre som sier "Achoo."
>> Så kunne ikke vi liksom generalisere dette kode på en slik måte at vi bare
spesifisere hva ordet vi ønsker å Scratch å bo?
Og avhengig av det ordet, vil det effektivt være en hoste eller
det vil være et nys.
Så la oss gå videre og gjøre dette.
La oss lage en tredje funksjon og ringe denne, "sier." og jeg vil ha det til
akseptere, ikke bare et tall, men denne gangen en streng, også kjent som en
ord eller uttrykk.
>> And we'll call this "word."
Og hvor mange ganger må jeg ønsker å si dette ordet?
Vel la oss angir et tall, ringer det igjen n.
Og bare for å gjøre denne blokken mer lesbar, la meg gå videre og legge en
plateselskap kalt "ganger." Slik at når du lese denne blokken fra venstre til høyre, det
bokstavelig sier "si ordet n ganger."
>> Nå la meg gå videre og klikk på OK.
Og nå la meg gjennomføre denne blokken, igjen ved hjelp av en gjentakelse blokk.
Spesifisere at jeg vil ha det å gjenta n ganger.
Spesifisere at jeg ønsker å si noe i ett sekund.
Men snarere enn noe hard kodet inn i denne funksjonen, la oss i stedet dra
og slippe ordet som er gått i.
La oss deretter vente i ett sekund.
Så nå la meg gå tilbake og forbedre min implementeringer av hoste og nyse,
på en slik måte at de to funksjoner kaller denne tredje funksjon, og dermed
å minimalisere mengden av duplisere kode.
Så la oss bokstavelig talt kaste denne koden unna.
La oss kaste denne koden unna.
Og denne gangen, la oss bare spesifisere at hoste bør gjennomføres ved
sier "hoste" noen tall n ganger.
>> Og på lignende måte kan vi gå tilbake og re-implementere Nys, slik at den bruker
si med et argument av "Achoo" n ganger.
Så hva har vi gjort?
Vi har anerkjent den koden som var som er felles for både vår hoste og vår
nyse funksjoner, priset det ut i et nytt tredje funksjon, og deretter
omskrevet hoste og nyse i en slik en måte som de kaller det
tredje og ny funksjon.
>> Nå har vi absolutt gjort dette hele programmet mer komplisert enn det
egentlig trenger å være.
Tross alt, på slutten av dagen, vi bare trenger Scratch å hoste tre ganger
og nyse tre ganger.
Og vi kunne ha gjort det med bare noen få biter i et puslespill.
Men som våre programmer får mye mer komplisert, og våre programmer mer
sofistikert, denne teknikken av facto ut felles kode, eller
hierarkisk rotne programmet i mindre funksjon, hvor hver av disse
kalle andre funksjoner, er en svært overbevisende teknikk.
Fordi det vil sikre at din kode, selv som det blir mer komplekse, restene
enkel å oppdatere og også svært lesbar.
>> Faktisk vurdere sluttresultatet.
Når det grønne flagget er klikket, hoste tre ganger, nyser tre ganger.
Og det er det.
Faktisk, la oss gjøre akkurat det.
Klikk på den grønne flagg, og vi får en hoste, to hoste, tre hoste.
Etterfulgt av, håper vi, når nyser, to nyser, og en tredje nys.
Håper han blir bedre snart.