>> [TÓNLIST spila]
>> DAN AMRMENDARIZ: Allir, velkomið að CS50 námskeið,
iOS App Development með Swift.
Ég er Dan Armendáriz, og ég er preceptor tölvunarfræði hér í Harvard.
>> Og næsta sólarhringinn er að fara að vera vindbylur ferð eins mikið efni
um þetta efni eins og við getum passa.
Ég mun senda öllum kóða sem þú munt sjá í dag á netinu.
Við gætum ekki verið fær um að í raun að fara yfir allt
að ég er að ég er sýna þér í þessum tíma.
En að minnsta kosti vonandi gegnum umsagnar kóða,
þú munt vera fær um að reyna að reikna út hvað nákvæmlega er að gerast fyrir þá hluti
sem við gerum ekki alveg komast að.
>> Heild, uppbyggingu tala í dag mun vera sem hér segir.
Við munum byrja á að gera sumir undirstöðu setningafræði með Swift tungumál,
fara inn í sumir af the fleiri háþróaður setningafræði Swift tungumál.
Vegna tungumáli er mjög nútímalegt og það
hefur mikið af háu stigi lögun, hlutir sem við höfum ekki
séð í C um CS50, eða jafnvel sumir öðrum tungumálum
að við höfum byrjað nota í CS50 eins PHP,
þannig að ég er að fara að þurfa að reyna að kynna einnig nokkur efni sem
tengjast hærra stigi tungumálum að þú getur ekki séð í dýpt í CS50,
en þú munt sjá í seinna tölvunarfræði bekkjum.
Svo það er að fara til vera a þétt pakkað klukkustund.
Og ekki hika við að láta mig vita ef þú hefur einhverjar spurningar.
Svo ef þú hefur áhuga í að gera þróun
með Swift, eða bara allir iOS app þróun,
það eru nokkrar reglur.
Fyrst af öllu, þú þarft að vera með Mac, keyra í dæmunum
sem við erum að fara að vera með í dag, tiltölulega ný útgáfa af OS
X. Í þessu tilfelli, ég er að keyra X 10.5.
Þú getur verið í gangi 10.11 ef þú vilt.
En allt sem þú ert að fara að sjá er þar Xcode 7 og síðar,
sem hefur nýjustu útgáfu af Swift, sem er Swift 2,0.
Þetta er í raun nokkuð Mikilvægur munur.
A einhver fjöldi af the setningafræði hefur breytt nokkuð verulega
í sumum tilfellum frá Swift 1.0, sem kom út á síðasta ári,
til Swift 2.0, sem bara kom út í haust.
Þannig að við erum að fara að sýna Swift 2.0.
A einhver fjöldi af þeim hlutum sem þú leitar að á netinu
þegar þú ert að reyna að fá fleiri Upplýsingar um ýmsum hlutum,
þú mega vilja til skýr leita Swift 2
frekar en bara venjulegur gamall Swift að gera viss um að þú færð setningafræði rétt.
>> Í raun, þetta er yfirleitt satt.
Það er hraður magn af þróun gerast í Swift tungumáli
síðan Apple gefa út það, held ég hvað, það hefur verið rúmt ár
núna.
Og það hefur breyst verulega á þeim tíma.
Og svo ekki vera svekktur ef, þegar þú ert að leita í kring
fyrir efni á Swift eða hvernig á að ná eitthvað með einhverja kóða dæmi
eða eitthvað sem það er ekki raunverulega vinna á Swift 2.0.
Gakktu úr skugga um að þú ert að leita sérstaklega fyrir þessi útgáfa
til að reyna að lágmarka áhrif af mismunandi útgáfur og þær tegundir af hlutum.
>> Ég ætla að reyna að benda á bara sumt sem eru mismunandi að eldri útgáfur.
En það er eitthvað að horfa út fyrir.
Það er líklega að fara að vera einn af stærstu höfuðverkur
sem þú verður að hafa með Swift er að finna dæmi kóða sem er eldri, jafnvel bara
eftir nokkra mánuði, að reyna að nota það í nútímalegri verkefninu.
Og það bara einfaldlega virkar ekki.
Þú ert að fá þýðanda villur, setningafræði villur, alls konar brjálaður efni.
Svo bara vera þolinmóð við það, og þú verður vonandi
hafa nokkuð góðan reynslu með Swift heild.
>> Nú getur þú í raun join-- og ég vona við í raun enn hafa þessa þessu year--
CS 50 s Apple app þróun lið, sem
mun leyfa þér að setja einhverjar apps sem þú býrð á IOS tæki.
Svo taka a líta á þessa slóð ef þú hefur áhuga á að gera það.
>> Svo bara nokkrar atriði um Swift sig.
Það er a safna saman tungumál.
En þú munt sjá að sumir af þeim eiginleikum sem við notum
leyfa því að nota einnig í smá eins og túlkað hátt auk.
>> A einhver fjöldi af the setningafræði er fengið að láni frá C. Það er byggt og skrifað í C.
Og svo munum við sjá að það eru fullt af Takeaways
frá núverandi þekkingu þína frá C sem við getum höfn til Swift.
>> En það eru hlutir sem gera það mjög frábrugðin C
Það er mjög mjög tegund.
Það er sjálfvirk minni stjórnun.
Þú ert ekki að fara að þurfa að nota malloc eða frjáls hvar sem er.
Það er hannað fyrir almenn.
Svo í öðrum orðum, getur þú notað það í alls konar samhengi, frá Apple Watch
að iPhone alla leið upp í OS X, og jafnvel sumir framreiðslumaður, jafnvel sumir forskriftarþarfir.
En við munum sjá til þess að stuðningur forskriftarþarfir
er ekki alveg það enn sem það er í öðrum tungumálum.
Svo líklegast að þú munt vera að nota þetta eingöngu fyrir þróun
á Mac eða iPhone.
>> Og það hefur a einhver fjöldi af nútíma lögun.
Og mikið af þessum hlutum eru efni sem við erum að fara að reyna að takast á dag,
en einnig efni okkar sem hreinskilnislega, við getum verja allt námskeið.
Í raun, CS 51, sem er boðið er næsta önn,
fjallar mikið um þessi málefni og er þeim lýst hér á eftir.
Svo þú getur eytt heilt misseri skilja þetta.
En við erum að fara að reyna að komast í gegnum þá
að minnsta kosti nóg að þú skilji hvað er
gerast þegar þú horfir á Swift program
og vera fær um að hakk leið í gegnum það fyrir lokaverkefni.
>> Nú einn af the bestur lifnaðarhættir sem þú getur fá frekari upplýsingar um þetta
er satt bara í gegnum Apple veitt skjöl fyrir Swift.
There er a einhver fjöldi af API sem eru í boði.
Og þetta er gott heimili undirstaða fyrir þig að leita að, tiltekin atriði sem þú
langar að gera með API felur IOS.
Ef þú vilt nota myndavélina til dæmi, getur þú byrjað að leita hér,
og einnig nota Google og stafla Yfirfall eins og venjulega.
>> Einhverjar spurningar um þetta áður en við stökkva rétt í?
Allt í lagi.
Skulum fara.
>> Svo fyrst, ég er með Fjöldi dæmis eru skrár.
Og ég ætla að reyna að stíga í gegnum þá tiltölulega fljótt.
Þetta er Hello World skrá fyrir Swift.
Það er mjög einfalt.
Það er leið fleiri athugasemdir en það eru raunveruleg númer.
Tilkynning raunverulegt númer er mjög botn á línu 14.
Það segir prenta.
Og þá er það fall hringja.
Við erum liggur inn í það í band heitir Hello CS50.
Takið eftir að það er engin semikommum.
Takið eftir að það er ekkert int helstu.
Það er ekkert af cruft sem við höfðum með C
Þegar við erum að nota Swift á þennan hátt, sem er bara skrifað í textaskrá
og geymdar á tölvunni minni, þá Ég get þýða það og keyra það.
>> Takið eftir að hér er ég ekki nota CS50 IDE.
Gert er ráð fyrir að ég er gangi og að ég er á OS X,
og að ég hef Xcode þegar sett á þessari vél til þess að þetta
að raunverulega virka.
En þetta er bara eðlilegt textaskrá að við getum þá saman og breyta.
Svo skulum sjá hvernig þetta í raun virkar.
Hvað ef ég vil þýða það?
swiftc 1.swift.
Eftir smá stund eða tvær, það munt sjá að við höfum nú
saman þetta í skrá sem kallast 1.
Og nú höfum við prentað CS50 okkar, okkar Hello World forrit frekar.
>> Tilkynning einn annar hlutur sem vel er að sjálfgefið,
höfum við ekki að inntak a / n að prenta nýja línu.
Sjálfgefið, prenta virka í Swift mun prenta nýja línu fyrir þig.
Þú geta fara framhjá valfrjáls viðbótar breytu til að segja það að gera það ekki.
En Google til að fá meiri upplýsingar um það.
Sjálfgefið, mun það gera að prenta línu.
>> Allt í lagi, þannig að við skulum fara þá að einhverjum öðrum hlutum.
Og hvernig getum við skilgreina raunverulega breytur?
Við getum gert það er að nota eitt af tveimur aðferðum.
Og eitt sem ég vil segja þér um fyrsta er þetta skulum skilgreining.
Og þetta er mikilvægt því í raun
hvað við erum að gera er að skilgreina stöðug.
Við erum að fara að búa til breytu, eða öllu heldur stöðug nefndi,
veita það sumir data-- í þetta mál, band Dan.
En með því að nota þetta skulum leitarorð, við erum að segja
að þetta variable-- eða aftur constant-- heitir
Nafnið er aldrei að fara að breyta.
Það er að fara að vera immutable um lengd þessarar áætlunar
eða um allan lengd samhengi
að það breyta er í boði.
>> Þetta er mjög mikilvægt að þegar þið hafið einhverjar upplýsingar sem er ekki
að fara að breyta í forritinu, og þú munt sjá úrval af dæmum
um þegar við viljum nota láta á móti hinum setningafræði,
það er mikilvægt að þú notir láta þar sem hægt er vegna þess að þetta lætur
tungumálið sem það er ekki að fara að breyta,
og það getur í raun gert a einhver fjöldi af hagræðingar
til að bæta hraða og öryggi program.
Og með því að öryggi, meina ég ekki láta það hrun með brjálaður villur
að við gætum verið vanir því að sjá í C.
>> Þá getum við notað band innskot að þjappa saman þetta innan streng.
Svo við getum séð í þessu prenta lína, prenta halló,
og þá nota sviga opna parens, og þá nafn breytu mínu,
í þessu tilfelli fasti, loka sviga.
Ég er í raun þá að setja Innihald þessa breytu sem heitir nafni
inni í band og þá prentun niðurstöðu þar.
>> Það er eitt annað breyting í þessa skrá sem er að ég hef, á the mjög toppur,
setja í klabbið línu, sem í rauninni bara skilgreinir
að ég vil nota Swift túlkur, sem
þýðir að ég hef ekki lengur að saman þetta tiltekna forrit.
Ég get bara keyrt það eins og eigin handriti hans.
En þetta er, í þessu tilfelli, á bak tjöldin að vera saman og þá
að hlaupa.
Það er bara ósýnilegt okkur.
>> Allt í lagi, þannig að við skulum fara.
Svo er það hluti af brögðum sem bara gerst áður.
Ég sýndi þér að ég gætum skilgreint fasti.
Og ég gæti veitt einhverjum gögnum til að gera það.
En í þessu tilfelli, eftir að ég gerði ekki reyndar tilgreina tegund gagna
að það sé.
Og það er vegna þess að þýðanda, Swift getur
álykta tegund gagna bara byggt á gögnum sem ég setti inn í það.
Því það veit að með því að meta þetta breyta hérna, þessi gögn réttur
hér, veit það að það er band.
Og svo er þetta fasti nafn því fara til vera a band eins og heilbrigður.
>> En við getum líka verið skýr um þá gerð sem er
við erum að fara að nota fyrir fastar eða breytur
með því að nota þessa setningafræði instead-- láta nafn ristill String jafngildir
Dan, sem í þessu tilfelli þýðir að við erum að fara að skilgreina fastann nafn.
Það er að fara að vera af taginu String.
Og verðmæti er að fara að vera Dan.
Nú önnur leið sem getum við búið variables--
og þetta eru breytanlegur breytur, sem þýðir að við erum í raun, að fara
til að breyta efni þeirra einhvern í þann tíma sem samhengi
sem að breyta er defined-- vér nota VAR leitarorð stað láta.
En aftur, við vanræksla, nema þú vitir sem þú þarft að vinna þessi gögn,
reyna að nota láta fyrir flutningur framför.
>> Í þessu tilviki er ég þá tilgreina tegund gagna
að við reiknum með að vera inni þetta nýja breytu sem heitir merki.
Það er að fara til vera a band.
Og við erum að fara að þá concatenate tveir strengir saman, band halló,
og um streng táknað með breyta, eða öllu heldur stöðug nafn.
>> Svo er þetta ágætur vegna þess að þetta er nokkuð PHP eins og í að við
hafa mjög greiðan band samtenging.
Við höfum ekki sjálfkrafa nota hvers konar minni stjórnun
til að auka stærð og gera hvers konar fyndið hlutir þar.
Þetta virkar eins og við hefðum í raun búast.
>> Allt í lagi, einhverjar spurningar um þetta?
>> Nú önnur ástæða sem við þurfum að hafa getu
að vera fær um að skilgreina hvað tegund gagna breytur eru
er vegna þess að stundum við gerum ekki langar að frumstilla breytur
með nokkrum gögnum á benda á skilgreiningu.
Þannig að í þessu tilfelli, við skulum segja að ég vil byrja inputting
sumir einkunna inn í a bekk bók.
Jæja ég veit að einn af breytur sem mig langar til að vera
er að fara til vera a breytanlegur einkunn.
Og við vitum líka að við vil það að vera heiltala.
En kannski við gerum ekki enn hafa að grade í boði.
>> Í Swift, þú þarft að skilgreina hvaða gögn
sem er tengd við breyta eða láta stöðug
áður en þú getur raunverulega nota þá breytu.
Vegna þess að það er mjög tegund, þú þarft að tengja gerð
með þessum breytum.
>> Þannig að í þessu tilfelli, ef ég hef ekki almennilega forsniðin fyrsta með nokkur gildi,
þá þarf ég að segja Swift hvað Ég býst við gögn gerð til að vera.
Og það er að fara að vera að sömu gögn gerð
um sögu þessarar áætlunar.
>> Nú þú gætir freistast eins fljótt og Ég hef búið til þessa einkunn breytu
og veitt það upp heiltala af 100, nú ef ég
vilja til að reyna að concatenate band með því heiltala,
Sumir gætu freistast til enn nota að strengur samtenging rekstraraðila
eins og við gerðum bara nokkrar línur áður.
En því miður, Þetta mun í raun ekki
vinna, vegna þess að þú ert í raun að framkvæma
aðgerð á tveimur mismunandi gerðum.
>> Nú er þetta mjög frábrugðin öðrum tungumál eins og PHP, sem eru í raun
loosey goosey með einhverskonar þeirra gerðum.
Þeir eru bara eins og, já, hvað, ég hugsa ekki.
Bara gefa mér eina tegund, og kannski ég gera hlutina rétt.
>> Í þessu tilfelli, Swift er mjög strangar um tegundir
sem þú ert að fást við.
Þetta samantekt rekstraraðila eða samtenging rekstraraðila
hefur í raun nokkra mismunandi möguleikum.
Þú getur gert samlagningin með heiltölur, eða þú
getur gert band samtenging, og kannski nokkrum öðrum hlutum eins og heilbrigður.
En ef sá rekstraraðili ekki viðurkenna hvað er hvorum megin við það,
eða öllu heldur samsetning þeirra tvær tegundir, er ekki það sem það er von,
þá er að fara að valda bilun.
>> Þannig að í þessu tilfelli, hvað þýðir það að hafa band auk heiltala?
Vel í tengslum við þetta, viljum við sennilega
að gera band samtenging aðgerð.
En auðvitað tölva er ekki þessi tegund af samhengi.
Og svo þurfum við að veita að frekari upplýsingar
að láta það vita hvað það er að við viljum gera.
>> Svo í öðrum orðum, því sem Swift er mjög tegund
þýðir að þú þarft að gera a smá aukaverk
að fá það til að reka leiðin sem þú vilt.
En vegna, það er öruggara.
Og þegar þú hefur tekið mið af þeim tegundum,
það bara hreinskilnislega byrja að vinna nokkuð vel.
>> Þannig að í þessu tilfelli, myndi við þá framkvæma band samtenging
með sérstaklega steypu heiltölu í streng
setja hann í þetta höfuðborg S String virka,
og þá með band samtenging rekstraraðila til að breyta merki breytu okkar,
og þá prenta það út.
>> Svo langt, svo góður?
Allt í lagi, við skulum fara.
>> Nú eru ýmis gögn tegundir sem við getum notað í Swift.
Eins og þú hefur orðið vön að, við getum búið til breytanlegur fylki.
Og það array getur aðeins innihalda eina tegund.
>> Þannig að í þessu tilfelli erum við að fara að búa til a breytanlegur fylki heiltalna, sem
við skulum kalla bekk, og við munum vera fær um að geyma að í þessu veldi krappi
snið eins og þú hafir vaxið vön að í ýmsum öðrum tungumálum.
En eftir því að hér erum við skilgreina nokkra hluti.
einkunna er breytanlegur variable-- við ekki nota let leitarorð.
Svo það þýðir að við getum þá breyta Innihald þessu fylki.
Það er af gerðinni Array Int, og við getum sagt að
byggt á þessum hornklofum hér.
>> Nú einn af the ágætur hluti um þetta er að við
hafa aðgang að fullt af Viðbótarupplýsingar
um fylkisins bara með nokkrar einfaldar punktur tákn.
Svo til dæmis, grades.count veitir okkur
fjöldi atriða sem eru í því array, sem við getum þá nálgast nokkuð
auðveldlega einfaldlega að nota þessi punktur tákn.
>> Ef þú vilt bæta við fleiri atriði til þessa array,
þú getur ekki gert PHP stíl þar sem þú bara skýrt skilgreina,
á tilteknu vísitölu, eitthvert gildi sem þú vilt setja inn.
Þess í stað skal nota auka aðferð í array tegund
til að bæta þessi atriði, 95, á þennan lista.
>> Svo nú hefur þetta array eftirfarandi contents-- 100, 0, 90, 85.
Og nú höfum við bætt 95 til að það sem vel.
>> Það eru aðrar leiðir við getum bæta hlutina.
Þú getur í raun notað a samantekt rekstraraðila,
sem verður að túlka sem fylki viðskeytingarfyrirspurn aðgerð.
Og þú getur þá bæta öðru array, með innihaldi sem er 70 og 80,
að þessi fylking.
Svo nú höfum við innihald í þessari breytu
grades-- 100, 0, 90, 85, 95, 70, og 80.
Þetta er bara ágætur lítill nokkur dæmi um setningarleg sykur sem Swift veitir okkur.
>> Svo ef við viljum að summa það bekk, við erum kannski
fara til að vilja árétta yfir hverjum lið í þessa lykkju.
Og við höfum, í Swift, hugmyndin af fyrir lykkju eins og þú vildi búast við.
En hvernig sem við kynna svið er aðeins öðruvísi.
Þannig að í þessu tilfelli, til að summa allt, við munum
fara að búa tímabundið breytu sem heitir summan í röð fyrir okkur
að viðhalda þessum telja.
>> Og taka fyrir okkar lykkja byggingu hér.
Fyrir vísitölu í 0 .. <grade.count.
Þannig að þetta smíði, 0 .. <grades.count er úrval aðgerð þar sem við erum
segja að við erum að fara að búa til a svið af heiltölur frá 0 upp
að þó ekki grades.count.
Þannig að þetta verður 0, 1, 2, 3, 4, 5, allt þar þó margir One
áður grades.count.
>> Svo er þetta öðruvísi en hvernig við myndi venjulega notað fyrir lykkjur
þar sem þú þyrftir einhverja vísitölu breyta, setja það jafnt 0 í fyrstu,
og þá fella það fyrr en nokkru gildi minna en telja atriði
í því fylki.
>> Svo er það breyting að þetta, í raun,
sem gerir okkur kleift að mjög auðveldlega setja mismunandi tegundir af svið.
Ef þú breytir þessu svið til þrír punktar, 0 ... grade.count,
þetta táknar svið 0 að grades.count innifalið,
sem þýðir að þessi tala er einnig þá innifalinn í því bili.
>> En þetta er mjög vel fyrir þessum nákvæmlega það,
þegar við þurfum að framkvæma endurtekningar á lykkju
vegna þess að þau Vísitölur eru núll verðtryggð, eins og við höfum séð á öðrum tungumálum
einnig.
Einhverjar spurningar um þetta fyrir lykkju?
>> Svo er það óbeina skilgreining þessarar vísitölu breytu,
Hvers virði hefst á 0, og áfram á hverju lykkja endurtekning
aukist um 1 upp til að benda sem er jöfn grades.count,
á hvaða tímapunkti lykkja fer úr hamnum.
>> Takið eftir að í band okkar innskot hér,
við getum í raun gert nokkrar einfaldar misnotkun til þessara gildum.
Svo Vísitala auk 1 mun í raun framkvæma samlagningu þess virði
vegna vísitalan er, í þetta mál, heiltala.
Og á þeim tímapunkti, það mun sfðan hægt að breyta í band
og brúað í þessum streng hér, og prenta út eins og við hefðum átt von á. .
>> Og ágætur hlutur um fylki hér er
að við erum einnig fær um að hafa Sækir gildi og setja gildi
með veldi krappi tákn sem við höfum séð í öðrum tungumálum eins og heilbrigður.
>> Allt í lagi, svo héðan, við nú reikna summu okkar á öllum einkunnum okkar.
Nú konar næsta rökrétt skref væri
að gera skiptingar aðgerð að finna út meðaltal þeirra einkunna.
En eitthvað mikilvægt hér er að gerast, sem
er að þessi upphæð er kannski heiltala.
En við þurfum að framkvæma sumir konar manna deild.
Og þetta er að fara að vera afar mikilvægt þegar
við viljum að framkvæma þessa aðgerð, vegna þess hvað við erum að segja
er að við þurfum í raun framkvæma skiptingu á tveimur tvíliðaleik.
Og aftur, því Swift er mjög mjög tegund,
við verðum sérstaklega sett allt í atriði til tvíliðaleik áður en við í raun og veru
framkvæma þessa aðgerð.
>> Svo í röð fyrir okkur til framkvæma tvöfalda skiptingu,
það er ekki nóg fyrir bara einn af þeim atriðum að vera tvöfaldur.
Báðir hafa þeir að vera tvöfaldur í röð fyrir snögg
til að vera viss um að þetta er það sem við viljum gera.
Þannig að við munum þá sérstaklega Typecast summan sem við höfum reiknað ofan
og telja einkunnum til tveggja manna, og þá framkvæma þessa aðgerð og geyma
að í þessu nýja breytu, eða öllu heldur þetta nýja fastann meðaltali
sem mun hafa hvaða tegund þú ímynda sér?
Double, já.
Þannig að í þessu tilfelli, við þarft ekki að tilgreina það
vegna þess að það er hægt að álykta frá Rekstur hvaða tegund af gögnum meðaltali
mun vera.
Og Swift er almennt nokkuð gott um að vera fær um að álykta tegundir.
>> Viltu sjá þetta hlaupa, eða get ég halda áfram?
Ég vil halda áfram.
Einhverjar spurningar um eitthvað af þessu?
Great.
>> Nú erum við að fara að byrja að fá að ódýr stuff-- Skilgreina aðgerðir,
og a par af öðrum tegundum sem eru einstakt að Swift sem þú hefur ekki
séð á öðrum tungumálum Fram til þessa,
en þeir eru til staðar í öðrum tungumál sem þú gætir fundið síðar.
Svo fyrst ef þú vilt að skilgreina fall,
að skilgreina það með angurvær orðinu virka, og þá virka nafn,
og þá í sviga, rökin sem þú vilt að virka til að samþykkja.
Rökin verða einnig specify-- generally--
verður einnig að tilgreina tegund af gögnum sem þeir eru, nema þeir er hægt að álykta.
Og við munum sjá að lítið hellir í réttlátur a lítill hluti.
>> Þannig að í þessu tilfelli höfum við virka kallast printGradeCount.
Við erum að fara að taka a variable-- eða öllu heldur í þessu tilfelli,
a constant-- heitir gradebook.
Og það er að fara að vera slá fjölbreytta heiltölur.
Nú er það eitthvað það er mjög mikilvægt hér
að ég vil að þú skiljir.
Það er að sjálfgefið, þessi rök sem eru inntak í þessa aðgerð er
skilgreint með óbeinum láta leitarorð, sem þýðir að ég get ekki breytt þessu
gradebook breyta hér.
Og þessi tegund af vit, vegna þess að þú ert liggur gögn í.
Og þú kannski vilt það ekki að breyta undan þér.
Það er hægt að beinlínis nefna að þetta er breytilegt með því að setja
sem Var leitarorð hér.
En það er Gotcha sem við höfum tekið eftir að fólk hefur gert í fortíðinni
er að þeir gera ráð fyrir að það er að fara að vera breyta þegar í raun, það
er fasti.
>> Allt í lagi, svo hér þá, í ​​þessu tilfelli, við erum ekki að tilgreina hvaða afturhvarfstag.
Við munum sýna þér hvernig á að gera sem í bara smá stund.
En eftir því að hér höfum við bara einfalt ef ástand.
Ef gradebook er tómur, sem í þessu tilfelli
er bara eign þessa tölu array, þá erum við að prenta út eitthvað.
Annars við gerum eitthvað annað.
>> Pretty einfalt svo langt að ég held.
En stoppa mig ef þú hefur einhverjar spurningar.
>> Nú, að meðaltali, einnig tekur þessi aðgerð sumir rök, eða öllu heldur einn rök,
sem er gradebook, og að þessu sinni er að fara að skila tvöfalt tegund.
Vegna þess að það er computing að meðaltali og það er
fara til raunverulega skila sem reiknaður meðaltal til að kalla línu.
>> Í þessu tilfelli, tilgreina við við aftur ferðar eftir ör.
Og þetta gæti finnst skrýtin tilfinning í fyrstu.
Þú hefur vaxið vön að setja aftur
tegund fyrir nafni fallsins.
En ef þú heldur að þetta hvað varðar stærðfræði,
eins og þegar þú ert stærðfræði sem skilgreint fall,
þú ert með virka með sumir inntak, og það framleiðir framleiðsla.
Og það er einmitt það þetta er ætlað að líkja eftir.
Og það er a par af öðrum tungumálum sem hafa svipaða setningafræði eins vel,
en sennilega enginn þú hefur séð í CS50.
En samt ekki að rugla með það.
Örin þýðir hvað er að gerast að skila í þessu tilfelli.
OK, svo hvernig við erum að fara að reikna þessa meðaltali?
Jæja, ef gradebook er tóm, og þá erum við
að fara að skila 0, sem kannski sanngjarnt leiðin til að meðhöndla þetta.
Ég veit ekki, við skulum koma aftur til að í smá.
Þetta getur í raun ekki vera sanngjarn vegur
að reikna að meðaltali ef við höfum tómt gradebook.
>> Þá munum við bara framkvæma samlagningin okkar.
Takið eftir að hér við í raun með annað útgáfa af a
fyrir lykkju, sem gerir okkur kleift að árétta yfir hvert einasta atriði í fjölda
og setja hvert frumefni í eigin breytu sína.
Með því að tilgreina fyrir bekk í gradebook, hvað við erum að segja
er að við erum að fara að óbeint búa til nýja fastann
bekk sem er að fara til að tákna hvert einstakt atriði í gradebook
í hvert sinn sem er til hliðar iterates.
Svo í fyrsta skipti sem það er keyrt, einkunn mun
vera fyrsta atriðið í gradebook.
Í annað sinn það mun vera Annað atriði, svo framvegis og svo framvegis
þar gradebook hefur búinn sig staka.
Þá munum við vera fær um að summa það bekk í samantekt breytu okkar
og aftur meðaltali okkar eins og við höfum séð áður.
OK, einhverjar spurningar?
Já?
Áhorfendur: Ég hef tvær spurningar.
Númer eitt, hypothetically, getur þú keyrir heiltölu á þessu?
Þarf ekki að vera tvöfaldur, er það rétt?
DAN AMRMENDARIZ: Getur þú endurtaka þessi spurning?
Áhorfendur: Get ég gert heiltölu eins og við meðaltalið?
DAN AMRMENDARIZ: Getur þú do heiltölu sem meðaltal?
Svo aftur heiltölu meðaltali í stað þess að tvöfalda?
>> Áhorfendur: Return-- þig hafa það núna hér að neðan.
DAN AMRMENDARIZ: Hérna, aftur 0,0?
Áhorfendur: Já, bara aftur 0.
Svo það verður annaðhvort 80 eða 85, en ekki 85,2.
>> DAN AMRMENDARIZ: Svo í því tilfelli, þannig að það er nokkra mismunandi vegu
til að svara því.
Leyfðu mér að svara þeim í röð.
Svo ef ég geri bara þetta aftur 0, sem er 0 er heiltala gildi.
Og svo sem mun valda gerð villa fyrir þessu tilviki
vegna þess að það er von að tvöfalda en er þá aftur heiltölu.
Ef ég vil að skila heiltölu, ég get.
Ég get sett aftur gerð að int, aftur 0 hér,
og ekki framkvæma tvöfalda skiptingu.
En þá myndum við vera gera heiltala deild.
Og svo við myndum þá ekki fá meðaltal sem við myndum hugsanlega búast.
En já við getum breytt gerðir á þann hátt.
>> Áhorfendur: Og í öðru lagi, þér hafa einn tvöfaldur á toppinn.
En niðri, þegar þér gera aftur Double Double,
það er nú þegar sjálfvirkt aftur Double sniði.
Hvers vegna gera þú þarft samt að skilgreina það með ör á toppur með tvöfalt?
>> DAN AMRMENDARIZ: So í tilfelli, þetta er hluti
af the-- svo að endurtaka spurninguna, því það er fólgið frá aftur
tegundir hér, hvaða tegund þetta í raun er, við þurfum að vera skýr með Swift
um það sem við viljum komist út úr þessari aðgerð
þannig að þegar það virkar slá stöðva, það er hægt að ganga úr skugga um
að það sem við höfum í raun skrifað niðri í raun í samræmi við það.
Svo það er tegund af eins og ávísun með sjálfum konar aðstæðum.
En það are--
>> Áhorfendur: [inaudible] arrow?
>> DAN AMRMENDARIZ: Það eru tilfelli þegar við getum tilgreina að við getum óbeint
stilla aftur gerð.
En í þessu tilfelli, ég er ekki held að myndi vinna.
Það er einhver annar setningafræði að við munum sjá síðar.
>> Allt í lagi, þannig að þetta uppspretta númerið er svolítið öðruvísi
vegna þess að þetta flokka málatilbúnað fallið sem við köllum.
Leyfðu mér að sýna þér hvernig það virkar áður en við fara í raun á
að nokkrar áhugaverðar hlutum sem er að gerast í Swift.
>> Þannig að í þessu tilfelli, ef ég að keyra bara þetta númer, eftir því hvað það er að gera
is-- meðan, það er eins konar gefur mér undarlegt villa.
Ég þarf að fara það nokkrum heiltölur sem stjórn lína rifrildi.
Svo skulum sjá, 150 og 80, og ýta á Enter til að finna út hvað það er í raun að gera.
Það er að samþykkja hvert þessi gildi sem heiltölur.
Það er inputting þeim í gradebook.
Og þá er það að skila að meðaltali reikna
og outputting það sem við myndum búast.
>> En vitanlega er það eitthvað að fara á þessari höfnun eitthvað
eitthvað sem heiltala.
Eins og þú might muna frá þegar við vorum að takast á við stjórn lína rifrildi
í C og öðrum tungumálum, það fyrsta 0-ta lið í þeirri stjórn lína rifrildi
Listinn er nafn á stjórn að við framkvæmd í raun.
Þannig að í þessu tilfelli, ég ætla bara að lykkja yfir öllum stjórn lína rifrildi.
En ég ætla ekki að gera hvers konar fínum athuga að sleppa yfir að fyrsta.
Ég er bara beint eða ég óbeint stöðva sem af þessum tegundum
eru heiltölur áður en ég raunverulega framkvæma þessa útreikningur.
>> Og það er í raun hvað er að gerast hér.
Fyrir hvert rifrildi í Rök Ferlið er,
Ég ætla að framkvæma sumir stöðva.
Og í þessu tilfelli, ég ætla til að reyna að breyta fyrst
að rök í heiltala af framkvæma skýr Typecast,
vegna þess að það er, á inntak, a band og ekki í raun heiltala.
>> En þetta er góður af a furðulegur setningafræði, ef láta bekk jafngildir Int (rök).
Hvað er raunverulega að gerast hér er mjög
mikilvægt að nota þinn Swift.
Þetta er með því að nota það sem er kallað valfrjáls tegund.
>> Þannig að þetta virka, Int (rök), skilar ekki bara heiltölu, en skilar
það sem er kallað valfrjáls heiltala.
Og svo er þetta tegund af ein gerð ofan á gerð.
Þú getur konar ímyndað sér eins það er aftur eins pakka.
Og þegar þú opnar það pakki, það annaðhvort
hefur heiltölu, sem er afleiðing eða það hefur nákvæmlega ekkert í það á öllum.
Og þetta er gagnlegt sem stöðva villa vélbúnaður, vegna þess að í þessu tilfelli
við getum fundið út, var þetta Gerð umreiknings vel?
Ef það var, þá er það í raun að fara í heiltölu inni.
Annað það er að fara að hafa einhver gildi sem við munum kalla enginn, sem
er fulltrúi engin heiltala yfirleitt.
Það er í raun fulltrúi ekkert.
>> Og svo þetta ef framkvæmdir gerir okkur kleift að unwrap þessi pakki,
sem valfrjálst bindandi.
Og ef við erum fær um að unwrap að pakka og finna heiltala inni,
þá hvað við erum að segja hér er að við munum þá
leyfa sem gildi til að setja inn í Þessi fasti kallað einkunn.
Og þetta hluti af ef yfirlýsingu, í topp hluta af ef yfirlýsingu
mun hlaupa, því að Takið tókst.
>> Ef það gerist bara svo að það var villa kannski
í þessu skýr Gerð umreiknings frá streng að heiltala, kannski
það er gildi ABC til dæmis.
Og það er í raun ekki að fara að breyta til heiltala.
Þá mun það skila enginn, sem er ekki heil tala.
Og þetta ef yfirlýsingu og þá ekki.
Einkunn verður ekki til vegna það hefur engin heiltala efni.
Og það mun keyra þessa annað blokk í staðinn.
Já?
>> Áhorfendur: Nil er N-I-L?
DAN AMRMENDARIZ: enginn er N-I-L, já.
>> Svo er þetta kannski ein af herða hluti um Swift,
sérstaklega þegar þú ert í illgresið á IOS app
og þú ert í raun að reyna að gera sumir þróun þar.
Það er að fara að æpa á þig um valfrjáls.
Það er að fara að vera að biðja þig um spurningarmerki og upphrópunarmerki.
En þegar þú reikna out-- ef þú verja tíma til að vangaveltur út
hvað er að gerast með valfrjáls gerðum, þú munt spara þér mikið um höfuðverk
eins og þú ert að reyna að skrifa app í Swift.
>> Það er reyndar mjög öflugur lögun.
Og þú verður bara að taka minn orð fyrir það núna.
En við munum sjá þessa byggingu og sumir aðrir eins og það
í sumum af hinum kóða sem munum við sýna þér í réttlátur a lítill hluti.
>> Eru einhverjar fyrstu spurningar hér?
Svo er mikilvægt takeaway um að valfrjáls tegund er tegund af metatype.
Það annað hvort hefur gildi, og ef það gerist, þá er það
verður kannski hafa þessi gildi í tengslum með það, eða það hefur ekkert gildi alls,
og það er táknað með núlli.
Restin af þessu er kannski eins og þú vildi búast við.
>> Svo skulum pallinum upp erfiðleikar enn og aftur.
Og að þessu sinni, við skulum taka a líta á sumir aðrar tegundir gagna sem í raun eru.
Einn af þeim er orðabækur, sem er mjög svipað Python orðabækur.
Það er nokkuð svipað kjötkássa borð í C. Það er í raun kortlagning lykla
þar lyklar geta verið strengir.
Og þegar þú lítur upp þá lykla, þessir lyklar munu hafa gildi.
Svo það er ekki alveg array, en staðinn, nánar tengd
til kjötkássa kort eða kjötkássa töflunni.
>> Við skulum sjá hvernig þetta er ætlað að vinna áður en við í raun
fara inn í frumkóða sig.
Ef ég keyra bara þetta, ekkert gerist í raun.
Það er að segja mér að ég er að búast nokkrar breytur af eftirfarandi tegund.
Þannig að ég ætla að leggja til það nokkur vandamál setja nöfn,
svo pset0, kannski ég fékk 100.
Og pset1 fékk ég 5.
Og þá á prófinu, ég Vel gert og fékk 30.
Og oops, ég lenti á pláss hér.
>> Þegar ég lenti inn, þú getur séð það virkar smá útreikningur.
Það segir gradebook er þrír bekk, pset1, pset0, exam.
Og gradebook hefur þetta tiltekna meðaltali.
Svo aftur, við erum að vinna með þessum gradebook hugmynd,
en við erum að fara að halda áfram iterating við flókin starfsemi okkar.
>> Svo í upphafi, við erum bara fara að búa til fall sem
er ábyrgur fyrir prentun notkun.
Og það er þetta hætta virka sem mun bara
valdi hætta umsókn.
Þetta er ekki eitthvað sem þú munt nota í IOS app.
Þetta er aðeins, í þessu tilfelli, með stjórn lína rifrildi.
Næst munum við byrja að flytja í átt Xcode.
En þetta er sérstaklega við stjórn lína stíl program í Swift.
>> Við skulum taka a líta á sumir af the áhugaverður hlutur hér.
Við skulum sjá, eini a par af áhugavert að nefna kannski
er að í aðgerð mínu prentun fjölda einkunna,
þú might muna að ég hefði þessi listi af items-- pset1, pset0 og próf.
Þú getur í raun fljótt og auðveldlega gert þetta
með því að taka gradebook, sem er orðabók sem hefur lykla og gildi.
Finna öll lykill er í gegnum Punkturinn lyklar aðferð hér,
og þá nota þennan joinWithSeparator, sem mun þá taka alla lykla
sem við höfðum slegið inn, pset1-- eða Afsakið, pset0, pset1 og exam--
og concatenate þeim saman með kommu og pláss
til að búa til einn langan streng.
Þetta ganga aðgerð er bara gríðarlega gagnlegt í margvíslegu samhengi.
Og svo er það þetta joinWithSeparator.
>> Og þetta er eitt sem er breytt úr Swift 1 til Swift 2.
Það er notað til að vera Python style-- ef þú ert
þekki Python-- a Python stíl tengingaraðferðina á strengi.
En það er ekki lengur raunin í Swift 2.
Þú vilt nota þetta ef þú vilt til concatenate fjölda efni
saman með streng.
>> Svo kannski þá í okkar umfjöllun um meðaltal áður,
það gerir svolítið meira vit fyrir okkur að setja að meðaltali virka
til að vera mögulegt tvöfalt frekar en bara skýr tvöfalt.
Því við vorum að óvenjulegt ástand þar,
hvað ef gradebook raun hefur engin gildi innan þess?
Hvað ætti meðalávöxtun?
>> Jæja kannski í C þú hefði gert eitthvað
eins veitt varðstaki gildi, eins og 0,0, eða kannski neikvæð tala,
eða eitthvað bara fyrir hönd þess að það var einhver villa ástand
og þú kannski ekki í raun hafa getu til að reikna að meðaltali.
Jæja fegurð að tilgreina valfrjáls tegund væri að gera það.
Og ég er nú að segja öll þessi orð, en þetta í raun ekki nota optionals.
En við munum sjá að í bara mínútur þar sem við getum sett meðaltali
til að vera valfrjáls gögn tegund, svo að ef það skilar í raun einhverjum gögnum, þá
munum við koma aftur þessi gögn.
Annars munum við aftur enginn, að segja að þetta
hefur ekki þroskandi útreikningur.
>> Við skulum fara í eitthvað annað.
Svo héðan, við höfum verið að horfa á Öll þessi dæmi í skipanalínu.
En í raun hvað þú ert að fara að takast á við er Xcode.
Og einn af the ágætur hluti um Xcode er, og sérstaklega í Swift,
er að við höfum þetta hlutur sem kallast leiksvæði.
Og leiksvæði er alls ekki IOS app.
En það gerir þér kleift að gera tilraunir með Swift á mjög auðveldan hátt.
Þú getur slegið öll kóðann þinn.
Það er fallega setningafræði hápunktur hér.
Þegar þú býrð til nýtt skjal, það vilja spyrja þú ef þú vilt búa til leiksvæði.
En ágætur hlutur óður róló er að á hægri gluggann,
er það að sýna í raun þér framleiðsla úr kóðanum þínum.
Svo ef ég skruna niður, getum við séð hvað framleiðsla á ýmsum línum af kóða
raunverulega gerist að vera.
>> Þannig að í þessu tilfelli erum við að fara að breyta áttir bara smá
og tala um eitthvað sem er í raun mikilvægt að þetta hár stigi hátt
sem Swift rekur og það er þessi hugmynd um lokun.
Og þú hefur sennilega séð þetta svolítið í JavaScript.
Fyrir þá sem eru í CS50, lokun
eru mjög vinsæll, mjög góð leið til að gera háu stigi hlutir í nútíma tungumálum.
En það er einnig eins konar erfitt að sett höfuðið í kring í fyrsta skipti.
Þannig að ef þú horfir á þetta fyrsta sinn, sem er allt í lagi.
Bara líta á the uppspretta merkjamál og sjá ef þú getur fundið það út heima.
>> Þannig að í þessu tilfelli, við skulum segja að við langar að búa til mikið af forsprökkum
með nokkrum föstu gildi.
Þannig að í þessu tilfelli ég er að búa til virka.
Ég ætla að kalla það vald 2 sem tilgangurinn í lífinu
er að taka smá inntak og tvöfaldur það, og aftur það gildi.
Takið eftir að hér er ég samþykkja eina tegund af gögnum.
Það er að fara til vera a breyta heitir x.
Það er af gerðinni Double.
Og ég ætla að fara aftur tvöfalda hér.
Og ég ætla bara að fara að gera mjög hreinskilnislega, nokkuð
barnaleg leið tvöföldun þetta gildi.
Og ég skal sýna þér hvers vegna þetta er gagnlegt í bara annað.
>> Takið eftir að hér höfum við þetta svið aftur. að einhverju í 1, punktur
punktur punktur, 2, sem þýðir að Þessi lykkja mun keyra tvisvar.
En þetta táknar gervibreytunnar.
Það þýðir að ég er í raun ekki að fara að að nota þá breytu hvar
inni þessa lykkju.
Ég vil bara þessa línu af kóða til að keyra tvisvar,
án þess að þurfa að vita gildi þeirra marka.
>> Þannig að í þessu tilfelli er ég að keyra niðurstöðu sinnum x tvisvar, sem í raun
þýðir að ég er að ferninga þetta gildi.
Og þetta gerist vinna eins og við búast.
Power 2, brottför gildi 2,0 gefur okkur framleiðsla af 4.
3.2 virkar fyrir 10,24.
>> Nú getum við gert svipað hlutur fyrir kraft 3.
En nú að breyta aðeins svið.
Fyrir gervibreytunnar í 1 í gegnum 3, margfalda 3 sinnum,
og gera það sama.
>> Þannig að þetta gæti feel a lítill háttuð.
En það er mikilvægt hérna sem
er að horfa á þetta tvær aðgerðir, það er
aðeins eitt sem er öðruvísi, sem er þessi gildi á bilinu.
Allt annað um þessi tvö aðgerðir, máttur af 3 og kraftur 2,
eru, í raun, eins vegna þeir vinna á sama hátt.
>> Svo á þessum tímapunkti, smá viðvörun bjalla skal fara burt.
Vonandi það sem þú ert að segja, þú veist, þetta finnst svolítið
eins tvíverknað.
Kannski er einhver leið að ég myndi vera fær um að þjappa saman þetta allt
og veita virka eða búa til fall sem
er einmitt það sem ég vil án þess að þurfa að slá það út sérstaklega.
Og þetta er það vald af lokun gerir okkur kleift að gera.
Svo skulum taka a líta á þetta.
Og ég ætla að eyða nokkrum mínútur á þetta, því þetta
er nokkuð mikilvægt fyrir Swift.
Við sjáum þetta allan tímann.
Við erum að fara að skilgreina fall.
Það er að fara að vera kölluð powerOf.
Það er að fara að taka a breytu sem heitir Y int.
En taka a líta á aftur gerð.
Aftur gerð er í sviga, Double arrow tvöfaldur.
Sem þýðir að þetta virka, þessi aðgerð powerOf,
er aftur í aðgerð.
Það er að samþykkja að tvöfalda og skila tvöfalt.
Svo það gæti hljómað eins konar brjálaður, en við skulum fletta niður smá
og hlakka til að sjá hvað gerist.
Við erum inni þessa virka powerOf.
Við erum að búa til nýtt hlutverk heitir exponentiator,
en það skiptir ekki máli hvað það er.
>> Takið eftir að þetta hefur inntak gildi x.
Og það er að taka í tvöföldum og skila tvöfalt.
Og þetta er sama númer sem við var hér að ofan, nema að því leyti gildi 2
eða verðmæti 3, sem efri bundið í því bili,
hefur verið skipt út með þetta gildi upp á y, sem
var upphaflega breytu af powerOf virka okkar.
Og á þessum tímapunkti, við aftur exponentiator.
Við erum aftur aðgerðina.
>> Það er góður af eins og a lítill hugur blása.
En við skulum ímynda sér hvað gerist þegar ég kalla þessa aðgerð powerOf
og fara inn í það nokkur gildi eins 2.
Hvað þýðir þetta er að Ég hef nú gildi
2 fyrir y, sem þýðir að þetta gildi Y í þessu exponentiator aðgerð
verður að verðmæti 2.
En ég ætla að skila þessu exponentiator virka.
>> Svo eftir það Swift segir að ég hefur búið í þessu tilfelli.
láta ferningur er skilgreining, það er fall sem tekur að tvöfalda
og skilar tvöfalt.
Ég hef búið til fall sem ferninga eitthvað
nota þetta kerfi hérna.
Og í raun hvað er að gerast er að það er að skila þessu hlutverki
exponentiator, en þetta gildi y er pakkað inni af því.
Og svo nú í hvert skipti sem ég nota þetta breyta eða þetta fastann
veldi, það það er að fara að haga sér sem fall.
Og svo ég geti þá hringt þá breytu eins og ég myndi hringja í aðgerð,
og fara inn í það númer, eins og í þessu tilfelli 3.
Og ég mun þá veldi þetta gildi.
Svo 3 veldi verður þá verða 9, eins og sjá má hér.
>> Virkilega brjálaður, en þetta nú gefur mér tækifæri
til að búa til aðrar aðgerðir powerOf.
Eins og ég get sagt, OK, vel núna ég vil til að búa til nýtt hlutverk, powerOf (3),
og geyma það í a fastann teningur.
Og nú teningur er að fara til vera a sérstakt fall sem mun þá
taka nokkur gildi sem inntak og teningur sem gildi eins og við getum séð á botn lína
hér.
teningur 2 er að fara að leiða í 8.
>> Vonandi sniðugt dót.
Þú hefur aldrei séð þetta áður.
Ég hvet þig til að líta inn í lokun og rannsaka þetta svolítið meira.
Það er mjög öflug efni sem við sjáum mikið JavaScript og nokkrum öðrum tungumálum.
Það er í raun mikilvægt að skilja API auk
að við munum fá til í bara annað.
Já?
>> Áhorfendur: Þegar þú gerir powerOf (2), sviga, og þá
annar svigi, annar input-- þú ert í rauninni skipta veldi.
DAN AMRMENDARIZ: Svo líta á allra síðustu línu hér.
Það er í raun algerlega hægt að gera það læsa eins og þú leiðbeinandi.
Svo powerOf (5) þýðir það að við erum að fara að hafa exponentiator af 5 hér.
Þannig að þetta er í raun að fara að vera sama og 4 til fimmta vald,
vegna þess að við höfum búið til exponentiating virka til fimmta vald,
og við erum liggur í sem virka gildi 4.
Og við fáum að gildi að við gerum ráð fyrir, 1024.
Áhorfendur: Og það er ekki nafn, svo það gerir það auðveldara
að lesa, veldi hvað sem er.
>> DAN AMRMENDARIZ: Hægri, nákvæmlega.
Svo áður en ég setti bara það í föstu hér svo
að það gerði það auðvelt að nota það nafn.
Já?
>> Áhorfendur: Í þessu samhengi powerOf, er það hluti
af forritunarmálinu öfugt við því hvernig þú
hugsa um powerOf í [inaudible]?
DAN AMRMENDARIZ: So í þessu tilfelli, powerOf
er einfaldlega nafnið á því fall sem ég skilgreint hér.
Svo það er ekki sjálfsagt að tungumálinu sjálfu,
en í staðinn, það er bara fall sem hefur
að nafn vegna þess að ég að gefa það því nafni.
Aðrar spurningar?
Allt í lagi.
>> Nú er þetta mikill.
En þú ert ekki að fara að sjá mikið af lokun aðgerðum sem
eru svona þar sem þú skilgreinir, inni einn virka, annan valkost.
Og þú getur gert það.
En það er góður af ekki raun nauðsynlegt, ekki satt?
Eins hvers vegna ég skilgreina þetta virka kallast exponentiator
og þá strax aftur það.
Hvers vegna get ég ekki strax bara aftur þessa aðgerð?
>> Og í raun er þetta einmitt hugmyndin á bak við hugmyndina sem heitir
nafnlaus virka, þar nafnlaus virka ekki í raun
hafa nafn af því að þeir þarft ekki að hafa einn.
Og svo í þessu tilviki, í 7B, getum við fundið nákvæmlega það.
Það er öllum sama kóða, gerir nákvæmlega það sama,
en nú höfum við breytt því lítillega þannig að þetta powerOf virka strax
skilar virka.
Takið eftir að eftir endurkomu, það er opið hrokkið krappi.
Það er von á þessu inntak Double.
Það er von að framleiðsla Double.
Og þá í leitarorð skilur númerið sjálft.
Svo er þetta nafnlaus aðgerð.
Það skiptir í raun ekki hafa nafn, en áður en það var kallað exponentiator.
En eins og við sáum, bara virkilega ekki vísa til exponentiator
utan að virka.
Svo það skipti ekki máli.
Svo er þetta nafnlaus aðgerð svokallaða vegna þess að það er nafnlaus,
en það er enn verið að nota í tengslum við þessa kóða.
>> Næstu sjálfur Ég er fara að halda áfram vonandi
blása hugur þinn svolítið.
Við getum einfalda þetta enn meira.
Því eins og var astutely og fyrr segir,
kannski við vitum í raun, með því að inferring frá þessum kóða, það
framleiðsla á þessum reglum er að fara til vera.
Og í raun, í þessu nafnlaus aðgerð, við getum í raun álykta tegundir af gögnum.
>> Svo í þessu einn, ekki lengur við þarf að sérstaklega skilgreina
tegund af gögnum sem er að vera inntak og úttak frá þessari aðgerð
fyrir a par af ástæða.
Eitt er að við höfum skilgreint, upp á Frumgerð af enclosing virka,
hvaða tegund gagna þetta nafnlaus Eftirlit skal inntak og úttak.
Og fyrir aðra, við getum ætlað frá kóðann
hérna sem við erum að samþykkja inntak sem er af gerðinni Double
og skila tvöfalt.
>> Takið eftir að hér höfum við ekki beinlínis skilgreint nöfn rök
að þessi aðgerð er að samþykkja.
Og svo sjáum við getum vísað þessir þættir með $ 0, $ 1,
svo framvegis og svo framvegis, allt eftir fjöldi þess Breytan sem notuð er
í þessa aðgerð.
>> Þetta er eitthvað sem þú ert að fara að sjá mikið er þetta opinn hrokkið krappi
skilgreiningu fylgt eftir með $ 0, og þá sumir aðgerð,
og þá lokað krullað krappi.
Það er nafnlaus aðgerð sem sinnir þessa aðgerð.
Það hefur þessa breytu hvar það er tegund er álykta.
Sem fyrst breytu er $ 0.
Og sumir gangur er gerast á sem $ 0.
>> Áhorfendur: Svo dollaramerki þýðir breytu grundvallaratriðum,
og 0 þýðir því fyrra?
DAN Armendáriz: Það er rétt.
Svo dollaramerki þýðir í rauninni breytu og 0 þýðir fyrsta.
En það virkar sérstaklega í þetta mál þar sem ég hef ekki nefnt
rök í nafnlaus aðgerð mína.
>> Áhorfendur: Er Perl eða eitthvað með þetta dollaramerki, dollara 0 þarna?
DAN Armendáriz: Er sem, ég er hryggur?
Áhorfendur: Er Perl hafa þetta dollara 0, dollara 1--
DAN Armendáriz: Ég er ekki of kunnugur Perl,
en PHP hvað skilgreinir breytur miðað dollara merki.
Og það getur verið sumum tungumálum sem hafa aðgerðir eins og þetta.
Í raun, Swift lán a fullt af lögun eins og þetta
frá fullt af öðrum tungumálum.
Við sjáum vísbendingar um Python í það.
Þessi skilgreining á tegund virðist koma frá OCaml.
Og við höfum bara a heild búnt af efni frá fullt af mismunandi tungumálum.
Það er einn af the ágætur atriði um Swift
er að það tekur a einhver fjöldi af the bestur hugmyndir frá fullt af tungumálum
og shoehorns þá alla saman í einn frábær tungumál.
Í staðreynd, ef þú leyfir mér að áfram blása þinn hugur,
þannig að við höfum verið að gera þetta allt.
Við getum kannski einfalda þetta svolítið smátt að átta sig á því, að sjálfsögðu,
Swift hefur exponentiating virka innbyggður í.
Ef ég flytja Darwin, sem er bara safn sem
lögun þessa aðgerð kallast pow, nú Ég get einfalda mátt minn á virkni
að vera eftirfarandi.
Það er að fara að vera aftur þetta nafnlaus aðgerð.
>> En líta á hvernig einföld þetta er nú.
Þetta er nafnlaus aðgerð sem er að samþykkja einhvers konar gögn,
og það er að fara að vera einn rök sérstaklega,
vísað á $ 0 sem er af gerðinni Double.
Það er að fara að skila tegund Double.
En aftur staðhæfing er nú fólgið.
>> Og það er þetta nákvæmlega stíl sem er mjög, mjög ríkjandi í Swift,
um allt.
Við erum að fara að sjá þetta allan tímann í Swift.
Þannig að ég ætla að sýna þetta allt til þú vegna þessa setningafræði.
Þetta er mjög algengt að sjá, sem þýðir það
er nafnlaus aðgerð sem er að skila
sumir aðgerð á þessum rökum.
Og það er fólgið aftur.
Svo það er alveg það sama fyrir okkur að segja þetta hérna.
>> Því þetta hrokkið krappi er fall,
við erum að framkvæma þessa aðgerð á fyrsta rifrildi.
Við erum að fara að fara aftur að.
En þessi ytri aftur er aftur að allt virka,
sem heild nafnlaus aðgerð sem við höfum bara búið.
Aðrar spurningar?
Allt í lagi, ég veit ekki hvort þú krakkar eru tilbúin fyrir þetta,
en við getum farið jafnvel geggjaðri með Swift.
Þú tilbúinn?
OK, þetta er frábært.
>> Nú höfum við í raun getu að, í Swift, vegna þess hve mát
og hvernig siðareglur byggist það er, að skilgreint eigin stórfurðulegur okkar rekstraraðila.
Eins og í þessu tilfelli, við höfðum ekki rekstraraðila fyrir exponentiation-- vel,
til að framkvæma vald eitthvað.
En ég get, í Swift, skilgreina ný rekstraraðili sem gerir einmitt það.
Þannig að í þessu tilfelli er fullt af setningafræði hér.
Og ég ætla að leyfa þér að líta á það heima þegar þú horfir á þetta.
En við erum að skilgreina þessa infix rekstraraðila, **, sem verður þá að leyfa okkur,
með því að skilgreina hvað það virka ** raun
er, að sætta sig við vinstri hönd hlið og hægri hönd hlið,
og þá til að skila eksponent af því vinstri hönd hlið við hægri hönd.
>> Og svo nú er allt í einu var ég hafa búið til nýja teljara.
Svo 2 ** 3 merkir 2 til þriðja völd.
[Hugur blása SOUND] Þetta með sjálft ætti að gera þú vera eins,
OK, skrúfa C. ég ætla Swift alla leið.
Þetta er frábært.
Þetta er nokkuð frábær.
>> Þó að þetta er frábært dæmi.
En ég hef aldrei einu sinni utan þess dæmis í raun og veru
skilgreint eigin símafyrirtækið mitt.
En samt, sýnir það fullt af krafti Swift
og hvers vegna þetta er í raun í raun mjög flott.
OK, já?
Áhorfendur: Ef þú ert skilgreina eigin símafyrirtækið þitt,
hvernig veistu að þú ert ekki óvart reyna að búa rekstraraðili sem er
í somewhere in C, eins og falinn einhvers staðar í Swift,
eins hylja eitt sem þú getur ekki hafa séð áður.
>> DAN Armendáriz: Svo ef þú ert að reyna að skilgreina eigin rekstraraðila þína,
það er hætta á að skilgreina einn yfir núverandi rekstraraðila.
Sem fer í að stigi smáatriðum þess Ég held ekki að við höfum tíma til að fara yfir.
En það er hætta á.
Og það er í raun mjög ástæðan Ég vissi ekki að nota Caret tákn, sem
þegar við erum að slá út vald, venjulega við nota 4 litla Caret 5 eða eitthvað
svona, bara þegar við erum Gchatting verðandi eða hvað sem er.
En í því tilviki, sem í raun hefði valdið árekstri.
Og svo ég forðast það bara vegna þess að Ég varð að vita í þessu tilfelli
að það myndi valda þessum árekstri.
>> Allt í lagi.
Nú því miður, fyrir síðustu sjö mínútur,
Ég verð að halda blása hugur þinn svolítið.
Svo langar mig til að sýna þér nokkrum öðrum hlutum eins og heilbrigður.
>> Við höfum sýnt þér þessa hugmynd hafa þessar nafnlaus aðgerðir,
þessi lokun sem leyfa þér að konar framhjá aðgerðir í kring.
Þú getur skila þeim.
Þú getur vinna þá.
Þú getur gert alls konar brjálaður efni.
>> En einn annar hlutur sem gerist til að vera gagnlegt
er hæfni til að, í stað þess til að koma aftur þær aðgerðir
í aðgerð, að fara í aðgerð sem viðfang í annan valkost.
Þú gætir verið að hugsa vel hvers vegna á jörðinni ætti ég að vilja gera eitthvað svona?
>> Jæja, við skulum segja að ég vil að taka þetta rekstraraðila sem ég
unnið svo hart að búa til og sækja um það að fullt af mismunandi númer
í fylki.
Þannig að í þessu tilfelli ég hef fjölbreytta integers-- 1, 4, 7, 2, 5, 10, 56.
Og ég vil að tvöfalda þá alla.
Leiðin sem við myndi venjulega gera það er bara að skrifa
einfalt fyrir lykkju sem iterates yfir öllum þeim
og framkvæma einhverskonar ferningur aðgerð yfir þeim,
inputting þeim ný gildi í nýja breyta, eða öllu heldur, nýtt array hér.
Og verðmæti framleiðslu Niðurstaðan er þá allar þessar fylki,
eða öllu heldur allar þessar þættir veldi núna.
>> Og við gætum gert það sama hlutur fyrir cubing það,
en lítið viðvörun bjalla Ætti að vera að fara burt
segja að kannski er það einhvern hátt að við myndum
vera fær um að einfalda þetta svolítið.
Og í raun er.
Hvað ef við gætum búið til fall sem gerir okkur
að samþykkja, sem rándýr, fall?
Þannig að í þessu tilfelli, að taka líta á þessum rökum.
Við erum að fara að taka lista yfir tvöfaldast.
Og þá erum við að fara að sætta sig við fall
í breytu sem heitir F sem er að fara að taka tvöfaldan og skila tvöfalt.
Og allt framleiðsla af þessu öllu virka
kallað Mapper er að fara að aftur á fjölbreytta heitir tvöfaldur.
>> Hvað þetta myndi þá leyfa mér að gera er að árétta yfir þeim lista
og gera það sama, en nú gilda að virka á hverjum
af eigin gildum í þeim lista.
Svo ég í raun ekki vita hvað f.
Það skiptir ekki máli við mig.
En svo lengi sem það tekur í tvöföldum, framkvæma sumir aðgerð á það,
og þá skilar Double, myndi ég þá vera
fær til landakort að virka yfir hvert einasta þáttur í listanum.
>> Og þessa tegund af forritun er kallast hærri röð aðgerðir,
þar sem við erum að farið aðgerðir um viðfanga
og gera hlutina með aðgerðum.
Það er tegund af eins og að allar þessar hugmyndir sem við höfum lært í CS50
og taka þá tegund af á næsta stig.
Og þetta er allt CS51 stíl efni.
Og svo við munum fara ofan í kjölinn meira í flokkum eins og þessi.
>> En þetta er líka mikilvægt hér vegna þess að við
sjá a einhver fjöldi af aðgerðum sem eru notuð í Swift
sem í raun gerir þetta, þar sem við höfum
nokkrar tölur, sumir array af tölum.
Við erum að fara að fara að array í mapper okkar.
Og við erum líka að fara að fara nokkrum virka, sem
við höfum nú þegar skilgreint hér.
Það er að fara að vera ferningur.
Og við erum að fara að þá ferningur allar þessar tölur
og geyma það í þessari niðurstöðu hér.
>> Þannig að þetta mál sem við höfum skilgreint okkar eigin virkni heitir mapper.
En þetta nákvæmlega hlutur er, í raun byggt inn Swift.
Það eru margs af aðgerðir kallast kort.
Það er kort virka, það er að draga úr virkni,
og það er sía virka, sem í raun eiga aðgerðir
að hvert einasta þáttur í lista til að breyta þeim á einhvern hátt.
>> Áhorfendur: Svo þar sem þú ert að umbreyta gögn inn öðru formi
gegnum function--
DAN Armendáriz: Hægri.
Já, þannig að virka sem við erum að samþykkja
er að umbreyta gögn á einhvern hátt.
Í þessu tilfelli, við voru annað hvort sendi til, eða við vorum cubing það,
eða í raun gætum við gert engin aðgerð á það yfirleitt.
>> En láttu mig sýna þér þá hvernig þetta er að fara að líta í reynd.
Og aftur, ég er að keyra smá tíma. þannig að ég er ekki
að fara að vera fær um að fara yfir allt af the uppspretta merkjamál hér í smáatriðum.
En ég hvet þig til að gera það.
Við munum senda það eins fljótt og auðið er eftir þessu tali.
>> En ef þú taka a líta á þetta, ráð fyrir að við hafa a listi af tölum,
fylki af tölum í þessu breytu sem heitir númer.
Þá viljum við að framkvæma þetta sía samstarf um þær tölur.
Svo sía er hærri Til fall sem
tekur á fjölbreytta og einnig virka.
Og á hverjum þáttur í að array, það virkar að virka.
>> Ef það skilar satt, það heldur þessi atriði.
Ef það skilar rangar, það kastar burtu þessi atriði.
Og þá skilar það lista sem er þá gert upp alla
af þeim atriðum sem hafa verið síuð.
>> Svo í öðru orðum, þetta er sama hugmynd, gradebook.
Við gætum hafa a fjölbreytni af einkunnum í þessu gildi kallað númer.
Gæti verið 100, og 70, og 40, svo á og svo framvegis.
Hvað þetta sía gerir er tilkynning að þetta er að nokkur dæmi um setningarleg sykur
fyrir óþekktan virka.
Þetta er nafnlaus aðgerð segja að breytu sem ég þiggja
er að fara að vera, ef það er meiri en 70,
þá mun þetta aftur satt, sem þýðir að þessi atriði verður haldið í þessari síu.
Svo skulum vera svolítið áþreifanlegri um þetta.
Ef ég hef þetta fylki af tölum og það samanstendur af 100, 70, og 40,
Ég framkvæma þessa síu Rekstur á hvert og eitt þeirra.
Svo er að fyrsti þetta gildið 100.
100 hærra en eða jafnt og 70 er satt, sem
þýðir að 100 er haldið í þetta nýja eintak af þessu fylki.
70 fer einnig.
En 40 ekki.
Svo hvað er skilað í passingCount er fylki af þætti 100 og 70--
100, komma, 70.
Þeir voru aðeins tveir atriði sem var haldið.
Og svo ástæðan ég fór hratt í gegnum a einhver fjöldi af svona hár til
hlutirnir eru því þetta er að sameiginleg hlutur sem þú munt sjá í Swift nokkuð
oft, er að framkvæma sumir aðgerð nota þessa nafnlaus virka setningafræði.
>> Það er einhver flott efni.
Rofar eru mjög öflug í Swift, Ég meina bara eins og brjálæðingur, brjálaður öflugur.
Þú getur notað skipta, og þú getur beitt þeim
að svið, sem er eins konar brjálaður, og gera ímynda svoleiðis.
>> En í síðustu mínútum, Ég vil til að sleppa undan alveg langt
og sýna þér ákveðna dæmi um hvernig við getum búið í IOS app nota Swift.
Svo þegar þú ert að gera þetta, þú þarft að taka
a líta at-- á Apple skjöl, þeir
hafa a einhver fjöldi af mjög góðum námskeið til að búa til fyrsta umsókn þína.
Og ég hvet þig til að gera að vegna þess að þeir taka þig
í gegnum öll skrefin hvað nákvæmlega að Smelltu á til að búa til IOS forrit.
>> En hér höfum við þetta IOS app.
Og það er nokkuð einfalt app í raun.
Ef ég hlaupa þetta, láttu mig sýna þú það lítur út.
Allt það gerir í raun er það togar af internetinu a JSON skrá
sem ég hef geymt á netþjóni.
Og það JSON skrá skilgreinir myndir sem leyfa
mér að þá hringrás í gegnum, á minn app, myndir frá vefþjóni mínum.
>> Þannig að ég hef hér getNextImage.
Það sækir mynd af internetinu, og þá sýna það á skjánum.
>> Svo það er frekar einfalt.
En markmiðið hér er að sýna þú hvernig við getum sameinað hluti
frá síðari vikum CS50 í raunveruleg IOS umsókn.
Með öðrum orðum, ef til vill einn af the hlutir sem þú vilja vilja til að gera
er að hafa IOS forrit sem geta draga gögn frá internetinu
og sýna notandanum einhverjar upplýsingar.
Það er alveg málið þessarar kóða hér.
>> Svo er það mikið að segja um hvernig á að gera raunverulegt IOS þróun.
Það er a einhver fjöldi af brjálaður setningafræði sem við höfum ekki séð alveg enn
eins og a tegund, hvað flokki í raun er.
Við getum að miklu leyti hunsað að um sinn.
>> En eftir að við höfum sem innan þessa margs af hlutum
sem við höfum þegar séð eins aðgerðir sem hafa ákveðin nöfn.
Og þegar við gefum þeim virka rétt nöfn
sem er gert ráð fyrir því að IOS, í raun þetta finnst svolítið töfrandi.
En þegar þú búa til iOS forrit, það
eru ákveðin nöfn virka sem eru kallaðir af the sími sig
og umsóknin er hleðsla að reyna til að búa til ferli sem raunverulega
rekur umsókn þína.
Svo aftur, það er fullt af hlutum sem ég að gljái yfir hér í því skyni fyrir okkur
að tala um þetta sérstaklega.
En ég hvet þig til að líta á kannski hinn IOS Málþingið, en einnig nokkur
af kennsluefni á netinu sem gera miklu betra starf við að lýsa
sérstökum upplýsingum.
>> En við getum séð nokkra hluti sem eru áhugaverðar frá kóðann hér.
Takið eftir að við höfum ef yfirlýsingar.
Við the vegur, einn mikilvægur hlutur óður ef yfirlýsingar
er að svigar kringum Boolean tjáningu eru valfrjáls.
En hrokkið axlabönd eru ekki valfrjáls, sama hversu fáar eða margar línur af kóða
þú þarft í if yfirlýsingu.
Þú getur ekki hafa if yfirlýsingar án hrokkið axlabönd í Swift.
>> Og þetta er vel, svona kjánalegt.
En það er af sögulegum ástæðum fyrir því.
Það er ætlast til að spara þér frá þér.
Svona til dæmis, þú getur ekki útrýma hrokkið axlabönd um að
ef staðhæfing.
Þeir eru í raun nauðsynleg.
Svo ég hvet þig til að taka a líta á þetta.
En það er einn reisa sem ég vil
til að sýna ykkur Swift sem er nýtt til Swift 2,0 samanborið
að eldri útgáfur af Swift, sem er eftirfarandi.
Við skulum sjá hvar setti ég það hér?
>> Svo í þessari aðgerð sem kallast fetchJSON, þessi aðgerð
er ábyrgur fyrir því að toga þá JSON skrá frá vefslóð, sem bara gerist
að vera að keyra á CS50 IDE minn.
Ég byrjaði bara Apache, setja JSON skrá mitt þar,
og ég er fær um að þá draga það gögn frá internetinu með
þessi aðgerð og þetta URL, sem er veitt af símanum.
Það er veitt með bókasafn sem þú notar þegar
þú ert að gera sumir IOS app þróun.
>> Eftir hér að það er þetta óvenjulegt syntactical reisa heitir vörður.
Og í raun allt er þetta í Swift er leið staðfesta
að sumt hafa verið uppfyllt áður en þú
halda áfram með the hvíla af the virka.
Svo ég gæti hafa með þetta valfrjálst tegund,
Ég hefði getað fundið slóðina með keyra þetta NSURL aðgerð
og geyma það í vefslóð stöðug, og þá stöðva
til að sjá hvort slóðin var enginn, vegna þess að það var að fara að fara aftur valfrjáls tegund.
Og ef það var enginn, svo ég myndi prenta út villu og síðan heim aftur.
>> En í staðinn, hvað vörður leyfir okkur að gera er að mjög hlutur,
en tryggja að það sé reyndar raunin að url
hafi verið rétt sett NSURL.
Og ef það er, þá er það skauti yfir þetta, og það
mun leyfa þér að halda áfram með url hafa verið rétt skilgreind.
En ef það er raunin að url er ekki rétt skilgreint
ef þetta skilar villu eða einhver önnur óvænt hlutur
raun á sér stað, þetta vörður reisa gerir okkur kleift að þá framleiðsla þess villa
og aftur strax.
Já?
>> Áhorfendur: Svo það er góður af eins og ef þá annar?
DAN Armendáriz: Það er góður af eins if þá annað, já,
nema að þessi url er þá skilgreint fyrir allt hér á þessu.
Ef það fer þetta vörður, þá er það verður í raun að vera fyllt með gögn
og nothæf í hinum Kóðinn í virka.
Svo grunar mig að þú ert að fara að byrja að sjá þessa vörður eins og heilbrigður.
Og að hafa í huga að.
>> Svo bara horfa á nokkra aðra hlutir, þetta hérna er hvað,
finnst þér, bara miðað við það við vorum að tala um áður?
>> Áhorfendur: Held að það mun keyra á listanum?
>> DAN Armendáriz: Svo er það nálægt.
Þetta er fall sem við erum að skilgreina.
Og við erum inputting að virka sem rök við þessa aðgerð hér.
>> Áhorfendur: [inaudible] ef ekki núll.
Svo það er á listanum, ekki satt?
>> DAN Armendáriz: Ef villa er ekki núll, svo að is-- svo ég verð að fletta.
Jæja, við skulum sjá, ég get í raun ekki skruna til hægri hér.
villa er rök sem verið er að samþykkt þessari nafnlaus aðgerð.
Þetta er nafnlaus aðgerð.
Það hefur ekkert nafn.
En við erum að samþykkja þessar þrjár rök, gögn, svar, og villa.
Og það er að fara að skila ógilt, svo það er ekki að fara að fara aftur eitthvað.
Og þetta er innihald þeirrar starfsemi.
Og þá höfum við aðgang inni sem virka til hvers þessum rökum.
>> Svo það er vindbylur skoðunarferð um tungumál.
En ég vona að með þetta, vonandi sem þú tekur
a líta á sumir af the námskeið sérstaklega við iOS þróun með skjótum,
sérstaklega ef þú ferð að Apple verktaki vefur page--
þeir hafa a einhver fjöldi af mjög gott námskeið til að koma þér af stað.
En vonandi bara þessi stund að tala um setningafræði sjálft hefur gefið
þú nóg til að byrja með það.
>> Við munum senda allan uppspretta kóðann á málþingi vefsíðu
eins fljótt og auðið er, og einnig glærur þannig að þú hefur tilvísun fyrir alla þá.
En gangi þér vel með verkefnum.
Og þakka ykkur öllum kærlega fyrir komuna.
>> [Applause]