DavidErikMollberg/kennsluromur huggingface dataset:
Þannig að nú er ég búinn að eiginlega slíta tenginguna á milli þessara tveggja tilvísana
Þannig að það sem við getum raunverulega sagt um svona parameter parsing eða stikun færibreytna í Python er það að eins og á enskunni er sagt eða kennslubókin segir Every value is passed as a reference to an object every value is passed as a reference to an object Það er að segja sérhvert gildi er sent sem tilvísun á hlut
Þannig að þegar við sendum my list inn í fallið func þá sendum við raunverulega tilvísun á gildið sem að my list my list vísar á
Þannig að það kom tilvísun á listann einn tvo þrjá og þegar við appenduðum við þann lista þá vorum við eiginlega að bæta staki við þann lista sem að var verið að vísa á
Svo þegar við gáf breyttum tilvísuninni hér þá raunverulega slitum við þessa tengingu þannig að a list sem að áður benti svona þar sem um var að ræða raunverulega tvær tilvísanir sem be bentu á sama hlut
Um leið og við gefum þessari breytu hér nýtt nafn þá verður til nýr listi í minni og ný tilvísun
Þannig að a list bendir ekki lengur á listann einn tvo þrjá heldur á listann fjórir fimm sex
Eitt í viðbót hérna í tengslum við svona parameter parsing og það er það sem heitir sjálfgefin gildi
Það er hægt að vera með sjálfgefin gildi í föllum
Og eitt svona dæmi um það væri það ef ég myndi segja hérna b list ég ætla að taka bæði inn ég ætla að taka inn tvo lista a list og b list en b list á að hafa sjálfgefið gildi
Ég ætla að hafa sjálfgefið gildi tómi listinn og ef við prentum núna út a list og b list hérna inni og ég sendi takið eftir því að ég sendi inn í núna þegar ég kalla á func þá sendi ég bara my list inn ég sendi bara inn gildi fyrir a list en ég sendi ekki neitt inn gildi fyrir b list
Er það í fyrsta lagi hægt
Já það er hægt vegna þess að b list hefur svokallaðann sjálfgefið gildi
Sko ef þetta væri ekki sjálfgefið gildi þá þetta væri svona þá fengi ég func missing one required position á argument argument b list
Nú kvartar Python yfir því þegar ég kalla fallið func þá sendi ég bara inn my list en ég sendi inn ekkert gildi fyrir b list
En um leið og þetta er orðið optional fyrirgefið sjálfgefið þá þarf ég ekki að senda inn b list en ég get það hins vegar takið eftir því
Hérna UNK another list og hann hefur gildið fjórir fimm sex og ég sendi hann núna áfram sem tilvísun fyrir b list
Þá prentast út a lista og b list
Það er að segja einn tveir þrír og fjórir fimm sex Þannig að þetta er mjög algengt í föllum að vera með sjálfgefin gildi þannig að notandinn sá sem nýtir fallið hann þarf ekki endilega að gefa upp gildi á breytunni
Og ef hann gerir það ekki þá fær hún sjálfkrafa eitthvað tiltekið gildi
Nú Það síðasta sem ég vil nefna hérna er þetta sem heitir dockstring
Hvað er meira sem við höfum notað hér
Hérna er factorial og hvað floor höfum við hugsanlega notað jæja skiptir ekki öllu máli
En ég get líka sagt prent eða math punktur pow punktur undirstrik undirstrik dock undirstrik undirstrik
Og þetta er þessi svokallaði dockstring sem að maður getur sett á föll sem að á að vera lýsandi fyrir það sem föll fallið tekur inn og hverju fallið skilar
En ef ég hoppa til baka núna í Visual studio code þá gæti ég búið mér til hérna einhvern dockstring fyrir fallið func og dockstring hefur þá eiginleika að maður notar þrefalda gæsalöpp
Opnar þetta með þremur gæsalöppum og loka með þremur og þarna gæti ég sagt this function accepts two lists and returns nothing
Þetta er nú ekki fall sem gerir eitthvað merkilegt en í augnablikinu UNK skilar það engu
En nú er ég er búinn að semsagt að gefa notandanum til kynna með svokölluðum dockstring hvað þetta fall tekur við hverju það tekur og hverju það skilar
Þannig að ég ætti að geta komist í þennan dockstring hér í aðalforritinu
Þannig að það er hægt að komast beint í dockstring fyrir tiltekið fall og þetta er nú kannski ekki sú leið sem maður myndi almennt nota heldur myndi ma sko ef að ef að ég væri að búa til eitthvað library þá mynd sem að inniheldur kannski mörg föll einhvers konar svona pakka af föllum sem að ha mynda einhverja ákveðna einingu eins og til dæmis math pakkinn
Þá gæti einhver notandinn á þessum pakka importað hann til sín og skoðað hvað þessi föll gera á sama hátt og ég var að gera hér
Þannig að það er ágæt regla sem ég hvet ykkur til að nota að búa til dockstring fyrir sérhvert fall sem þið skrifið vegna þess að þá bæði geta getur sá sem notar föllin ykkar séð lýsingu á því hvað fallið gerir
En það er líka einnig gott fyrir ykkur sjálf að skrifa það upp hvað fallið tekur við og hverju það skilar vegna þess að ef við í erfiðleikum með því að gera þessa lýsingu þá er ljóst að fallið ykkar hefur ekki afmarkað og skýrt hlutverk
Já góðan daginn
nú er komið að því að tala um klasa og hlutbundna forritun
Og ég ætla í þessu myndbandi að fara svona yfir helstu grundvallaratriði og
svona þau hugtök sem við þurfum að hafa á taktinum þegar við erum að tala um klasa
og ég ætla bara að byrja strax hérna með því að forritunarumhverfiið og búa til klasa svona tiltölulega einfaldan klasa sem þó gefur okkur
svona tækifæri til að ræða eins þau svona helstu hugtök sem við þurfum að þekkja
og þessi klasi hann heitir counter
Og hann hefur það hlutverk að halda utan um einhvern tiltekinn fjölda
Þannig að það sem ég er búinn að gera núna er ég búinn að lýsa því yfir að ég sé hérna með klasa sem heitir counter Í augnablikinu hefur hann engin engar aðgerðir og engin gögn En það er eitthvað sem ég ætla að fylla inn smám saman
Og það allra fyrsta sem maður gerir þegar maður býr sér til klasa
Það er nánast alltaf að búa til svo kallaða init fall og ef ég bara skrifa það upp þá hefur það þennan sérstaka rithátt að vera með tvö undirstrik á undan init og svo tvö undirstrik á eftir init
og þetta fall hefur það hlutverk
að upphafs stilla gefi einhverja upphafs vinnslu
og við eigum svo sem hægt er að ræða hér aðeins hvað hvað ég á við með tilvik En þetta er
aðgerð sem verður kallað á þegar nýtt tilvik er smíðað
og fyrst ég er að tala um nýtt tilvik smíðað og kannski bara best að
setja það strax hérna inn
en gerum ráð fyrir að aðalforriti bíði byrji hér
Hvernig myndi ég búa til nýtt tilvik af counter Jú ég get einfaldlega sagt köllum hann counter eitt hérna
ég hef nafnið á klasanum í og svo svigi opnast svigi lokast Þá gefur það til kynna að ég sé að kalla hérna á eitthvað fall og það er það sem er raunverulega að gerast hér ef ég er að kalla á svokallaðan smið eða constructor
í því ferli verður síðan kallað á init fallið sem sér um að upphaf stilla
Og þetta er í sjálfu sér ritháttur sem við höfum séð áður Til dæmis ef ég væri með lista þá gæti ég sagt a list er sama sem list svigi opnast svigi lokast Hérna er ég að kalla á listasmiðinn en það vill svo til að list er innbyggður klasi í Python
En nú er ég sem sagt að búa mér til eigin klasa Við getum sagt eigið tag sem heitir counter og ég kalla á smiðinn og í því ferli verður kallað á þetta init fall sem sér um einhvers konar upphafsstillingu
Nú þetta init fall þarf að taka
ja þarf í sjálfu sér ekki að taka
endilega viðföng en það tekur að minnsta kosti tilvísun á self
self er raunverulega tilvísun á hlutinn sjálfan
Það er að segja self hér
er tilvik af counter þannig að hér er counter einn raunverulega
tilvísun á þetta þennan hlut sem við vísum í hérna með self Þetta kannski skýrist aðeins betur á eftir líka
ef ég vil ekki hafa sjálfgefna gildið núll
Og þessi counter hann á að eiga sér
breytu sem ég ætlaði einmitt að kalla líka bara value og sú breyta fær gildið úr paramettinu parameternum sem er sendur inn Þannig sjáið hérna muninn en hér er um að value sem kemur inn sem parameter
breytan value sé hún tilheyrir self og hvað self Það er tilvikið af
Þannig self value fær þetta gildi value sem er parameterinn
Og við getum sagt þá kannski aðeins að nota þetta bara hjá okkur meðan við erum að ræða þessi hugtök að self punktur value
variable eða tilvika breyta
tilvika breyta
í sjálfu sér þarf ég ekki meira til þess að
búa til tilvik af counter Ég þarf ekki að forrita neitt meira mig dugar að raunverulega hafa þetta init fall Og
við skulum bara til að sannfæra okkur um það að ætla að keyra þetta hérna
Þetta keyrir og gerir ekki neitt
Ja afhverju gerir það ekki neitt Vegna þess að ég kalla og counter smiðinn hérna
Hérna ætti kannski að segja
nú ég talaði um að counter væri eitthvað sem ég gæti notað til að halda utan um einhver eitthvað einhvern teljara og það er þannig að það er ekki mikið gagn í þessu ef við getum ekki hækkað teljarann og lækkað teljarann
Þannig það sem ég mundi vilja geta gert hér er til dæmis það að eiga aðgerð sem heitir increment
Og aðgerð segi ég þetta er það sem heitir method á ensku
Það heitir bara aðgerð þegar við erum að tala um klasa Þannig method er raunverulega bara fall
líka valkvætt value
það sem ég geri hér er segir bara self value fæ nújn núna ég hækka það um value
þannig ef að
sjálfgefna gildið er einn
Þannig nú er ég kominn með aðra aðgerð heldur en init
aðgerðina
og þá ætti ég að geta notað hana hér og sagt counter einn punktur
Og þá kemur kannski spurning hér
já þetta keyri en þá sé ég ekki hver
niðurstaðan er vegna þess ég er ekki að prenta út hérna
við skulum prófa annað hérna
Hvað gerist ef ég kalla núna með hérna Sjáum við af value er default einn en ég gæti sent
svo inn eigum við að prófa það
Þannig ég ætla að hækka um tvo í staðinn fyrir einn
og keyri og þetta gengur
En hérna stendur að það séu tvö viðföng self og value
counter einn is self in the call to increment
Þannig að þetta self er raunverulega counter einn
Value hins vegar er þessi tvistur hér eða ég sendi ekkert gildi inn fyrir value hérna upphaflega en þá var sjálfgefna gildið einn
Nú það sem við vildum
náttúrulega geta gert er að prenta út Hvernig lítur þetta increm hvernig lýtur þetta counter object út
Hvað gerist ef ég til dæmis bara reyni að prenta það hérna counter einn
og keyra þetta svona
Þá fæ ég er að counter er object at einhverri minnis adressu Þannig þetta hjálpar lítið til ég það sem ég sem ég mundi vilja sjá
er hvert er innihald þessa hlutar eða þessa tilviks
Og þá kemur til sögunnar fall sem maður nánast skrifar alltaf þegar maður er að búa til klasa
og það er fallið s t r og aftur takið eftir þá byrjaði það með tveimur undirstrikum og endar með tveimur undirstrikum Það verður að heita hérna s t r
counter value tvípunktur notum svo hérna
Og nú er ég kominn format streng og formatera þetta með því að senda inn self value
Þannig að self punktur value verður skipt út fyrir þennan place holder Þannig nú er ég að skila strengur s t r
og þá fæ ég hérna counter value er þrír Hvað gerðist hérna
Þegar ég kalla hér á print
Þannig tókuð eftir þegar s t r fallið var ekki til
þá fengum við eitthvað svona counter object at einhverri minnis adressu En um leið og ég var búinn að forrita fallið s t r
þá skilaðist hérna counter value er þrír Og af hverju var það þrír Vegna þess að ég var búinn að incremente a einu sinni og svo raunverulega increment a aftur en biðja um að increment ið yrði
ef ég myndi bæta tveimur við gildið þannig þess að hann fékk þrjá
Og það sem að við getum þá kannski talað um á þessum tímapunkti er það að
aðeins að ræða hérna þennan klasa counter Sko counter er núna orðin hjúpun á ákveðna virkni er það ekki og raunverulega má segja hjúpun á ákveðnum gögnum og ákveðinni virkni
Og það er akkúrat það sem klasar gera og tilgangur klasa er að hjúpa inni í klasa bæði gögn og aðgerðir
Og hvaða gögn erum við með Ja klasinn á sér
breytuna value
það er eina breytan sem hann á raunverulega Þetta er tilvika breytan value og það eru raunverulega gögnin í klasanum
Hvaða aðgerðir eru í klasanum Ja það er í fyrsta lagi init aðgerðin sem sé um upphafsstillingu það er s t r aðgerðin sem sér um að skila af sér
streng sem að einhverju leyti endurspeglar stöðuna á tilvikinu
Og það er fallið increment
sem að gefur notandanum kleift að hækka teljarann
Þannig það er mikilvægt að átta sig á því að
klasi er sem sagt hjúpun eða incapsulation á bæði gögnum og virkni
eru útfærðar í counter Ég þarf bara að vita hvernig ég á notaði ég þarf bara að vita það er ákveðið
fall sem heitir increment sem ég get notað Ég þarf ekki að vita hvað hvers konar gögn eru inni í þessu
þessum hlut ég þarf ekki að vita hvernig einstök falleg aðgerðir eru útfærð
Hérna væri nú
decrement sem gerir mér kleift að
og ég ætla að hafa bara sama valkvætt gildi sem á að minnka sem á að minnka um
Og til að prófa þetta þá gæti ég sagt hérna ja prófum að kalla hér á decrement
Bara svona þannig það ætti að minnka um einn
Eitt sem er gott líka að tala um að við erum að tala um þessi hugtök er það að
ég talaði um að notandinn þyrfti bara að vita hvaða aðgerðir eru þarna sem menn geta notað
það er að segja hér er ég að nota increment og hérna er ég að nota decrement hérna er ég að nota smiðinn Og þetta eru það sem kallast interface
Notandinn þarf bara að þekkja interface ið eða skilin
og þau felast raunverulega í því hvaða föll er um að ræða hérna
Þannig að við gætum raunverulega sagt hérna
is the set of methods
Þetta eru skilin sem að
Nú eitt hérna sem ég minntist ekki á en er eitthvað sem við höfum verið að nota raunverulega í þessu námskeiði er hvernig við köllum á aðgerð sem tilheyrir einhverju tilviki og við gerum það með því að nota
punkt hérna og þetta í kennslubókinni er talað um dot notation Þetta höfum við séð margoft í námskeiðinu eins og til dæmis þegar við höfum verið með lista
og við höfum gert eitthvað svona a list punktur append Við segjum einmitt punktur append og
það í þessu samhengi sést að við erum raunverulega að kalla á aðgerðir sem til heyrir þessu tilviki hérna
Þess vegna notum við dot notation
er þá að gerast hér þegar við segjum counter einn punktu punktur increment
Að þá er ég að kalla á aðgerð sem tilheyrir þessu tilviki
En tilvikið er hluti af klasa og aðgerðin er skilgreind inni klasann
Sko þetta er öðruvísi það er munur á því að segja til dæmis þær innbyggt falli í Python sem heitir sum ég get kallað fallið sum til dæmis fyrir einhvern lista og sjáið þá er ég kalla fall sem tilheyrir ekki einhverju tilteknu tilviki
Þannig það er munur á þessu
og það er þess vegna er talað um að falla kall sem tilheyrir klasa eða tilviki er
er oft vísað í sem method sem er raunverulega ekkert annað en fall en þetta hér þegar ég kalla á til dæmis fallið sum þá erum við að tala um svona stand alone fall sem tilheyrir ekki ákveðnu tilviki
Eitt sem að
við getum nefnt hérna í viðbót er það að
Við sjáum það til dæmis ef við segjum hérna Ég ætla að búa til annan counter counter tveir hérna
Og ég kalla á smiðinn bý til annan counter
og segjum að ég segi ég já við skulum bara gera lykkju hérna for i in range
hvað núll upp í fimm
Og köllum á
Í hvert sinn
Prentum síðan út
counter tvo
Keyrum þetta
þá sjáum við að seinni teljarinn hann hefur gildið fimm Það þýðir það
að fyrri teljarinn sem hefur gildi tvo hann á sér tilvikabreytuna value Hún hefur einmitt gildið tveir en seinna tilvikið sem heitir counter tveir Hann á sér líka
tilvikabreytuna
value en hún hefur annað gildi hún hefur fimm er það ekki
Og þetta heita sem sagt instance variables
Það er reyndar til annað sem heitir class variable
Sem við getum aðeins skoðað hérna
í klasanum
og tilheyrir ekki einstöku tilviki
heldur er sameiginleg breyta öllum tilvikum getum við sagt Ég gæti sagt hérna
segjum ég vildi halda utan um fjölda af counter um sem eru yfir höfuð búnir til
þá gæti ég sagt hérna já ókei eigum okkur eitthvað sem heitir the number of instances
látum það hafa gildið núll Og í sérhvert sem að nýtt tilvik verður smíðað nýtt tilvik af counter
Og þá ætla ég að vísa í hana sem counter punktur num instances
plús sama sem einn
Þannig í sérhvert sinn sem kallað verður á init
þá hækka ég einhverjar breytu sem heitir num instances en sú breyta tilheyrir kantar klasanum og hún er ekki sérstök fyrir
tilvikið sjálft vegna þess að ef svo væri mundi ég nota self fyrir hana að nota í klasa nafnið
Já en hvernig get ég séð
hvaða gildi þessi breyta hefur sem er sem sagt klasa breyta eða class variable
Jú ég gæti bara prófað að prenta til dæmis eftir ég er búinn að búa til eitt tilvik af counter
Getum við ekki bara prentað út hér
Counter punktur num instances Þannig ég vísa beint í klasa breytuna í counter
Prentum það út
Sjáið þá fékk ég eitt hérna vegna þess ég var búin að búa til eitt tilvik af counter
við getum þá gert það aftur eftir að ég bý til seinna tilvikið af counter þá ætti ég að fá tvo
tilvika breytu sem að vísar í með self og
Já kannski að lokum að nefna það að
þegar við erum að búa til klasa eins og counter
þá erum við í mörgum tilvikum í ákveðnu hlutverki sem svona
hönnuðir á klösum Við erum að búa til að hjúpa ákveðna virkni
búa til klasa
þar sem við hjúpum ákveðna virkni sem er eins og við töluðum um að áður en það eru gögn og aðgerðir sem við hjúpum og við erum að búa til þessa klasa fyrir aðra forritara til að nota
Og það sjáum við til dæmis í þessu aðalforriti hér
ég er gæti það gæti verið einn forritari sem býr til þennan klasa counter og hann yrði geymdur í einhverju skrá sem heitir counter punktur p y Svo gæti
annar forritari import að þá skrá
og nýtt sér þennan counter með því að búa til tilvik af honum
og nýtt sér raunverulega skilin interface ið Og aftur sem ég er alltaf að ítreka að
sá forritari sem eru að nota counter hann þarf ekkert að vita um hvernig viðkomandi hlutur er útfærður
hvaða aðgerðir er um að ræða Menn þekkja skilin til að nota geta nýtt sér og notað hlutinn
Bara aðeins til að klára þetta vegna þess að ég var búin að setja einhverjar athugasemdir sem eru svona skýringar
það sé alveg á hreinu hér að num instances
Það er þessi munur instance variable versus class variable
Byrjum aðeins á á set
Þannig að við gátum ekki til dæmis vísað í tiltekna stöðu í þeirri gagnaskipan með því að sækja til dæmis stak númer fjögur vegna þess að viðkomandi gagnaskipan leyfir ekki aðgang í tiltekinn stað miðað við stöðu þannig að þetta er ekki um þarna er ekki um að ræða sequence
Dictionary geymir key og value eða lykil og gildi en mengi eða set geymir raunverulega ekki svona par heldur bara eitt tiltekið gildi og raunverulega má segja kannski frekar að það geymi einmitt lykil vegna þess að bæði dictionary og set eru hönnuð þannig að maður sé fljótur að sækja eða aðgangur að tilteknum ly ly lykkli sé mjög hraðvirkur Þannig að það má raunverulega líta á set sem gagnaskipan sem geymir bara lykil og gildið er í sjálfu sér lykillinn sjálfur líka
En förum aðeins hérna yfir í forrit sem ætti kannski að ætti þið ættuð kannski að þekkja dálítið vegna þess að þetta er eitt forrit eða eitt verkefni sem var í hlutaprófi númer tvö
Og þetta var það forrit sem hét list set og ég er hérna kominn með lausnina sem er er var gerð aðgengileg á github og ef við aðeins förum yfir þessa lausn þá er það fyrsta sem er gert hér var er að kalla á fall sem heitir get set sem að skilar greinilega mengi til baka
Síðan er kallað aftur á fallið get sett til að skila öðru mengi til baka
Takið eftir það er verið að nota sama fallið eðlilega til þess að skila mengi og í hvoru tilvikinu fyrir sig er verið að í fyrra tilvikinu er verið að skila mengi sem heitir set einn og í öðru í hinu tilvikinu mengi sem heitir set tvö
Síðan ef við berum eru print setningar hérna tvær sem að prenta út set einn og set tvo svo er kallað á sérstakt fall sem heitir intersection sem finnur út sniðmengi þessara tveggja falla það niðurstaðan af því fer yfir í breytu sem heitir set þrjú viðkomandi intersection er prentað út hérna með print skipun og í síðasta lagi er kallað á fall sem heitir union sem tekur set einn og set tveir og skilar sammengi þessara tveggja og prentar það svo út að lokum
Þannig að þetta ef maður les þetta aðalforrit þá ætti þetta að vera tiltölulega læsilegt vegna þess að þetta er í sjálfu sér bara röð af fallaköllum er verið að kalla á get set og print og intersection og union og print og svo framvegis
Ef við aðeins rúllum yfir útfærsluna á þessum föllum þá sjáum við til dæmis að get set sem að fallið sem að skilar mengi það biður notandann um að slá inn stök í menginu með space á milli það strip ar þennan streng þannig að það séu ekki white space í honum og split ar svo niðurstöðunni
Síðan er notað þetta svokallaða list comprehension hérna sem að rúllar yfir sérhvert stak í a list og býr til integer úr því staki og safnar saman þessum stökum yfir í í lista
Að lokum er kallað á eitthvað fall hérna sem heitir make sorted set sem að tekur lista og býr raunverulega út til út úr því mengi sem er raðað
Hvað er make sorted set
Það tekur inn lista það byrjar á að kalla á fall sem heitir unique elements sem að sér til þess að sérhvert stak í þessum lista sé einkvæmt að það innihaldi ekki tvær kópíur af sama stakinu og skilar svo röðuðu raðaðir útgáfu af þessu a set
Þannig að hérna sjáum við svona dæmi um lausn þar sem að verið er að kalla eitthvað fall sem heitir make sorted það nýtir sér síðan annað fall sem heitir unique elements
Og hvað gerir unique elements
Það einfaldlega eins og hérna segir returns a new list containing the uning elem unique elements in a list hleypur í gegnum listann ítrar yfir listann hérna
Ef að stak stakið element er ekki komið í niðurstöðuna þar sem niðurstaðan er tóm í upphafi þá er stakinu bætt við þennan result lista og að lokum er read re result listanum skilað til baka þannig að þetta sér um að eyða raunverulega stökum sem eru eins
Þannig að niðurstaðan er sú að það verður bara stökin verða einkvæm
Þannig að þetta er þá make sorted kallar a unique elements og skilar svo sorter aðri raðaðri útgáfu af þessum lista takið eftir því að að þetta er allt hérna listavinnsla sem á sér stað vegna þess að það er verið að það var krafa raunverulega í dæminu að það átti að útfæra þetta sem sem lista þetta heitir list set og það er ekki verið að nota hér eitthvað innbyggt gagnatag sem heitir set enda var ekki búið að læra um það á þessum tíma
Og það sem við eigum eftir cover a hér í viðbót er það að það er kallað á fallið intersection og union
Og hvað gerir intersection
Það tekur set einn og set tveir hvort tveggja eru listar á sér eitthvað hérna sem heitir result set sem er tómt í upphafi hleypur í gegnum fyrir listann og fyrir sérhvert stak er athugað er stakið í seinni listanum
Ef svo er þá er því append að í niðurstöðuna vegna þess að þarna er verið að reikna sniðmengi
Sniðmengi eru eru þau stök sem eru sameiginleg listunum tveimur
Union er síðan það að búa til sammengið þá er það fyrsta sem er gert hér er að leggja saman lista eitt og lista tvö leggja saman það þýðir að það er verið að skeyta saman þessum stökum þannig að set einn plús set tveir þýðir að öll stökin í set einum og set tveimur eru sett í nýjan lista sem heitir result list og svo er bara verið að nýta sér fallið sem heitir make sorted vegna þess að make sorted það sá einmitt um að búa til unique elements og skila raðaðri útgáfu af listanum
Og ja hver var virknin hérna áður
Eigum við kannski aðeins að rifja það upp
Þegar við keyrum þetta forrit við skulum hoppa hérna yfir í Mími Þetta var dæmi um inntak þetta var fyrsti listinn
Hvað er það sem við erum raunverulega að gera
Við erum að fara að gera það sem heitir refactoring code refactoring
Semsagt að endurskipuleggja kóðann án þess að breyta virkninni without changing the standard behaviour
Af hverju eru menn að gera þetta
Ja til dæmis það er að segja til dæmis að gera kóðann læsilegri og að minnka flækjustig
Þannig að það getur þýtt það að að það verði auðveldlega auðveldara að viðhalda það er það sem heitir maintainability hérna það verði auðveldara að viðhalda forritinu seinna meir ef maður gerir kóðann læsilegri og minnkar flækjustig á honum
Og það er það sem við ætlum að gera hér við ætlum að beita code refactoring á þennan kóða hér án þess að að virkni hans sem að felst má að einhverju leyti segja hér í aðalforritinu breytist
Notandinn verður raunverulega ekkert var við breytingar neinar breytingar af ráði getum við allaveganna sagt í aðalforritinu
Þannig að þær breytingar sem við gerum eru raunverulega í einstökum föllum
Það bað um stök frá notandanum þar sem UNK bil á milli og skilaði lista til baka sem átti að standa fyrir mengi og hann var raðaður
Það er hér make sorted kallar á eitthvað sem heitir unique elements en nú þar sem við ætlum að nota okkur set innbyggða tagið þá virkar það nú þannig að það sér sjálft um það að sjá til þess að það verði einkvæm stök í menginu þannig að við þurfum ekki lengur þetta fall sem heitir unique elements ég ætti að geta bara tekið það burt