>> [MIZIK jwe]
>> DAN AMRMENDARIZ: Tout moun, Byenveni nan seminè a CS50,
iOS Devlopman App ak Swift.
Mwen se Dann Armendariz, ak mwen se yon presèpteur nan syans òdinatè isit la nan Harvard.
>> Apre sa, lè a pwochen a pwal yon toune gwo toubouyon nan kòm anpil bagay
sou sijè sa a kòm nou ka anfòm.
Mwen ap afiche tout nan kòd la sous ke ou pral wè jodi a sou entènèt.
Nou pa ka kapab aktyèlman ale sou tout bagay
ke mwen se ke mwen se ki montre ou nan tan soufrans sa a.
Men, nan omwen èspere ke nan kòmantè sa yo nan kòd la sous,
ou pral kapab pou yo eseye konnen sa ki egzakteman k ap pase pou bagay sa yo
ke nou pa byen ale nan.
>> An jeneral, estrikti a nan pale jodi a yo pral jan sa a.
Nou pral kòmanse soti fè kèk debaz sentaks ak lang nan Swift,
pral antre nan kèk nan ki pi avanse nan sentaks nan lang lan Swift.
Paske lang nan se reyèlman modèn ak li
gen yon anpil nan wo nivo karakteristik, bagay sa yo ke nou pa gen
wè nan C nan tout CS50, oswa menm kèk lòt lang yo
ke nou te te kòmanse lè l sèvi avèk nan CS50 tankou PHP,
se konsa mwen pral jwenn gen pou yo eseye prezante tou gen kèk sijè ki
yo ki gen rapò nan pi wo nivo lang ke ou pa ka wè nan pwofondè nan CS50,
men ou pral wè nan pita klas syans òdinatè.
Se konsa, li k ap pase yo dwe yon byen chaje èdtan.
Apre sa, tanpri, ezite kite m ' konnen si ou gen nenpòt kesyon.
Se konsa, si w ap enterese nan fè devlopman
ak Swift, oswa reyèlman nenpòt iOS devlopman app,
gen yon koup nan kondisyon.
Premye a tout, ou gen lè l sèvi avèk yon Mac, kouri nan egzanp yo
ke nou ap ale nan dwe lè l sèvi avèk jodi a, yon relativman nouvo vèsyon an OS
X. Nan ka sa a, mwen kouri X 10.5.
Ou ka kouri 10.11 si ou vle.
Men, tout bagay ki w ap ale nan wè se ki enplike Xcode 7 ak pita,
ki te gen vèsyon an dènye a Swift, ki se Swift 2.0.
Sa a se aktyèlman yon trè enpòtan distenksyon.
Yon anpil nan sentaks la gen chanje bèl anpil
nan kèk ka soti nan Swift 1.0, ki te lage ane pase a,
Swift 2.0, ki jis te soti sa a tonbe.
Se konsa, nou ap ale nan montre Swift 2.0.
Yon anpil nan bagay sa yo ke ou rechèch pou sou entènèt
lè w ap ap eseye jwenn plis enfòmasyon sou yon varyete de bagay sa yo,
ou ka vle klèman rechèch pou Swift 2
olye ke jis plenn fin vye granmoun Swift fè asire w ke ou jwenn sentaks ki kòrèk la.
>> An reyalite, sa a se jeneralman vre.
Genyen yon kantite lajan rapid nan devlopman pase nan lang la Swift
depi tout tan Apple lage li, mwen panse ke ki sa, li te gen yon ti kras plis pase yon ane
kounye a.
Apre sa, bagay yo chanje dramatikman nan tan sa a.
Se konsa, Ou pa bezwen fwistre.Tanpri si, lè w ap kap alantou
pou sijè sou Swift oswa ki jan yo akonpli yon bagay lè l sèvi avèk kèk kòd egzanp
oswa yon bagay ke li pa fè sa aktyèlman ap travay sou Swift 2.0.
Asire ou ke ou ap chèche espesyalman pou ke vèsyon
eseye pou misyon pou minimize efè nan diferan vèsyon ak kalite sa yo ki nan bagay sa yo.
>> M ap eseye pwen soti jis kèk bagay ki diferan nan vèsyon ki pi ansyen.
Men, li la yon bagay yo gade soti pou.
Sa a pwobableman pral fè youn nan pi gwo tèt fè mal yo
ke ou pral gen ak Swift se pou nou jwenn Kòd egzanp se sa ki pi gran, menm jis
pa yon kèk mwa, ap eseye sèvi ak li nan pwojè modèn plis ou yo.
Epi, se jis tou senpleman pa travay.
W ap vin erè du, sentaks erè, tout kalite bagay fou.
Se konsa, jis pran pasyans ak sa, ak ou pral èspere ke
gen yon eksperyans trè bèl ak Swift an jeneral.
>> Koulye a, ou kapab aktyèlman join-- e mwen espere ke nou aktyèlman toujou gen sa a sa a year--
CS 50 nan Apple app ekip devlopman, ki
pral pèmèt ou enstale nenpòt apps kote ou kreye sou iOS aparèy ou yo.
Se konsa, pran yon gade nan URL sa a si w enterese nan fè sa.
>> Se konsa, jis yon koup nan bagay sou Swift tèt li.
Li se yon lang konpile.
Men, ou pral wè ke gen kèk nan karakteristik yo ki ke nou itilize
pèmèt li yo dwe itilize tou nan yon ti jan tankou yon entèprete fason kòm byen.
>> Yon anpil nan sentaks la prete soti nan C. Li nan ki baze ak ekri nan C.
Se konsa, nou pral wè ke gen yon anpil nan takeaways
soti nan konesans ki egziste deja ou soti nan C ke nou kapab pò Swift.
>> Men, gen bagay sa yo ke fè li trè diferan de C.
Li se trè fòtman tape.
Genyen jesyon memwa otomatik yo.
Ou pa ap ale nan gen yo itilize malok oswa gratis nenpòt kote.
Li nan ki fèt pou générales.
Se konsa, nan lòt mo, ou ka sèvi ak li nan tout kalite kontèks, ki soti nan Apple Watch
nan iPhone tout wout la jiska OS X, ak menm kèk serveurs, menm kèk scripting.
Men, nou pral wè ke nan sipò pou scripting
se pa byen gen anyen ankò kòm li se nan lòt lang yo.
Se konsa, gen plis chans ou pral lè l sèvi avèk sa a sèlman pou devlopman
sou Mac ou a oswa iPhone ou.
>> Apre sa, li gen yon anpil nan karakteristik modèn.
Ak yon anpil nan bagay sa yo se bagay ki nou ap ale nan eseye adrese jodi a,
men tou, sijè nou an ki franchman, nou ka konsakre kou tout antye.
An reyalite, CS 51, ki se ofri pwochen semès,
konsantre yon anpil sou sijè sa yo ke yo dekri anba a.
Se konsa, ou ka pase yon semès antye konprann bagay sa yo.
Men, nou ap ale nan eseye yo ka resevwa nan yo
omwen ase ke ou ka konprann sa ki nan
ale sou lè ou gade Yon pwogram Swift
epi yo dwe kapab Hack fason ou atravè li pou pwojè a final la.
>> Koulye a, youn nan pi bon fason yo ke ou ka jwenn plis enfòmasyon sou sa a
se franchman jis nan Apple la bay dokiman pou Swift.
Genyen yon anpil nan APIs ki disponib yo.
Lè sa a se yon baz bon pou ou lakay yo gade pou li a, bagay sa yo espesifik ke ou
vle fè ak yon API ki enplike iOS.
Si ou vle sèvi ak kamera a pou egzanp, ou ka kòmanse kap isit la,
epi tou li sèvi ak Google ak Stack Debòde jan ou ta nòmalman.
>> Nenpòt kesyon sou sa a anvan nou so dwa nan?
Tout dwa.
Se pou yo deplase sou.
>> Se konsa, premye, mwen gen yon Nimewo nan dosye egzanp.
Apre sa, mwen pral pou yo eseye etap nan yo relativman byen vit.
Sa a se dosye a Alo Mondyal pou Swift.
Li trè senp.
Genyen fason pi plis kòmantè pase gen Kòd vrè.
Avi kòd la aktyèl se nan pati anba a anpil sou liy 14.
Li di enprime.
Lè sa a, li nan yon apèl fonksyon.
Nou ap pase nan li yon fisèl rele Bonjou CS50.
Remake gen nan pa gen virgules.
Remake gen nan pa gen int prensipal la.
Genyen pa youn nan la cruft ke nou te gen ak C.
Lè nou ap itilize Swift nan fason sa a, ki se jis ekri nan yon dosye tèks
ak ki estoke sou òdinatè mwen an, lè sa a Mwen kapab konpile li epi li kouri li.
>> Remake isit la mwen se pa lè l sèvi avèk IDE nan CS50.
Sa a sipoze ke mwen menm ki kouri ak ke mwen se sou OS X,
e ke mwen te deja enstale Xcode sou machin sa a yo nan lòd pou sa a
ki aktyèlman fonksyon.
Men, sa a se jis yon dosye tèks nòmal ke nou ka Lè sa a konpile ak edit.
Se konsa, kite a wè ki jan sa a aktyèlman ap travay.
E si mwen vle konpile li?
swiftc 1.swift.
Apre yon ti moman oswa de, li pral wè ke nou genyen kounye a
konpile sa a nan yon dosye rele 1.
Epi, koulye a nou te enprime CS50 nou an, aplikasyon Alo mond nou an olye.
>> Avi yon lòt bagay tankou byen se ke pa default,
nou pa t 'gen yo opinyon yon / n nan enprime yon liy nouvo.
Pa default, fonksyon an ekri an lèt detache nan Swift pral enprime yon liy nouvo pou ou.
Ou ka pase yon lòt si ou vle paramèt di li pa fè sa.
Men, Google Pou plis enfòmasyon sou sa.
Pa default, li pral fè liy nan ekri an lèt detache.
>> Tout dwa, se konsa kite a deplase sou Lè sa a, nan kèk lòt bagay.
Se konsa, ki jan nou ka aktyèlman defini varyab?
Nou ka fè sa a, se lè l sèvi avèk youn nan de metòd.
Ak yon sèl la ke mwen vle di ou sou premye se definisyon kite sa a.
Lè sa a se enpòtan paske efektivman
sa n ap fè se defini yon konstan.
Nou pral kreye yon varyab, ou pito yon rele konstan,
bay li kèk nan data-- ka sa a, fisèl la lavil Dann.
Men, lè l sèvi avèk kite sa mo kle, nou ap di
ke sa a variable-- oswa ankò constant-- rele
Non pa janm yo pral chanje.
Li k ap pase yo dwe nan tout imuiabl dire a nan pwogram sa a
oswa nan tout nan dire nan kontèks la
ki varyab sa ki disponib.
>> Sa a se vrèman enpòtan ke lè ou gen kèk done ki pa
pral chanje nan pwogram ou an, epi ou pral wè yon varyete de egzanp
sou lè nou vle sèvi ak kite kont lòt sentaks la,
li enpòtan ke ou itilize se pou kèlkeswa lè sa posib paske sa a notifye
lang nan ke li se pa ale nan yo chanje yo,
epi li ka aktyèlman fè yon anpil nan optimizasyon
amelyore vitès la ak sekirite a nan pwogram ou an.
Ak nan sekirite, pa vle di se pou mwen li aksidan ak erè fou
ke nou ta ka abitye wè nan C.
>> Lè sa a, nou ka sèvi ak fisèl entèpolasyon ankapsulasyon sa a ki nan yon fisèl.
Se konsa, nou ka wè nan sa a liy enprime, enprime hello,
Lè sa a, lè l sèvi avèk antislach ak paran louvri, ak Lè sa a non an nan varyab m 'yo,
nan sa a konstan ka, fèmen parantèz yo.
Mwen Lè sa a, esansyèlman mete nan sa a varyab rele non sa a
andedan nan fisèl la ak Lè sa a enprime rezilta a la.
>> Genyen yon lòt chanjman nan sa a ranpli ki se ke mwen gen, nan tèt la anpil,
mete nan yon liy kaz, ki fondamantalman jis presize
ke mwen vle sèvi ak nan Swift entèprèt, ki
vle di ke mwen pa gen okenn ankò gen konpile pwogram sa a an patikilye.
Mwen ka jis kouri li tankou script pwòp li yo.
Men, sa a se, nan ka sa a, dèyè sèn nan ke yo te konpile ak Lè sa a
ke yo te kouri.
Se jis envizib yo ban nou.
>> Tout dwa, se konsa kite a deplase sou.
Se konsa, gen nan yon ti jan nan artifices ki jis ki te pase anvan.
Mwen te montre nou se mwen te kapab defini yon konstan.
Apre sa, mwen te kapab bay kèk done fè li.
Men, nan ka sa a, remake ke mwen pa t ' aktyèlman presize ki kalite done
ke li se.
Epi sa a, paske nan du, Swift kapab
dégager ki kalite done jis ki baze sou done a ke mwen mete nan li.
Paske li konnen ke pa evalye sa a varyab dwa isit la, sa a dwat done
isit la, li konnen ke li se yon fisèl.
Se konsa, non sa a Se poutèt sa se konstan pral gen yon fisèl kòm byen.
>> Men, nou kapab tou gen pou eksplisit sou kalite a sa a, se
nou pral pou itilize pou konstan oswa varyab
lè l sèvi avèk sentaks sa a instead-- kite Non kolon fisèl egal
Dann, ki nan ka sa a vle di nou ap ale nan defini yon rele konstan.
Li k ap pase yo dwe nan kalite fisèl.
Epi se valè a pral fè lavil Dann.
Koulye a, nan lòt fason ki nou ka kreye variables--
ak sa yo, se varyab mutabl, ki vle di ke nou se, an reyalite, ale
chanje sa yo nenpòt moman nan dire a nan kontèks la
ki varyab sa se defined-- nou itilize mo kle a var olye pou yo kite.
Men, ankò, pa default, sof si ou konnen ke ou bezwen manipile ki done,
eseye sèvi ak kite pou pèfòmans amelyorasyon.
>> Nan ka sa a, mwen kapab Lè sa a, presize ki kalite done
ki nou espere yo dwe andedan nan varyab sa a nouvo rele mete etikèt sou.
Li k ap pase yo dwe yon fisèl.
Epi nou ap ale nan Lè sa a, anchene de strings ansanm, fisèl la hello,
ak fisèl la reprezante pa la varyab, ou pito non an konstan.
>> Se konsa, sa se bèl paske sa a se yon ti jan tankou nan PHP ke nou
gen trè fasil Anchènman fisèl.
Nou pa bezwen otomatikman itilize nenpòt ki sòt nan jesyon memwa
ogmante gwosè a ak fè nenpòt ki sòt de bagay sa yo komik la.
Sa a ap travay kòm nou ta aktyèlman atann.
>> Tout dwa, nenpòt kesyon sou sa a?
>> Koulye a, lòt rezon ki fè nou bezwen ou gen kapasite nan
pou kapab defini ki sa di ki kalite varyab telefòn nan
se paske pafwa nou pa fè sa vle inisyalize varyab
ak kèk done nan la pwen nan definisyon.
Se konsa, nan ka sa a, se pou yo di ke mwen vle kòmanse Anthrax
kèk klas nan yon liv klas.
Oke mwen konnen ke youn nan la varyab ke mwen vle yo dwe
a pwal yon nòt mutabl.
E nou konnen tou ke nou vle li nan dwe yon nonb antye relatif.
Men, petèt nou pa fè sa ankò gen sa klas yo ki disponib.
>> Nan Swift, ou gen defini kalite a nan done
ki asosye avèk yon varyab oswa yon kite konstan
anvan ou kapab aktyèlman sèvi ak sa varyab.
Paske li se fòtman tape, ou gen yo asosye yon kalite
ak varyab sa yo.
>> Se konsa, nan ka sa a, si mwen te pa byen inisyalizèd premye a ak kèk valè,
lè sa a mwen bezwen di sa Swift Mwen atann mwen kalite nan done yo dwe.
Epi, se k ap pase yo rete ki menm kalite done
nan tout istwa a nan pwogram sa a.
>> Koulye a, ou ta ka dwe tante le pli vit ke Mwen te kreye sa a varyab klas
ak bay li yon nonb antye relatif nan 100, kounye a si mwen
vle pou yo eseye anchene yon afè ak sa nonb antye relatif,
ta ka vin tante l 'toujou itilize ki operatè fisèl Anchènman
tankou nou te fè jis yon liy kèk anvan.
Men, malerezman, sa a pral aktyèlman pa
travay, paske ou se esansyèlman fè
yon operasyon sou de kalite diferan.
>> Koulye a, sa a se trè diferan de lòt lang tankou PHP ki yo se reyèlman
loosey goosey ak sòt yo nan kalite.
Yo ap jis tankou, yeah, tou sa, mwen pa pran swen.
Jis ban m 'yon kalite, ak petèt mwen pral fè sa ki dwat.
>> Nan ka sa a, se Swift trè strik sou kalite mouvman yo
ke ou ap fè fas ak.
Operatè somasyon sa a oswa operatè Anchènman
gen esansyèlman se yon koup la diferan opsyon posib.
Ou ka fè somasyon ak nonm antye relatif, oswa ou
kapab fè fisèl Anchènman, ak petèt kèk lòt bagay yo tou.
Men, si ke operatè pa rekonèt ki sa ki sou chak bò nan li,
ou pito konbinezon an nan tout sa yo de kalite, se pa sa ki li nan tann,
lè sa a li k ap pase yo lakòz yon echèk.
>> Se konsa, nan ka sa a, ki sa sa vle di gen yon fisèl plis yon nonb antye relatif?
Oke nan yon kontèks sa a, nou pwobableman vle
fè yon operasyon fisèl Anchènman.
Men, nan kou òdinatè a pa gen ki sòt de kontèks.
Se konsa, nou bezwen bay ki plis enfòmasyon
kite li konnen ki sa li se ke nou vle fè.
>> Se konsa, nan lòt mo, lefèt ki se fòtman tape Swift
vle di ou dwe fè yon ti kras nan plis travay
jwenn li yo opere nan fason ke ou ta vle.
Men, kòm yon rezilta, li se pi an sekirite.
Apre sa, yon fwa ou gen pran nan kont sa yo kalite,
bagay sa yo jis kòmanse franchman nan travay trè byen.
>> Se konsa, nan ka sa a, nou Lè sa a ta fè fisèl Anchènman
pa klèman Distribisyon nonb antye relatif nan yon fisèl
pa vlope l 'nan sa a kapital S fisèl fonksyon,
Lè sa a, lè l sèvi avèk Anchènman ak nan fisèl operatè li modifye varyab etikèt nou an,
ak Lè sa a enprime li soti.
>> Se konsa, lwen, se konsa sa ki bon?
Tout dwa, se pou yo deplase sou.
>> Koulye a, gen yon varyete de done kalite ke nou ka itilize nan Swift.
Kòm ou te vin tounen abitye, nou kapab kreye yon etalaj mutabl.
Epi sa etalaj ka sèlman gen yon kalite sèl.
>> Se konsa, nan ka sa a, nou ap ale nan kreye yon ranje mutabl nan nonm antye relatif, ki
nou pral rele klas, epi nou yo pral kapab nan magazen ki nan bracket kare sa a
fòma menm jan ou te grandi abitye yo bay nan yon varyete de lòt lang.
Men, remake ke isit la nou ap defini yon koup nan bagay sa yo.
klas se yon variable-- mutabl nou pa itilize mo kle a kite.
Se konsa, ki vle di nou ka Lè sa a modifye sa ki nan sa a etalaj.
Li se nan kalite Array Int, epi nou ka di ke
ki baze sou parantèz kare sa yo isit la.
>> Koulye a, youn nan bagay ki bèl sou sa a se ke nou
gen aksè a yon anpil nan plis enfòmasyon
sou etalaj la jis lè l sèvi avèk kèk notasyon dot senp.
Se konsa, pou egzanp, grades.count bay yo ban nou
Nimewo a nan atik ki egziste nan ki etalaj, ki nou ka Lè sa a, jwenn aksè nan bèl
fasil tou senpleman lè l sèvi avèk ki notasyon dot.
>> Si ou vle ajoute plis atik yo etalaj sa a,
ou pa kapab fè style la PHP kote ou jis klèman defini,
Yon endèks bay yo, kèk valè ke ou vle insert.
Olye de sa, sèvi ak ajoutra nan metòd an kalite a etalaj
kole ki atik, 95, nan lis sa a.
>> Se konsa, kounye etalaj sa a gen sa ki annapre yo contents-- 100, 0, 90, 85.
Epi, koulye a nou te fen liv 95 ak sa yo ki kòm byen.
>> Gen lòt fason nou ka kole bagay sa yo.
Ou ka aktyèlman sèvi ak yon operatè somasyon,
ki pral kapab entèprete kòm yon operasyon etalaj ajoutra.
Epi ou ka Lè sa a, kole yon lòt etalaj, ki gen sa yo se 70 ak 80,
ak sa yo ki etalaj.
Se konsa, kounye a nou gen nan sa nan varyab sa a
grades-- 100, 0, 90, 85, 95, 70, ak 80.
Sa a se jis yon bèl ti kras Massachusetts Institute of Technology sik ki Swift bay yo ban nou.
>> Se konsa, si nou vle sòm la klas, nou ap petèt
ale nan vle repekte sou tout atik nan sa a riban.
Epi nou gen, nan Swift, nosyon a nan yon pou riban menm jan ou ta atann.
Men, wout la ke nou endike yon seri se yon ti kras diferan.
Se konsa, nan ka sa a, nan sòm tout bagay, nou pral
ale nan kreye yon tanporè varyab rele sòm nan lòd pou nou
yo kenbe konte sa a.
>> Apre sa, remake pou nou an bouk konstriksyon isit la.
Pou endèks nan 0 .. <grade.count.
Se konsa, konstriksyon sa a, 0 .. <grades.count se yon operasyon seri kote nou ye
ki di ke nou ap ale nan kreye yon seri de nonm antye relatif ki ant 0 moute
men eksepte grades.count.
Se konsa, sa a pral 0, 1, 2, 3, 4, 5, moute jouk sepandan anpil youn
anvan grades.count.
>> Se konsa, sa a se diferan pase ki jan nou ta anjeneral yo itilize pou pasan
ki kote ou ta gen kèk endèks varyab, mete l 'egal a 0 nan premye,
ak Lè sa a entegre sa jouk lè kèk valè mwens pase konte a nan atik
nan ki etalaj.
>> Se konsa, gen se yon modifikasyon nan sa a, aktyèlman,
ki pèmèt nou trè fasil mete diferan kalite chenn.
Si w chanje sa a ranje twa pwen, 0 ... grade.count,
sa a reprezante seri a 0 grades.count enklizif,
sa vle di ke nimewo se tou Lè sa a, ki enkli nan ki pòte.
>> Men, sa a se yon bagay ki sou la men pou bagay sa yo egzak sa yo,
lè nou gen fè itérations sou bouk
paske moun endis yo zewo Catalogue, kòm nou te wè nan lòt lang
kòm byen.
Nenpòt kesyon sou sa a pou riban?
>> Se konsa, gen nan definisyon enplisit nan varyab endèks sa a,
valè ki gen kòmanse nan 0, epi kontinye nan chak iterasyon bouk
ogmante pa 1 jiska yon pwen ki se egal a grades.count,
nan ki pwen, riban an echou.
>> Remake nan fisèl nou an entèpolasyon isit la,
nou ka aktyèlman fè kèk senp manipilasyon ak sa ki valè.
Se konsa, endèks plis 1 pral aktyèlman fè yon somasyon nan ke valè
paske endèks se, nan ka sa a, yon nonb antye relatif.
Apre sa, nan pwen sa a, li pral Lè sa a, dwe konvèti nan yon fisèl
ak entèrpole nan fisèl sa a isit la, ak enprime soti kòm nou ta atann. .
>> Epi bagay la bèl sou ranje yo isit la se
ke nou yo tou kapab gen valè atiran ak anviwònman valè
lè l sèvi avèk notasyon bracket kare a kòm nou te wè nan lòt lang tou.
>> Tout dwa, se konsa soti isit la, kounye a nou kalkile sòm nou an nan tout nan klas nou an.
Koulye a, sòt de pwochen an etap ki lojik ta dwe
fè yon operasyon divizyon jwenn soti mwayèn nan nan tout sa yo klas.
Men, yon bagay enpòtan isit la k ap pase ki
se ke sa a sòm se petèt yon nonb antye relatif.
Men, nou bezwen fè kèk sòt de doub divizyon.
Lè sa a a pwal trè enpòtan lè
nou vle fè operasyon sa a, paske sa nou ap di
se ke nou bezwen aktyèlman fè divizyon sou de double.
Epi ankò, paske Swift se yon bagay ki fòtman tape,
nou dwe klèman mete tout nan la atik yo double anvan nou aktyèlman
fè ki operasyon.
>> Se konsa, nan lòd pou nou pou n fè doub divizyon,
li pa ase pou sèlman yon sèl nan atik sa yo dwe yon doub.
Tou de nan yo gen yo dwe yon doub nan lòd pou rapid
yo dwe asire ke sa a se sa nou vle fè.
Se konsa, nou pral Lè sa a klèman kataloge sòm total la ki nou te calculée pi wo a
ak konte a nan klas double, ak Lè sa a, fè ke operasyon ak magazen
ki nan varyab nouvo sa a, ou pito konstan sa a nouvo rele mwayèn,
ki pral gen sa kalite, ou ka imajine?
Double, yeah.
Se konsa, nan ka sa a, nou pa gen ou presize li
paske li ka fè dedwi soti nan la operasyon ki kalite jou mwayèn done
yo pral.
Apre sa, Swift se jeneralman trè bon sou ke yo te kapab dégager kalite yo.
>> Ou vle wè sa a kouri, oswa mwen ka deplase sou?
Mwen vle kenbe prale.
Nenpòt kesyon sou nenpòt nan sa a?
Great.
>> Koulye a, nou ap ale nan kòmanse pou li ale nan bon fonksyon yo defini stuff--,
ak yon koup la lòt kalite ki inik nan Swift ke ou gen pa
wè nan lòt lang moute jouk pwen sa a,
men yo ap prezan nan lòt lang ke ou ta ka jwenn pita sou.
Se konsa, premye si ou vle yo defini yon fonksyon,
ou defini l 'ak pawòl Bondye a Funky fonksyon, ak Lè sa a non an fonksyon,
ak Lè sa a nan parantèz, agiman yo ke ou vle ke fonksyon yo aksepte.
Agiman yo dwe tou specify-- generally--
dwe presize tou ki kalite done ki yo ye, sof si yo ka dedwi.
Epitou, n ap wè ke ti kras opozisyon nan jis yon ti kras.
>> Se konsa, nan ka sa a nou gen yon fonksyon rele printGradeCount.
Nou pwal aksepte yon variable-- ou pito nan ka sa a,
yon constant-- rele Gradebook.
Epi, se a pwal nan tape etalaj de nonm antye relatif.
Koulye a, gen nan yon bagay sa ki nan vrèman enpòtan isit la
ke mwen ta vle nou vin konprann.
Sa se ke pa default, sa yo agiman ki entrain nan fonksyon sa a yo
defini ak yon mo kle kite enplisit, ki vle di ke mwen pa ka modifye sa a
Gradebook varyab isit la.
Ak ki sòt de fè sans, paske w ap pase done nan.
Epi ou petèt pa vle li yo dwe chanje nan anba ou.
Li posib yo klèman mansyone ke sa a se yon varyab pa mete
mo kle a var isit la.
Men, sa a se yon gotcha ke nou te moun ki te fè remake nan tan lontan an
se yo ke yo sipoze ke li pral yo dwe yon varyab lè, an reyalite, li
se yon konstan.
>> Tout dwa, se konsa isit la lè sa a, nan ka sa a, nou pa espesifye nenpòt ki kalite retou.
Nou pral montre w ki jan fè ki nan jis yon moman.
Men, remake ke isit la nou gen jis yon senp si kondisyon.
Si Gradebook la se vid, ki nan ka sa a
se jis pwopriyete a nan nonb antye relatif sa a etalaj, lè sa a nou enprime soti yon bagay.
Sinon nou fè yon lòt bagay.
>> Trè dwat byen lwen tèlman mwen panse ke.
Men, sispann m 'si ou gen nenpòt kesyon.
>> Koulye a, fonksyon sa a, mwayèn, tou pran kèk agiman, ou pito yon sèl agiman,
ki se Gradebook la, ak tan sa a ki pral retounen yon kalite doub.
Paske li se informatique mwayèn nan ak li a
ale nan aktyèlman retounen ki Computed mwayèn nan liy lan rele.
>> Nan ka sa a, nou presize an retounen di ki apre yon flèch.
Lè sa a ka santi kalite etranj nan premye.
Ou te grandi abitye mete retounen nan
tape anvan non an nan fonksyon an.
Men, si ou panse a sa a an tèm de matematik,
tankou lè ou gen matematik ki defini yon fonksyon,
ou gen yon fonksyon ak kèk entrain, epi li pwodui yon pwodiksyon.
Epi sa a, egzakteman ki sa sa a se ta sipoze imite.
Apre sa, nan yon koup la lòt lang sa yo ki te menm jan an sentaks kòm byen,
men pwobableman pa youn ki ou te wè nan CS50.
Men, toujou pa dwe mele nan li.
Flèch la vle di ki sa ki pwal yo dwe retounen nan ka sa a.
OK, Se konsa, kouman nou pral yo kalkile sa a mwayèn?
Bon, si Gradebook la a vid, byen Lè sa a, nou ap
pral retounen 0, ki petèt yon fason rezonab nan trete sa a.
Mwen pa konnen, se pou yo vini tounen nan ke nan yon ti kras.
Sa a ka pa aktyèlman gen yon fason ki rezonab
yo kalkile yon mwayèn si nou gen yon Gradebook vid.
>> Lè sa a, nou pral jis fè somasyon nou an.
Remake isit la nou aktyèlman gen yon vèsyon altène nan yon
pou riban, ki pèmèt nou repekte sou tout atik yon sèl nan yon etalaj
epi mete chak eleman nan varyab pwòp li yo.
Pa ki espesifye pou klas nan Gradebook, ki sa nou ap di
se ke nou ap ale nan chal kreye yon konstan nouvo rele
klas yo ki pral reprezante chak atik inik nan Gradebook la
chak fwa ki la pou iterates riban.
Se konsa, premye fwa ke li nan kouri, klas yo pral
gen atik la premye nan Gradebook la.
Dezyèm fwa a li pral nan dezyèm atik, sou sa ak pou fè
jouk Gradebook gen fin itilize tèt li nan eleman.
Apre sa, nou yo pral kapab sòm ki klas yo nan varyab somasyon nou an
epi retounen jou mwayèn nou an kòm nou te wè anvan.
OK, nenpòt kesyon?
Wi?
ODYANS: Mwen gen de kesyon.
Nimewo yon sèl, ipotèz, kapab ou kouri nonb antye relatif sou sa a youn?
Pa gen yo dwe yon doub, se ke kòrèk?
DAN AMRMENDARIZ: Èske ou ka repete kesyon sa a?
ODYANS: Èske mwen ka fè nonb antye relatif kòm mwayèn a?
DAN AMRMENDARIZ: Èske ou ka fè nonb antye relatif kòm yon mwayèn?
Se konsa, retounen yon nonb antye relatif mwayèn olye pou yo yon doub?
>> ODYANS: Return-- ou gen sa kounye a pi ba a.
DAN AMRMENDARIZ: Dwa isit la, retounen 0.0?
ODYANS: Yeah, jis retounen 0.
Se konsa, li pral swa 80 oswa 85, men se pa 85.2.
>> DAN AMRMENDARIZ: Se konsa, nan ka sa a, se konsa gen nan yon koup diferan fason
reponn sa.
Kite m 'reponn yo nan lòd.
Se konsa, si mwen jis fè retounen sa a 0, yon 0 se yon valè nonb antye relatif.
Se konsa, ki pral lakòz yon erè kalite pou ka sa a
paske li ap tann yon doub men se lè sa a retounen yon nonb antye relatif.
Si m 'vle retounen yon nonb antye relatif, mwen kapab.
Mwen ka mete kalite a retounen int, retounen 0 isit la,
epi yo pa fè doub divizyon.
Men, lè sa a nou ta dwe fè divizyon nonb antye relatif.
Se konsa, nou Lè sa a, pa ta jwenn nan mwayèn ke nou ta pètèt atann.
Men, repons lan se wi nou ka modifye kalite yo nan fason sa a.
>> ODYANS: Ak Dezyèmman, ou gen yon sèl Double nan sou tèt la.
Men, desann anba a, lè ou fè retounen Double Double,
sa a, se deja otomatikman retounen Double fòma.
Poukisa ou toujou bezwen defini li ak flèch sou tèt ak yon Double?
>> DAN AMRMENDARIZ: Se konsa, nan ka, sa a se yon pati
a the-- se konsa yo repete kesyon an, paske li nan soti nan retounen nan enplisit
kalite isit la, ki kalite sa a aktyèlman se, nou bezwen yo dwe eksplisit ak Swift
sou sa nou vle retounen soti nan fonksyon sa a
se konsa ke lè li fè tape tcheke, li ka asire w
ki sa nou te aktyèlman ekri desann anba a aktyèlman konfòm ak sa yo ki.
Se konsa, li sòt de tankou yon chèk ak tèt ou sòt de sitiyasyon.
Men, gen sont-
>> ODYANS: [fèbl] flèch?
>> DAN AMRMENDARIZ: Gen ka lè nou ka presize ke nou kapab chal
mete kalite a retounen.
Men, nan ka sa a, mwen pa fè sa panse ki ta travay.
Genyen kèk lòt sentaks ke nou pral wè pita.
>> Tout dwa, se konsa sa a sous kòd se yon ti jan diferan
paske sa a analysis agiman soti nan fonksyon an ke nou ap rele.
Kite m 'montre w ki jan li fonksyone anvan nou aktyèlman deplase sou
nan kèk bagay sa yo enteresan ki nan k ap pase nan Swift.
>> Se konsa, nan ka sa a, si mwen jis kouri sa a kòd, remake ke sa li ap fè
is-- ti tan, li kalite ki ban m 'yon erè etranj.
Mwen bezwen pase l yon koup la nonm antye relatif kòm yon agiman liy lòd.
Se konsa, kite a wè, 150 ak 80, ak frape Antre yo chèche konnen ki sa li la aktyèlman fè.
Li nan aksepte chak nan valè sa yo kòm nonm antye relatif.
Li nan Anthrax yo nan yon Gradebook.
Lè sa a, li nan fè ki kalkil mwayèn
ak sorti ki jan nou ta atann.
>> Men evidamman gen nan yon bagay ale sou ak yon bagay sa a rejte
yon bagay kòm yon nonb antye relatif.
Kòm ou ta ka sonje soti nan lè nou te fè fas ak liy lòd agiman
nan C ak lòt lang, trè premye nan 0-th atik nan ki agiman liy lòd
lis se non an nan yo lòd, ki ke nou aktyèlman egzekite.
Se konsa, nan ka sa a, mwen jis loupin sou tout liy lòd agiman yo.
Men, mwen pa ap fè nenpòt ki sòt de anpenpan tcheke yo sote sou ke premye yon sèl.
Mwen jis klèman oswa mwen se chal tcheke kilès nan sa yo kalite
se nonm antye relatif mwen anvan m 'aktyèlman fè kalkil sa a.
>> Epi sa a, esansyèlman sa k ap pase isit la.
Pou chak agiman an agiman pwosesis la,
Mwen pral fè kèk chèk la.
Ak nan ka sa a, mwen pral pou yo eseye premye konvèti
ki agiman an yon nonb antye relatif pa fè yon kataloge eksplisit,
paske li se, sou D ', yon afè epi yo pa an reyalite yon nonb antye relatif.
>> Men, sa a se kalite yon sentaks etranj, si se pou klas yo egal Int (agiman).
Ki sa ki aktyèlman pase isit la se trè
enpòtan yo ou itilize Swift.
Sa a se lè l sèvi avèk sa ki nan rele yon kalite si ou vle.
>> Se konsa, fonksyon sa a, Int (agiman), retounen pa sèlman yon nonb antye relatif, men retounen
sa ki rele yon nonb antye relatif si ou vle.
Se konsa, sa a se sòt de yon kalite sou tèt yon kalite.
Ou ka sòt de imajine li tankou li nan retounen tankou yon pake.
Men, lè ou louvri ki pake, li swa
gen yon nonb antye relatif, ki se rezilta nan, oswa li gen absoliman anyen nan li nan tout.
Lè sa a se itil kòm yon kont kouran erè mekanis, paske se nan ka sa a
nou ka chèche konnen, te sa a konvèsyon kalite reyisi?
Si li te, lè sa a li se an reyalite ale nan gen yon nonb antye relatif anndan an.
Sinon li k ap pase yo gen kèk valè ke nou pral rele nil, ki
se reprezantan ki pa gen nonb antye relatif nan tout.
Li nan reyèlman reprezantan nan pa gen anyen.
>> Se konsa, sa a si konstriksyon pèmèt nou ouvrier ki pake,
ki si ou vle obligatwa.
Men, si nou yo kapab ouvrier ki package epi jwenn yon nonb antye relatif andedan,
Lè sa a, ki sa nou ap di isit la se ke nou pral Lè sa a,
pèmèt ak sa yo ki valè dwe mete nan konstan sa a yo rele klas.
Ansanm ak pòsyon sa a nan si deklarasyon an, pòsyon nan tèt nan si deklarasyon an
pral kouri, paske ki defèr te gen siksè.
>> Si li jis pou k ap pase ki te gen yon erè petèt
nan sa a konvèsyon kalite eksplisit ki sòti nan yon fisèl nan yon nonb antye relatif, petèt
li nan ABC a valè pou egzanp.
Epi sa a, aktyèlman pa pral konvèti nan yon nonb antye relatif.
Lè sa a, li pral retounen nil, ki se pa yon nonb antye relatif.
Lè sa a si deklarasyon byen Lè sa a, febli.
klas yo pa pral egziste paske li pa gen okenn kontni nonb antye relatif.
Epi li pral kouri sa a blòk lòt olye.
Wi?
>> ODYANS: Nil se N-I-L?
DAN AMRMENDARIZ: nil se N-I-L, wi.
>> Se konsa, sa a se petèt youn nan nan pi di bagay sou Swift,
espesyalman lè w ap nan move zèb yo sou yon app iOS
epi ou ap aktyèlman ap fè kèk devlopman la.
Li k ap pase yo dwe tap rele ke nan ou sou si ou vle.
Li k ap pase yo dwe mande ou pou mak kesyon ak pwen esklamasyon.
Men, yon fwa ou konnen si ou out-- konsakre kèk tan yo n ap kalkile konnen
ki sa ki pwal sou ak kalite si ou vle, ou pral sove tèt ou yon anpil nan tèt fè mal
jan ou yo ap eseye ekri yon app nan Swift.
>> Li nan aktyèlman yon karakteristik gen anpil pouvwa.
Men, ou pral jis gen nan pran pawòl mwen pou li pou kounye a.
Men, nou pral wè sa a konstriksyon ak kèk lòt moun renmen li
nan kèk nan kòd la sous lòt ki nou pral montre w nan jis yon ti kras.
>> Èske gen nenpòt kesyon inisyal isit la?
Se konsa, Takeaway la enpòtan an se ke yon kalite si ou vle se sòt de yon metatype.
Li swa gen yon valè, epi si li fè sa, lè sa a li
pral petèt gen ke valè ki asosye ak li, oswa li pa gen okenn valè tou sa,
epi li se reprezante pa nil.
Rès la nan sa a se petèt menm jan ou ta atann.
>> Se konsa nou ranp moute nan difikilte ankò.
Ak tan sa a, kite a pran yon gade nan kèk kalite done lòt ki aktyèlman egziste.
Youn nan yo se diksyonè, ki se trè menm jan ak Piton diksyonè.
Li nan yon ti jan ki sanble ak yon tab regle nan C. Li se esansyèlman se yon kat nan kle
kote kle kapab strings.
Men, lè ou gade moute kle sa yo, kle sa yo pral gen yon valè.
Se konsa, li pa byen yon etalaj, men olye de sa, pi byen ki asosye
nan yon kat jeyografik regle oswa yon tab regle.
>> Ann wè ki jan sa a se ta sipoze nan travay anvan nou aktyèlman
ale nan kòd la sous tèt li.
Si m 'jis kouri sa a, pa gen anyen vrèman k ap pase.
Li nan di m 'ke mwen tann kèk paramèt nan kalite sa a.
Se konsa, mwen pral bay li kèk non pwoblèm mete,
se konsa pset0, petèt mwen te resevwa 100.
Apre sa, pset1, mwen te resevwa yon 5.
Lè sa a, sou egzamen an, mwen te fè vrèman byen ak te resevwa 30.
Apre sa, Wouch, mwen frape yon espas isit la.
>> Lè m 'frape Antre, ou ka wè li fè kèk kalkil.
Li di Gradebook se twa klas, pset1, pset0, konkou yo.
Apre sa, Gradebook la gen sa a jou mwayèn espesifik.
Se konsa, ankò, nou ap travay ak sa a lide Gradebook,
men nou ap ale nan kontinye iteration ak konpleksite a nan fonksyon nou an.
>> Se konsa, nan kòmansman an, nou ap jis ale nan kreye yon fonksyon ki
ki responsab pou enprime l 'a.
Apre sa, nan sa a sòti fonksyon ki pral jis
lafòs kite aplikasyon an.
Sa a se pa yon bagay ki ou pral sèvi avèk nan yo app.
Sa a se sèlman, nan ka sa a, ak yon agiman liy lòd.
Next nou pral kòmanse deplase nan direksyon pou Xcode.
Men, sa a se espesifik nan yon lòd pwogram style liy nan Swift.
>> Se pou nou pran yon gade nan kèk nan bagay sa yo ki enteresan isit la.
Ann wè, se sèlman yon koup la bagay sa yo enteresan mansyone petèt
se ke nan fonksyon m 'lan nan enprime ki kantite klas,
ou ta ka sonje ke mwen te gen ke lis a items-- pset1, pset0, ak konkou yo.
Ou ka aktyèlman byen vit ak byen fasil fè sa
lè yo pran Gradebook la, ki se yon diksyonè ki te gen kle ak valè.
Jwenn tout nan kle a se nan kle dot metòd la isit la,
ak Lè sa a sèvi ak joinWithSeparator sa a, ki pral Lè sa a pran tout nan kle yo
ke nou te tape nan, pset1-- oswa regrèt, pset0, pset1, ak exam--
ak anchene yo ansanm lè l sèvi avèk yon vigil ak yon espas
yo kreye yon sèl fisèl lontan.
Sa a operasyon rantre nan se jis phenomenally itil nan yon varyete de kontèks.
Se konsa, li se joinWithSeparator sa a.
>> Lè sa a se yon sèl bagay sa a, se chanje soti nan 1 rive nan Swift Swift 2.
Gen itilize yo dwe yon Style-- Piton si w ap
abitye avèk Python-- yon Piton style rantre nan metòd sou strings.
Men sa se pa gen okenn ankò ka a nan Swift 2.
Ou vle itilize sa a si ou vle anchene yon etalaj de bagay
ansanm ak yon fisèl.
>> Se konsa, petèt Lè sa a, nan nou an diskisyon sou jou mwayèn anvan,
li fè yon ti jan ti kras pi plis sans pou nou pou n mete fonksyon an mwayèn
yo dwe genyen yon doub si ou vle olye pase jis yon doub eksplisit.
Paske nou te gen ki kondisyon dwòl kote,
sa ki si Gradebook aktyèlman pa gen okenn valè nan li?
Ki sa ki ta dwe retounen nan mwayèn?
>> Oke petèt nan C ou ta gen fè yon bagay
tankou bay yon valè Sentinel, tankou 0.0, oswa petèt yon PO negatif,
oswa yon bagay jis reprezante lefèt ke te gen kèk kondisyon erè
epi ou petèt pa gen aktyèlman kapasite nan kalkile ki mwayèn.
Oke bote nan ki espesifye yon kalite si ou vle ta dwe fè sa.
Apre sa, mwen kounye a li di tout pawòl sa yo, men sa a aktyèlman pa sèvi ak opsyonèl.
Men, nou pral wè ke nan jis minit kote nou ka mete jou mwayèn
yo dwe genyen yon kalite done si ou vle pou ke si li aktyèlman retounen kèk done, lè sa a
Nou prale ke done.
Sinon nou pral retounen nil, ki di ke sa a
pa gen okenn kalkil ki gen sans.
>> Se pou yo deplase sou li nan yon lòt bagay.
Se konsa, soti isit la, nou ve yo te kap nan tout egzanp sa yo nan liy nan lòd.
Men, reyèlman sa w ap ale yo dwe fè fas ak se Xcode.
Apre sa, youn nan bagay ki bèl sou Xcode se, ak espesyalman nan Swift,
se ke nou gen sa a bagay yo te rele yon Lakou rekreyasyon.
Ak yon Lakou rekreyasyon se pa nan tout yon app iOS.
Men, li pèmèt ou fè eksperyans ak Swift nan yon fason trè fasil.
Ou ka tape tout nan kòd ou a.
Li nan joliman sentaks make isit la.
Lè ou kreye yon nouvo dosye, li pral mande ou si ou vle kreye yon Lakou rekreyasyon.
Men, bagay la bèl sou Lakou rekreyasyon an se ke sou bò dwat la nan fenèt ou,
li aktyèlman montre w Sòti nan kòd ou a.
Se konsa, si mwen desann, nou ka wè sa ki pwodiksyon an nan divès kalite liy nan Kòd
aktyèlman k ap pase yo.
>> Se konsa, nan ka sa a, nou ap ale nan chanje direksyon jis yon ti jan
epi pale sou yon bagay sa ki nan vrèman enpòtan nan fason sa a wo nivo
ki Swift opere, epi li se lide sa a nan fèmti.
Apre sa, ou te pwobableman wè sa a yon ti jan nan JavaScript.
Pou moun nan nou ki se nan CS50, fèmen
yo trè popilè, trè bon fason pou fè bagay wo nivo nan lang modèn.
Men, li la tou kalite difisil a vlope tèt ou otou premye fwa.
Se konsa, si ou ap chache nan sa a premye fwa, sa se OK.
Jis gade nan kòd la sous ak wè si ou ka figi li soti nan kay la.
>> Se konsa, nan ka sa a, se pou yo di ke nou vle kreye yon anpil nan ekspozan
ak kèk valè fiks yo.
Se konsa, nan ka sa a mwen kapab kreye yon fonksyon.
Mwen pral rele li pouvwa nan 2 objektif ki gen sèl nan lavi
se pran kèk D 'ak doub li, epi retounen ke valè.
Remake isit la mwen menm aksepte yon kalite done.
Li k ap pase yo dwe yon varyab rele x.
Li nan nan kalite Double.
Apre sa, mwen pral retounen yon Double isit la.
Apre sa, mwen jis pral fè yon trè, franchman, trè
nayif fason pou double valè sa a.
Apre sa, mwen pral montre w poukisa sa a se itil nan jis yon dezyèm fwa.
>> Remake isit la nou gen sa a ranje ankò. pou yon bagay nan 1, dot
dot dot, 2, ki vle di ke sa a riban pral kouri de fwa.
Men, sa a reprezante yon varyab egare.
Sa vle di mwen pa reyèlman ale nan lè l sèvi avèk varyab sa nenpòt kote
andedan nan sa a riban.
Mwen jis vle liy sa a nan kòd nan kouri de fwa,
san yo pa bezwen konnen valè a nan ki pòte.
>> Se konsa, nan ka sa a mwen kouri rezilta fwa x de fwa, ki esansyèlman
vle di ke mwen kwadratur valè sa a.
Lè sa a k ap pase nan travay kòm nou ta atann.
Power of 2, pase yon valè de 2.0 ba nou yon pwodiksyon nan 4.
3.2 travay pou 10,24.
>> Koulye a, nou kapab fè yon menm jan an bagay pou pouvwa nan 3.
Men koulye a, chanje sèlman seri a.
Pou egare varyab nan 1 a 3, anpil anpil pitit 3 fwa,
ak fè menm bagay la.
>> Se konsa, sa a ta ka santi yon ti kras parvenus.
Men, gen nan yon enpòtan bagay isit la ki
se ke gade nan sa yo de fonksyon, gen nan
sèlman yon sèl bagay sa a, se diferan, ki se valè sa a nan seri a.
Tout lòt bagay sou sa yo de fonksyon, pouvwa nan 3 ak pouvwa nan 2,
se, an reyalite, ki idantik paske yo travay nan menm fason an.
>> Se konsa, nan pwen sa a, yon ti kras klòch alam yo ta dwe ale nan.
Nou swete ke sa w di a, ou konnen, sa a santi l yon ti jan
tankou repetisyon nan efò.
Petèt gen nan yon fason ki mwen ta kapab ankapsulasyon tout bagay sa yo
epi yo bay yon fonksyon oubyen kreye yon fonksyon ki
fè egzakteman sa m 'vle san yo pa ki bezwen tape li soti klèman.
Lè sa a se sa ki pouvwa a nan yon fèmen pèmèt nou fè.
Se konsa, kite a pran yon gade nan sa a.
Apre sa, mwen pral depanse yon koup minit sou sa a, paske sa a
se trè enpòtan pou Swift.
Nou wè sa a tout tan tout tan an.
Nou pral defini yon fonksyon.
Li k ap pase yo dwe rele powerOf.
Li nan ale nan aksepte yon paramèt rele y nan kalite Int.
Men, pran yon gade nan kalite nan retou.
Kalite a retounen se, nan parantèz, Double flèch Double.
Ki vle di ke fonksyon sa a, sa a powerOf fonksyon,
se retounen yon fonksyon.
Sa se aksepte yon Double epi retounen yon Double.
Se konsa, ki ta ka son kalite fou, men kite a desann yon ti jan
epi gade yo wè sa ki k ap pase.
Nou andedan nan sa a powerOf fonksyon.
Nou ap kreye yon fonksyon nouvo rele exponentiator,
men li pa gen pwoblèm sa li ye.
>> Remake sa a gen yon valè D 'a x.
Epi li se pran nan yon Double epi retounen yon Double.
Lè sa a se kòd la menm ke nou wè pi wo a, eksepte ke valè a nan 2
oswa valè a nan 3, ki anwo mare nan ki ranje,
ki te ranplase ak sa a valè de y, ki
te premye paramèt la nan fonksyon powerOf nou an.
Apre sa, nan pwen sa a, nou retounen exponentiator.
Nou ap retounen fonksyon an.
>> Li nan kalite tankou yon ti mouche tèt ou.
Men, kite a imajine sa k ap pase lè m 'rele fonksyon sa a powerOf
epi yo pase nan li kèk valè tankou 2.
Ki sa sa vle di se ke Mwen kounye a gen valè nan
2 pou y, ki vle di ke sa a valè y nan fonksyon sa a exponentiator
yo pral ke valè 2.
Men, mwen retounen sa a fonksyon exponentiator.
>> Se konsa, remake ki sa Swift di mwen te kreye nan ka sa a.
kite kare se yon definisyon, li nan yon fonksyon ki aksepte yon Double
ak retounen yon Double.
Mwen te kreye yon fonksyon ki kare yon bagay
lè l sèvi avèk sa a mekanis dwa isit la.
E reyèlman sa k ap pase se ke li se retounen fonksyon sa a
exponentiator, men sa a valè y se vlope andedan nan li.
Se konsa, kounye a chak fwa mwen sèvi ak sa a varyab oswa konstan sa a yo rele
kare, li li pral konpòte yo kòm yon fonksyon.
Se konsa, mwen ka Lè sa a rele varyab sa tankou mwen ta ka rele yon fonksyon,
epi yo pase nan li yon nimewo, tankou nan ka sa a 3.
Apre sa, mwen pral Lè sa a kare valè sa a.
Se konsa, Lè sa a, 3 au ap vin 9, kòm nou ka wè isit la.
>> Vrèman fou, men sa a kounye a pèmèt m 'opòtinite pou
yo kreye lòt fonksyon powerOf.
Tankou mwen ka di, OK, byen koulye a, mwen vle yo kreye yon fonksyon nouvo, powerOf (3),
epi estoke ki nan yon konstan rele kib.
Epi, koulye a kib ki pral gen yon fonksyon ki pral Lè sa a, separe
pran kèk valè kòm opinyon ak kib ki valè kòm nou ka wè nan liy la anba
isit la.
kib nan 2 ki pral rezilta nan 8.
>> Nou swete ke trè pwòp bagay.
Ou pa janm te wè sa a anvan.
Mwen ankouraje w yo gade nan fèmti ak mennen ankèt sou sa a yon ti jan ti kras pi plis.
Li nan reyèlman pwisan bagay nou wè yon anpil nan JavaScript ak kèk lòt lang.
Li nan reyèlman enpòtan anpil nan konprann APIs kòm byen
ke nou pral ale nan nan jis yon dezyèm fwa.
Wi?
>> ODYANS: Lè ou fè powerOf (2), parantèz, ak Lè sa
yon lòt parantèz, yon lòt input-- w ap fondamantalman ranplase kare a.
DAN AMRMENDARIZ: Se konsa, gade nan liy lan trè dènye isit la.
Li se aktyèlman totalman posib yo fè sa Anchènman jan ou sijere.
Se konsa, powerOf (5) vle di ke nou ap ale gen yon exponentiator nan 5 moute isit la.
Se konsa, sa a se esansyèlman pral fè a menm bagay kòm 4 a senkyèm pouvwa a,
paske nou te kreye yon pisans fonksyone senkyèm pouvwa a,
epi nou ap pase nan ki fonksyone valè a 4.
Apre sa, nou jwenn ke valè ke nou atann, 1024.
ODYANS: Epi li pa yon non, se konsa li fè li pi fasil
li, kare a kèlkeswa sa.
>> DAN AMRMENDARIZ: Dwa, egzakteman.
Se konsa, mwen anvan m 'jis mete l' nan yon konstan isit la se konsa
ke li te fè li fasil yo sèvi ak non sa a.
Wi?
>> ODYANS: Nan kontèks sa a powerOf, li nan yon pati
nan lang lan pwogram kòm opoze a wout la ou
panse a powerOf nan [fèbl]?
DAN AMRMENDARIZ: Se konsa, nan ka sa a, powerOf
se tou senpleman non an nan la fonksyon ke mwen defini moute isit la.
Se konsa, li pa nannan nan lang nan tèt li,
men olye, li nan jis yon fonksyon ki gen
ke non paske mwen bay li non sa a.
Nenpòt lòt kesyon?
Tout dwa.
>> Koulye a, sa a se gwo.
Men, ou pa ap ale nan wè yon anpil nan fonksyon ki fèmen
se tankou sa a kote ou defini, andedan nan yon sèl fonksyon, yon lòt fonksyon.
Epi ou ka fè li.
Men, li la kalite pa vrèman nesesè, dwa?
Fè tankou poutèt sa mwen defini sa a fonksyon rele exponentiator
ak Lè sa a imedyatman retounen li.
Poukisa nou pa Èske mwen ka jis imedyatman retounen fonksyon sa a?
>> Ak nan reyalite, sa a se jisteman lide a dèyè yon konsèp yo rele
fonksyon anonim, kote fonksyon anonim pa fè sa aktyèlman
gen yon non paske yo pa bezwen gen youn.
Se konsa, nan ka sa a, nan 7B, nou ka jwenn jisteman sa.
Li nan tout kòd la menm, fè egzakteman menm bagay la,
men kounye a nou te chanje yon ti kras se konsa li ki fonksyon powerOf sa a imedyatman
retounen yon fonksyon.
Remake apre retou, gen nan yon bracket louvri Curly.
Li nan espere sa a opinyon Double.
Li nan espere ke pwodiksyon Double.
Lè sa a, nan mo kle a separe kòd la tèt li.
Se konsa, sa a se yon fonksyon anonim.
Li pa gen aktyèlman yon non, Lè nou konsidere ke anvan li te rele exponentiator.
Men, jan nou te wè, jis reyèlman pa t 'al gade nan exponentiator
deyò nan ki fonksyon.
Se konsa, li pa t 'gen pwoblèm.
Se konsa, fonksyon sa a anonim se sa yo rele paske li se nameless,
men li la toujou ki te itilize nan yon kontèks la nan kòd sa a.
>> Yo menm ki koup pwochen mwen se pral kontinye èspere ke
mouche tèt ou yon ti kras.
Nou ka senplifye sa a menm plis.
Paske jan sa te astutely vize deyò pi bonè,
petèt nou aktyèlman konnen, pa èksklamasyon nan kòd sa a, ki
pwodiksyon an nan Kòd sa a ki pral yo dwe.
Apre sa, an reyalite, nan fonksyon sa a anonim, nou ka an reyalite dégager ki kalite done.
>> Se konsa, nan yon sèl sa a, nou pa gen okenn ankò bezwen klèman defini
kalite a nan done ki nan ke yo te opinyon ak pwodiksyon soti nan fonksyon sa a
pou yon koup nan rezon.
Youn nan se ke nou te defini, moute nan la pwototip nan fonksyon an jwen,
ki kalite done sa anonim fonksyon yo ta dwe opinyon ak pwodiksyon.
Li te pran depi lòt la, nou ka dégager soti nan kòd la
desann isit la ke nou ap aksepte D 'se sa ki nan kalite Double
epi retounen yon Double.
>> Remake isit la nou gen pa klèman defini non yo nan agiman yo
ki fonksyon sa a aksepte.
Se konsa, nou wè nou ka al gade nan moun lè l sèvi avèk paramèt $ 0, $ 1,
sou sa ak pou fè, tou depann de ki kantite ki paramèt itilize
nan fonksyon sa a.
>> Sa a se yon bagay ki ou yo ale yo wè yon anpil se sa a bracket louvri Curly
definisyon swiv pa yon $ 0, ak Lè sa a kèk operasyon,
ak Lè sa a yon bracket Curly fèmen.
Sa se yon fonksyon anonim ki fè operasyon sa a.
Li te gen paramèt sa a kote li nan di ki kalite se dedwi.
Sa premye paramèt se $ 0.
Se konsa, kèk operasyon se pase sou ke $ 0.
>> ODYANS: Se konsa, siy a an dola vle di paramèt fondamantalman,
ak 0 vle di yon sèl la an premye?
DAN Armendariz: Sa a kòrèk.
Se konsa, siy a an dola fondamantalman vle di paramèt, ak 0 vle di yon sèl la an premye.
Men, li ap travay espesyalman nan ka sa a kote mwen pa yo te rele
agiman yo nan fonksyon anonim mwen.
>> ODYANS: Èske pèrl oswa yon bagay gen sa a siy dola, dola 0 nan la?
DAN Armendariz: Èske ki, Mwen regrèt?
ODYANS: pèrl gen sa a dola 0, dola 1--
DAN Armendariz: Mwen pa se twò abitye avèk pèrl,
men PHP sa defini varyab ki baze sou siy dola.
Apre sa, gen pouvwa gen kèk lang ki gen karakteristik tankou sa a.
An reyalite, Swift prete yon anpil nan karakteristik tankou sa a
ki sòti nan yon anpil nan lòt lang.
Nou wè sijesyon nan Piton nan li.
Definisyon sa a nan kalite sanble yo soti nan okanl.
Epi nou gen jis yon pakèt antye nan bagay soti nan anpil nan diferan lang.
Sa a youn nan bèl la bagay sou Swift
se ke li pran yon anpil nan pi bon an ide ki soti yon pakèt moun sou lang
ak shoehorns yo tout ansanm nan yon sèl lang super.
An reyalite, si ou pèmèt mwen kontinye mouche tèt ou,
se konsa nou ve yo te fè tout bagay sa yo.
Nou ka petèt senplifye sa a yon ti kras ti jan pa ka akonpli ke, nan kou,
Swift gen yon pisans fonksyon bati nan.
Si m 'enpòte Darwin, ki se jis bibliyotèk la ki
karakteristik fonksyon rele sa a POW, kounye a Mwen kapab senplifye pouvwa mwen nan fonksyon
yo dwe sa ki annapre yo.
Li yo pral retounen fonksyon anonim sa a.
>> Men, gade nan ki jan senp sa a se kounye a.
Sa a se yon fonksyon anonim ki se aksepte kèk kalite done,
epi li ki pral yo dwe youn agiman espesyalman,
referans a $ 0 se sa ki nan kalite Double.
Li se pral retounen yon kalite Double.
Men, deklarasyon an retou se kounye a enplisit.
>> Epi li se sa a style egzak ki se trè, trè répandus nan Swift,
tout lòt peyi sou plas la.
Nou pral wè sa a tout tan tout tan an nan Swift.
Se konsa, mwen ki montre tout nan sa a yo ou paske nan sentaks sa a.
Sa a se trè komen yo wè, ki vle di li
se yon fonksyon anonim ki ap pèfòme
kèk operasyon sou agiman sa yo.
Apre sa, se yon retounen enplisit.
Se konsa, li se absoliman menm bagay la pou nou pou n di sa a, dwa isit la.
>> Paske sa a Curly bracket se yon fonksyon,
nou ap fè operasyon sa a sou agiman an premye.
Nou pral retounen sa.
Men, sa a retounen deyò se retounen ki fonksyon antye,
ki fonksyon antye anonim ke nou te jis kreye.
Nenpòt lòt kesyon?
Tout dwa, Mwen pa konnen si ou nèg yo pare pou sa a,
men nou ka ale menm crazier ak Swift.
Ou pare?
OK, sa a se gwo.
>> Koulye a, nou aktyèlman gen kapasite a a, nan Swift, paske nan ki jan modilè
ak ki jan pwotokòl ki baze li se, nan defini operatè pwòp nou frikin.
Fè tankou nan ka sa a, nou pa te gen okenn operatè pou exponentiation-- byen,
pou fè pouvwa nan yon bagay.
Men, mwen ka, nan Swift, defini yon nouvo operatè ki fè jisteman sa.
Se konsa, nan ka sa a gen nan yon pakèt moun sou sentaks isit la.
Apre sa, mwen pral pèmèt ou gade nan li nan kay lè ou gade nan sa a.
Men, nou ap defini inséré sa a operatè, **, ki pral Lè sa a pèmèt nou,
pa defini ki sa sa fonksyon ** aktyèlman
, nan aksepte yon men gòch bò ak yon bò men dwat,
epi lè sa a retounen ekspozan an nan ki bò men gòch bò lanmè a men dwat.
>> Se konsa, kounye a tout nan yon toudenkou mwen te kreye yon nouvo nimeratè.
Se konsa, 2 ** 3 vle di 2 nan twazyèm pouvwa a.
[Lide mouche SOUND] Sa a pa tèt li ta dwe fè w ap tankou,
OK, vis C. mwen pral Swift tout wout la.
Sa a se gwo.
Sa a se trè kokenn.
>> Menm si sa a se yon gwo egzanp.
Men, mwen gen pa janm yon fwa deyò nan egzanp sa a aktyèlman
defini operatè m 'pwòp.
Men, toujou, li montre yon anpil nan pouvwa a nan Swift
e poukisa sa a se aktyèlman reyèlman anpil fre.
OK, repons lan se wi?
ODYANS: Si ou se defini operatè pwòp ou a,
ki jan ou konnen ou pa fè sa aksidantèlman eseye ak kreye yon operatè sa a, se
nan yon kote nan C, tankou kache yon kote nan Swift,
tankou yon yon sèl fènwa ke ou pa ka te wè anvan.
>> DAN Armendariz: Se konsa, si w ap eseye yo defini operatè pwòp ou a,
gen risk pou yo defini yon sèl sou yon operatè ki egziste deja.
Ki ale nan yon nivo nan detay ki Mwen pa panse ke nou gen tan ale sou.
Men sa se yon risk.
E ke se an reyalite rezon ki fè yo trè poukisa Mwen pa t 'sèvi ak senbòl la Lambda, ki
lè nou ap tape soti pouvwa a, anjeneral nou itilize 4 ti kras Lambda 5 oswa yon bagay
tankou sa yo, jis lè nou ap Gchatting ami oswa kèlkeswa sa.
Men, nan ka sa a, ki aktyèlman ta gen ki te koze yon kolizyon.
Se konsa, mwen evite li jis paske Mwen te pase nan konnen nan ka sa a
ki ki ta lakòz ki kolizyon.
>> Tout dwa.
Koulye a, malerezman, pou dènye sèt minit yo,
Mwen gen kenbe mouche panse nou yon ti kras.
Se konsa, pèmèt mwen montre w kèk lòt bagay yo tou.
>> Nou te montre ou ide sa a nan gen sa yo fonksyon anonim,
fèmti sa yo ki pèmèt ou kalite pase fonksyon alantou.
Ou ka voye yo tounen.
Ou ka manipile yo.
Ou ka fè tout kalite bagay fou.
>> Men, yon lòt bagay ki k ap pase yo itil
se kapasite a, kòm opoze retounen moun fonksyon
nan yon fonksyon, yo pase yon fonksyon kòm yon paramèt nan yon lòt fonksyon.
Ou ta ka dwe panse byen poukisa sou Latè ta mwen vle fè yon bagay tankou sa?
>> Oke, kite la di ke mwen vle pran operatè sa a ke mwen
te travay sa difisil yo kreye epi aplike li nan yon pakèt moun sou nimewo diferan
nan yon etalaj.
Se konsa, nan ka sa a mwen gen yon etalaj de integers-- 1, 4, 7, 2, 5, 10, 56.
Apre sa, mwen vle double yo tout.
Fason ki ke nou ta tipikman fè l 'se yo jis ekri
yon senp pou riban ki iterates sou tout nan yo
ak fè kèk sòt de operasyon kare sou yo,
Anthrax moun ki nouvo valè nan yon nouvo varyab, ou pito, yon nouvo etalaj isit la.
Apre sa, valè a nan pwodiksyon an nan rezilta se lè sa a tout moun ki ranje,
ou pito tout moun ki eleman kounye a okib.
>> Apre sa, nou te ka fè menm bagay la bagay pou cubing li,
men yon ti kras klòch alam Yo ta dwe pral koupe
ki di ke petèt gen nan kèk fason ke nou ta
kapab senplifye sa a yon ti kras.
Lè an reyalite gen.
E si nou te kapab kreye yon fonksyon ki pèmèt nou
aksepte, kòm yon predatè, yon fonksyon?
Se konsa, nan ka sa a, pran yon gade nan agiman sa yo.
Nou pwal aksepte yon lis ki gen double.
Lè sa a, nou ap ale aksepte yon fonksyon
nan yon varyab rele f ki pral pran yon Double epi retounen yon Double.
Ak pwodiksyon an antye nan fonksyon sa a tout antye
rele mapeur ki pral retounen yon etalaj rele doub.
>> Ki sa sa ta Lè sa a pèmèt mwen fè se repekte sou ke lis
ak fè menm bagay la, men kounye a aplike ki fonksyon sou chak
nan valè yo endividyèl nan ke lis.
Se konsa, mwen pa vrèman konnen ki sa f se.
Li pa enpòtan m '.
Men, toutotan li pran nan yon Double, fè kèk operasyon sou li,
ak Lè sa a retounen yon Double, mwen ta Lè sa a,
kapab kat jeyografik ki fonksyon atravè chak eleman yon sèl nan lis la.
>> Apre sa, sa a ki kalite pwogram se rele pi wo lòd fonksyon,
kote n ap pase fonksyon alantou kòm paramèt
ak ap fè bagay sa yo ak fonksyon.
Li nan sòt de tankou pran tout moun sa yo ide ki nou te aprann nan CS50
ak pran yo sòt a li nan yon nivo siperyè-a.
Lè sa a se tout bagay style CS51.
Se konsa, nou pral ale nan pwofondè plis nan klas tankou sa.
>> Men, sa a se tou enpòtan isit la paske nou
wè yon anpil nan fonksyon ke yo itilize nan Swift
ki esansyèlman fè sa a, kote nou gen
kèk nimewo, gen kèk etalaj de chif yo.
Nou pral konsa, etalaj nan mapeur nou an.
E nou tou ale nan pase kèk fonksyon, ki
nou te deja defini moute isit la.
Li k ap pase yo dwe kare.
Epi nou ap ale nan Lè sa a, kare tout nan moun ki nimewo
epi estoke ki nan rezilta sa a isit la.
>> Se konsa, ka sa a nou te defini nou an fonksyon pwòp rele mapeur.
Men, bagay sa a egzak se, an reyalite, bati nan Swift.
Gen yon varyete de fonksyon rele kat jeyografik.
Genyen yon fonksyon kat jeyografik, gen nan yon diminye fonksyon,
ak gen nan yon fonksyon filtre, ki esansyèlman aplike fonksyon
bay chak eleman yon sèl nan yon lis li modifye yo nan kèk fason.
>> ODYANS: Se konsa, depi w ap transfòme done yo nan yon lòt fòma
atravè yon fonksyon-
DAN Armendariz: Dwa.
Yeah, se konsa fonksyon an ke nou ap aksepte
ap transfòme done ki nan kèk fason.
Nan ka sa a, nou te swa kwadratur li, oswa nou te cubing li,
oswa reyèlman, nou te ka fè pa gen okenn operasyon sou li nan tout.
>> Men, kite m 'montre w Lè sa a, ki jan sa a ki pral fè yon gade nan pratik.
Epi ankò, m 'ap kouri yon ti jan nan tan. se konsa mwen pa se
ale nan pral kapab ale sou tout a kòd la sous isit la an detay.
Men, mwen ankouraje w fè sa.
Nou pral afiche li pi vit ke posib apre pale sa a.
>> Men, si ou pran yon gade nan sa a, asime ke nou gen yon lis ki gen nimewo,
yon etalaj nan nimewo nan sa a varyab rele nimewo.
Lè sa a, nou vle fè sa a operasyon filtre sou nimewo sa yo.
Se konsa, filtre se yon pi wo fonksyon lòd ke
aksepte yon etalaj epi tou yon fonksyon.
Yo, epi sou chak eleman nan ki etalaj, li fè ki fonksyon.
>> Si sa retounen fonksyon vre, li kenbe ki atik.
Si sa fonksyon retounen fo, li lanse lwen ki atik.
Lè sa a, li retounen yon lis ki se lè sa a te fè leve tout
nan tout sa yo atik ki te filtre.
>> Se konsa, nan yon lòt mo, sa a se lide a menm, Gradebook la.
Nou ta ka gen yon varyete de klas nan valè yo rele sa a nimewo.
Ta ka 100, ak 70, ak 40, sou sa ak pou fè.
Ki sa ki filtre sa a fè se avi ke sa a se ke sik Massachusetts Institute of Technology
pou yon fonksyon anonim.
Sa a se yon fonksyon anonim di ki paramèt la ke mwen aksepte
a pwal, si li gen plis pouvwa pase 70,
Lè sa a, sa a pral retounen vre, sa vle di pral ki atik dwe kenbe nan filtre sa a.
Se konsa nou gen yon ti jan plis konkrè sou sa a.
Si mwen gen sa a etalaj nan nimewo epi li konsiste de 100, 70, ak 40,
Mwen fè sa a filtre operasyon sou chak youn nan moun ki.
Se konsa, ke yon moun premye se sa a valè de 100.
100 pi gran pase oswa egal a 70 se vre, ki
vle di ke 100, yo kenbe yo nan kopi sa a nouvo nan etalaj sa a.
70 tou pase.
Men, 40 pa fè sa.
Se konsa, sa se retounen nan passingCount se etalaj la nan eleman 100 ak 70--
100, vigil, 70.
Moun sa yo ki te de a sèlman atik ki te kenbe.
Se konsa, rezon ki fè mwen byen vit mache ale nan tout yon anpil nan sa yo kalite lòd segondè
bagay sa yo yo paske sa a se ke komen bagay ki ou pral wè nan Swift bèl
souvan, ap pèfòme kèk operasyon lè l sèvi avèk sa a sentaks fonksyon anonim.
>> Genyen kèk bagay fre.
Switch yo se reyèlman pwisan nan Swift, Mwen vle di jis tankou fou, fou ki pwisan.
Ou kapab sèvi ak switch, ak ou ka aktyèlman aplike yo
chenn, ki se kalite fou, ak fè bagay anpenpan tankou sa.
>> Men, nan dènye minit yo kèk, Mwen vle sote devan yo byen lwen
epi montre w yon egzanp espesifik sou fason nou ka kreye nan iOS app lè l sèvi avèk Swift.
Se konsa, lè w ap fè sa a, ou pral oblije pran
yon gade at-- sou Apple la dokiman yo, yo
gen yon anpil nan reyèlman bon tutoryèl pou kreye aplikasyon premye ou.
Apre sa, mwen ankouraje ou fè ki paske yo pran ou
nan tout etap sa yo nan sa ki egzakteman nan klike sou yo kreye yon aplikasyon iOS.
>> Men, isit la nou gen sa a app iOS.
Lè li nan yon app trè senp vrèman.
Si m 'kouri sa a, kite m' montre ou sa li sanble.
Tout li esansyèlman fè se li rale soti nan entènèt la yon dosye JSON
ke mwen te ki estoke sou yon sèvè.
Epi sa dosye JSON defini imaj ki pèmèt
m 'Lè sa a, sik atravè, sou mwen app, imaj ki soti nan sèvè wèb m 'yo.
>> Se konsa, mwen gen isit la getNextImage.
Li charj yon imaj soti nan entènèt la, ak Lè sa a montre l 'sou ekran an.
>> Se konsa, li trè senp.
Men, objektif la isit la se yo montre w kouman nou ka konbine bagay sa yo
soti nan lèt semèn yo kèk nan CS50 nan yon iOS aplikasyon vrè.
Nan lòt mo, petèt youn nan nan bagay sa yo ke ou pral vle fè
se genyen yon aplikasyon iOS ki ka rale done ki sòti nan entènèt la
epi montre itilizatè a kèk enfòmasyon.
Sa se antyèman pwen an nan sa a kòd sous isit la.
>> Se konsa, gen nan yon anpil yo dwe di sou ki jan fè aktyèl iOS devlopman.
Gen yon anpil nan fou sentaks ke nou pa gen pou wè byen ankò
tankou yon klas, ki sa yon klas aktyèlman se.
Nou ka lajman inyore ki pou tan an ke yo te.
>> Men, remake ke nou te genyen nan sa a yon varyete de bagay
ke nou te deja wè tankou fonksyon ki gen non espesifik.
Lè nou bay moun fonksyon non yo kòrèk
ke yo espere pa iOS, an reyalite sa a santi l yon ti jan majik.
Men, lè ou kreye yon iOS aplikasyon, gen
Men non fonksyon espesifik ki yo rele yo pa telefòn nan tèt li
kòm aplikasyon an se loading eseye yo kreye pwosesis la ki aktyèlman
kouri aplikasyon w lan.
Se konsa, ankò, gen nan yon anpil nan bagay sa yo ke mwen gen enteprete sou isit la yo nan lòd pou nou
pale sou sa a espesyalman.
Men, mwen ankouraje w fè yon gade nan petèt lòt seminè a iOS, men tou gen kèk
nan sou entènèt nan tutoryèl ki fè yon pi bon travay nan dekri
enfòmasyon ki espesifik.
>> Men, nou ka wè yon koup la bagay sa yo ke yo enteresan nan kòd la isit la.
Remake nou gen si deklarasyon.
By wout la, yon sèl enpòtan bagay sou si deklarasyon
se ke parantèz yo ozalantou nan Ekspresyon Boolean se si ou vle.
Men, aparèy òtopedik yo Curly yo pa si ou vle, pa gen pwoblèm konbyen kèk oswa liy anpil nan kòd
ou gen nan yon si deklarasyon.
Ou pa ka gen yon si deklarasyon san yo pa aparèy òtopedik Curly nan Swift.
>> Lè sa a se, byen, sòt de dwòl.
Men, gen nan rezon istorik pou sa.
Li nan sipoze sove-w nan tèt ou.
Tankou sa a pou egzanp, ou pa kapab elimine aparèy òtopedik yo Curly alantou ki
si deklarasyon.
Moun sa yo ki yo nan reyalite yo mande yo.
Se konsa, mwen ankouraje w pran yon gade nan sa a.
Men, gen nan yon sèl plis konstwi ke mwen vle
montre w sou Swift ki se nouvo nan Swift 2.0 konpare
ki pi gran vèsyon nan Swift, ki se sa ki annapre yo.
Se pou nou wè ki kote mwen te mete l 'isit la?
>> Se konsa, nan fonksyon sa a yo rele fetchJSON, fonksyon sa a
ki responsab pou rale ki JSON ranpli ki sòti nan yon URL, ki jis konsa k ap pase
yo dwe kouri sou IDE CS50 mwen.
Mwen jis te kòmanse Apache, mete dosye JSON mwen gen,
ak mwen se kapab Lè sa a, rale ke done ki sòti nan entènèt la lè l sèvi avèk
sa a fonksyon ak URL sa a, ki se ki ofri pa telefòn nan.
Li nan ki ofri pa yon bibliyotèk ke ou itilize lè
w ap fè kèk iOS devlopman app.
>> Avi isit la ki di ke gen sa a etranj sentaks konstwi rele gad.
E reyèlman tout sa a se nan Swift se yon fason pou verifye
ke kèk bagay gen te respekte anvan ou
kontinye ak rès la nan fonksyon an.
Se konsa, mwen te kapab gen, lè l sèvi avèk sa a ki kalite si ou vle,
Mwen te kapab yo te jwenn URL la pa kouri fonksyon sa a NSURL
epi estoke ki nan yon URL konstan, ak Lè sa a tcheke
yo wè si URL te nil, paske li te ale nan retounen yon kalite si ou vle.
Men, si li te nil, lè sa a mwen ta enprime soti yon erè ak Lè sa a retounen.
>> Men, olye de sa, ki sa gad palè pèmèt nou fè se ke bagay anpil,
men asire ke li se aktyèlman ka a ke url
ki te byen mete nan NSURL.
Men, si li se, lè sa a li sot sou sa a, epi li
pral pèmèt ou kontinye ak url ke nou fin byen defini.
Men, si se ka a ke url se pa sa byen defini,
si sa a fonksyon retounen yon erè oswa kèk lòt bagay inatandi
aktyèlman rive, sa a konstwi gad palè pèmèt nou Lè sa a, pwodiksyon ki erè
epi retounen imedyatman.
Wi?
>> ODYANS: Se konsa, li kalite a tankou yon si Lè sa a, lòt bagay?
DAN Armendariz: Li nan kalite Lè sa a, tankou yon si lòt bagay, wi,
eksepte ke url sa a se Lè sa a, defini pou tout bagay anba a sa a.
Si li pase gad palè sa a, lè sa a li pral aktyèlman dwe ranpli ak done
ak ka itilize nan rete nan kòd sous nan fonksyon ou yo.
Se konsa, mwen sispèk ke w ap ale nan kòmanse wè gad palè sa a kòm byen.
Yo epi yo dwe janm bliye jan Bondye sa.
>> Se konsa, jis gade nan yon koup nan lòt bagay sa yo, dwa sa-a isit la se sa ki,
ou panse, jis ki baze sou sa nou te pale de anvan an?
>> ODYANS: Panse li pral kouri nan lis la?
>> DAN Armendariz: Se konsa, sa a, se fèmen.
Sa a se yon fonksyon ke nou ap defini.
Epi n ap Anthrax ki fonksyon kòm yon agiman sa a fonksyon isit la.
>> ODYANS: [fèbl] si se pa nil.
Se konsa, li nan lis la, dwa?
>> DAN Armendariz: Si erè a se pa nil, se konsa ke is-- se konsa mwen gen woulo liv.
Oke, kite la wè, mwen kapab pa reyèlman woulo liv a dwat a isit la.
erè a se yon agiman ki se ke yo te pase bay fonksyon sa a anonim.
Sa a se yon fonksyon anonim.
Li pa gen okenn non.
Men, nou ap aksepte sa yo twa agiman, done, repons, ak erè.
Epi li se pral retounen anile, se konsa li pa pral retounen anyen.
Lè sa a se sa ki nan ki fonksyon.
Lè sa a, nou gen aksè andedan ki fonksyon nan chak nan agiman sa yo.
>> Se konsa, li yon gwo toubouyon toune nan lang lan.
Men, mwen espere ke ak sa a, èspere ke jan ou pran
yon gade nan kèk nan tutoryèl yo espesifik nan iOS devlopman ak Swift,
espesyalman si ou ale nan Apple a pwomotè page-- entènèt
yo gen yon anpil nan reyèlman bon tutoryèl yo debarase ou te kòmanse.
Men, èspere ke jis sa a èdtan nan pale sou sentaks la li menm te ban
ou ase jwenn te kòmanse ak sa.
>> N ap afiche tout nan sous sa a Kòd sou sit entènèt la seminè
pi vit ke posib, epi tou li glisad yo kidonk, ou gen yon referans pou tout moun.
Men, bon chans ak pwojè ou a.
Ak di ou mèsi tout anpil pou vini yo.
>> [Aplodisman]