>> [CHWARAE CERDDORIAETH]
>> DAN AMRMENDARIZ: Mae pawb, croesawu i'r seminar CS50,
iOS App Datblygu gyda Swift.
Rwy'n Dan Armendariz, ac rwy'n preceptor o wyddoniaeth gyfrifiadurol yma yn Harvard.
>> Ac yr awr nesaf yn mynd i fod taith corwynt o gymaint o bethau
am y pwnc hwn fel y gallwn ni ffitio.
Byddaf yn postio cyfan o'r cod ffynhonnell y byddwch yn gweld heddiw ar-lein.
Efallai na fyddwn yn gallu mewn gwirionedd yn mynd dros bopeth
fy mod fy mod yn dangos i chi yn yr awr hon.
Ond o leiaf, gobeithio, drwy sylwadau'r cod ffynhonnell,
byddwch yn gallu i geisio chyfrif i maes beth yn union sy'n digwydd i'r pethau hynny
nad ydym yn hollol cyrraedd.
>> At ei gilydd, mae'r strwythur Bydd sgwrs heddiw fel a ganlyn.
Byddwn yn dechrau allan gwneud rhywfaint sylfaenol cystrawen gyda'r iaith Swift,
mynd i mewn i rai o'r mwyaf datblygedig cystrawen yr iaith Swift.
Oherwydd bod yr iaith yn wirioneddol fodern ac mae'n
Mae gan lawer o lefel uchel nodweddion, pethau nad ydym wedi
a welir yn C drwy gydol CS50, neu hyd yn oed rhai ieithoedd eraill
ein bod ni wedi dechrau defnyddio mewn CS50 fel PHP,
felly yr wyf yn mynd i gael i geisio cyflwyno hefyd rai pynciau sy'n
yn gysylltiedig â ieithoedd lefel uwch efallai na fyddwch yn gweld yn fanwl yn CS50,
ond byddwch yn gweld yn nes ymlaen dosbarthiadau cyfrifiadureg.
Felly, mae'n mynd i fod yn llawn awr dynn.
Ac mae croeso i chi gadewch i mi yn gwybod os oes gennych unrhyw gwestiynau.
Felly, os oes gennych ddiddordeb wrth wneud datblygu
gyda Swift, neu mewn gwirionedd unrhyw ddatblygiad app iOS,
mae yna un neu ddau o ofynion.
Yn gyntaf oll, mae'n rhaid i chi fod yn defnyddio Mac, yn rhedeg yn yr enghreifftiau
ein bod yn mynd i gael ei ddefnyddio heddiw, fersiwn cymharol newydd o OS
X. Yn yr achos hwn, rwy'n rhedeg X 10.5.
Gallwch fod yn rhedeg 10.11 os ydych yn dymuno.
Ond mae popeth eich bod chi'n mynd i gweler yn cynnwys Xcode 7 ac yn ddiweddarach,
sydd â'r fersiwn diweddaraf o Swift, sydd yn Swift 2.0.
Mae hyn mewn gwirionedd yn eithaf wahaniaeth pwysig.
Mae llawer o gystrawen wedi newid yn eithaf sylweddol
mewn rhai achosion, o Swift 1.0, a ryddhawyd y llynedd,
i Swift 2.0, a oedd yn dim ond yn dod allan gostyngiad hwn.
Felly rydym yn mynd i ddangos Swift 2.0.
Mae llawer o'r pethau a fyddwch yn chwilio am ar-lein
pan fyddwch yn ceisio cael ychwanegol gwybodaeth am amrywiaeth o bethau,
efallai y byddwch am yn benodol chwilio am Swift 2
yn hytrach na dim ond plaen hen Swift i wneud yn siŵr eich bod yn cael y gystrawen gywir.
>> Mewn gwirionedd, mae hyn yn wir yn gyffredinol.
Mae 'na swm cyflym o ddatblygiad digwydd yn yr iaith Swift
byth ers Apple rhyddhau ei fod, yr wyf yn meddwl beth, mae wedi bod ychydig dros flwyddyn
yn awr.
Ac mae pethau wedi newid yn ddramatig yn yr amser hwnnw.
Ac felly peidiwch cael ei rhwystredig os, pan ydych yn chwilio o gwmpas
ar gyfer pynciau ar Swift neu sut i gyflawni rhywbeth gan ddefnyddio peth cod enghraifft
neu rywbeth nad yw'n gwneud hynny yn gweithio mewn gwirionedd ar Swift 2.0.
Gwnewch yn siŵr eich bod yn edrych yn benodol ar gyfer y fersiwn
i geisio lleihau effeithiau gwahanol fersiynau a mathau hynny o beth.
>> Byddaf yn ceisio nodi dim ond rhai pethau sy'n wahanol i fersiynau hŷn.
Ond mae'n rhywbeth i wylio allan am.
Yn ôl pob tebyg sy'n mynd i fod yn un o'r cur pen mwyaf
y byddwch yn eu cael gyda Swift yw dod o hyd Enghraifft cod sy'n hŷn, hyd yn oed
gan ychydig o fisoedd, yn ceisio defnyddio yn eich prosiect yn fwy modern.
Ac mae'n dim ond nid yn unig yn gweithio.
Eich bod yn cael gwallau compiler, cystrawen camgymeriadau, pob math o bethau crazy.
Felly, dim ond bod yn amyneddgar gyda hynny, a byddwch, gobeithio,
cael profiad 'n bert' n glws gyda Swift yn gyffredinol.
>> Nawr gallwch mewn gwirionedd yn join-- ac yr wyf yn gobeithio rydym mewn gwirionedd yn dal i gael y year-- hwn
CS 50 oed Apple app tîm datblygu, a oedd yn
Bydd yn caniatáu i chi osod unrhyw apps yr ydych yn creu ar eich dyfeisiau iOS.
Felly cymerwch olwg ar URL hwn os oes gennych ddiddordeb mewn gwneud hynny.
>> Felly, dim ond un neu ddau o pethau am Swift ei hun.
Mae'n iaith a luniwyd.
Ond byddwch yn gweld bod rhai o'r nodweddion a ddefnyddiwn
caniatáu iddo gael ei ddefnyddio hefyd mewn tipyn fel ddehongli ffordd hefyd.
>> Mae llawer o gystrawen ei fenthyca o C. Mae'n seiliedig ac yn ysgrifenedig yn C.
Ac felly byddwn yn gweld bod mae yna lawer o siopau cludfwyd
oddi wrth eich gwybodaeth bresennol o C a allwn porthladd i Swift.
>> Ond mae yna bethau y ei gwneud yn wahanol iawn i C.
Mae wedi ei deipio yn gryf iawn.
Mae rheoli cof awtomatig.
Nid ydych yn mynd i gael i defnyddio malloc neu unrhyw le am ddim.
Mae'n gynllunio ar gyfer cyffredinolrwydd.
Felly, mewn geiriau eraill, gallwch ei ddefnyddio mewn pob math o gyd-destunau, gan Apple Watch
i iPhone yr holl ffordd i fyny at OS X, a hyd yn oed rhai gweinyddwyr, hyd yn oed rhai sgriptio.
Ond byddwn yn gweld bod y cymorth ar gyfer sgriptio
Nid yw hollol hyd yma fel y mae mewn ieithoedd eraill.
Felly mae'r rhan fwyaf tebygol, byddwch yn defnyddio mae hyn yn arbennig ar gyfer datblygu
ar eich Mac neu eich iPhone.
>> Ac mae ganddi lawer o nodweddion modern.
Ac mae llawer o pethau hyn yn bethau sy'n rydym yn mynd i geisio mynd i'r afael heddiw,
ond hefyd ein pynciau sy'n dweud y gwir, gallwn neilltuo cyrsiau cyfan.
Yn wir, CS 51, sef cynnig semester nesaf,
yn canolbwyntio llawer ar y pynciau hyn sy'n cael eu disgrifio isod.
Felly, gallwch treulio semester cyfan deall y pethau hyn.
Ond rydyn ni'n mynd i roi cynnig ar i fynd drwyddynt
o leiaf yn ddigon bod chi Gall deall beth sydd
digwydd pan fyddwch yn edrych mewn rhaglen Swift
a gallu darnia eich ffordd drwyddo ar gyfer y prosiect terfynol.
>> Bellach yn un o'r ffyrdd gorau y gallwch gael gwybodaeth ychwanegol am hyn
yn dweud y gwir dim ond drwy Afalau ' Darperir dogfennau ar gyfer Swift.
Mae llawer o APIs sydd ar gael.
Ac mae hyn yn sylfaen gartref da i chi i chwilio am, pethau penodol sy'n eich
am ei wneud gyda API ymwneud iOS.
Os ydych am ddefnyddio'r camera ar gyfer enghraifft, gallwch dechrau edrych fan hyn,
ac hefyd yn defnyddio Google ac Stack Gorlif gymaint ag arfer.
>> Unrhyw gwestiynau am hyn cyn i ni neidio i'r dde i mewn?
Iawn.
Gadewch i ni symud ymlaen.
>> Felly yn gyntaf, mae gen i nifer o ffeiliau enghraifft.
Ac yr wyf i'n mynd i geisio gamu drwyddynt yn gymharol gyflym.
Mae hyn yn y ffeil Hello Byd ar gyfer Swift.
Mae'n syml iawn.
Mae ffordd fwy sylwadau na sydd cod gwirioneddol.
Sylwch ar y cod gwirioneddol ar y gwaelod iawn ar linell 14.
Mae'n dweud print.
Ac yna mae'n swyddogaeth alwad.
Rydym yn pasio i mewn iddo yn llinyn o'r enw Helo cs50.
Sylwch fod does dim hanner colon.
Sylwch fod does dim prif int.
Mae unrhyw un o'r cruft a oedd gennym gyda C.
Pan fyddwn yn defnyddio Swift yn y modd hwn, sydd yn ysgrifenedig yn unig mewn ffeil testun
a'i storio ar fy nghyfrifiadur, yna Gallaf lunio a'i redeg.
>> Sylwch fod yma rwy'n Nid yw defnyddio'r IDE CS50.
Mae hyn yn tybio fy mod rhedeg ac fy mod ar OS X,
ac yr wyf wedi Xcode gosod yn barod ar y peiriant yma er mwyn i hyn
i swyddogaeth mewn gwirionedd.
Ond dim ond ffeil testun arferol mae hyn yn y gallwn wedyn lunio a golygu.
Felly, gadewch i ni weld sut y mae hyn yn gweithio mewn gwirionedd.
Beth os wyf am i lunio ei?
1.swift swiftc.
Ar ôl eiliad neu ddau, mae'n yn gweld bod gennym yn awr
luniwyd hyn i mewn i ffeil o'r enw 1.
Ac yn awr rydym wedi argraffu ein CS50, ein cais Hello World yn hytrach.
>> Hysbysiad un peth arall fel dda yw bod yn ddiofyn,
nid oedd gennym i fewnbynnu a / n i argraffu llinell newydd.
Yn ddiofyn, y swyddogaeth print yn Bydd Swift argraffu llinell newydd i chi.
Gallwch pasio dewisol ychwanegol paramedr i ddweud iddo beidio â gwneud hynny.
Ond mae Google am fwy o wybodaeth am hynny.
Yn ddiofyn, bydd yn gwneud y llinell print.
>> Mae pob hawl, felly gadewch i ni symud ymlaen yna i rai pethau eraill.
Felly, sut y gallwn mewn gwirionedd ddiffinio newidynnau?
Gallwn wneud hynny'n defnyddio un o ddau ddull.
Ac mae'r un yr wyf am ei ddweud wrthych am y tro cyntaf yw diffiniad osod hwn.
Ac mae hyn yn bwysig oherwydd yn effeithiol
yr hyn rydym yn ei wneud yn diffinio gyson.
Rydym yn mynd i greu amrywiol, neu yn hytrach enw a elwir yn gyson,
darparu ato rai data-- mewn yr achos hwn, y llinyn Dan.
Ond drwy ddefnyddio osod hwn allweddair, yr ydym yn dweud
bod hyn variable-- neu eto constant-- Gelwir
byth enw yn mynd i gael ei newid.
Mae'n mynd i fod yn ddigyfnewid drwy gydol hyd y rhaglen hon
neu drwy gydol y hyd y cyd-destun
bod y newidyn ar gael.
>> Mae hyn yn bwysig iawn pan mae gennych rhywfaint o ddata nad yw'n
mynd i newid yn eich rhaglen, a byddwch yn gweld amrywiaeth o enghreifftiau
ynghylch pryd yr ydym am eu defnyddio gadewch yn erbyn y gystrawen arall,
mae'n bwysig eich bod yn defnyddio gadael lle bo hynny'n bosibl gan fod hyn yn hysbysu
yr iaith ei fod yn ddim yn mynd i gael ei newid,
a gall berfformio mewn gwirionedd llawer o optimeiddiad
i wella cyflymder a diogelwch eich rhaglen.
A thrwy diogelwch, nid wyf yn golygu gadael i mae'n damwain gyda gwallau crazy
y gallem fod gyfarwydd â gweld yn C.
>> Yna, gallwn ddefnyddio rhyngosod llinyn crynhoi hyn o fewn llinyn.
Felly, gallwn weld yn hyn llinell argraffu, argraffu helo,
ac yna gan ddefnyddio parens agored slaes, ac yna enw fy amrywiol,
yn yr achos hwn yn gyson, cau'r cromfachau.
Im 'yn y bôn, yna rhoi'r cynnwys y newidyn gelwir hyn enw
tu mewn i'r llinyn ac yna argraffu'r canlyniad yno.
>> Mae un newid arall at y ffeil hon sef bod gennyf, ar yr union uchaf,
roi mewn llinell shebang, a oedd yn y bôn yn unig yn pennu
yr wyf am ei ddefnyddio Cyfieithydd Swift, a oedd yn
yn golygu nad oes gennyf unrhyw mwy o amser i llunio y rhaglen benodol hon.
Gall Fi jyst hidla 'fel ei sgript ei hun.
Ond mae hyn yn, yn yr achos hwn, y tu ôl i'r llenni sy'n cael eu llunio ac wedyn
cael eu rhedeg.
Dim ond anweledig i ni.
>> Mae pob hawl, felly gadewch i ni symud ymlaen.
Felly mae 'na ychydig o dwyll a ddigwyddodd ychydig cyn.
Dangosais wrthych fy mod Gallai ddiffinio gyson.
A gallwn ddarparu rhywfaint o ddata i wneud hynny.
Ond yn yr achos hwn, yn sylwi nad oeddwn yn gwneud mewn gwirionedd yn nodi'r math o ddata
ei fod yn.
A dyna oherwydd bod y compiler, gall Swift
casglu y math o ddata yn seiliedig yn unig ar y data yr wyf yn ei roi i mewn iddo.
Oherwydd ei fod yn gwybod bod drwy werthuso hon amrywiol iawn yma, yr hawl hon data
yma, mae'n gwybod ei fod yn llinyn.
Ac felly yr enw gyson felly yw mynd i fod yn llinyn hefyd.
>> Ond gallwn hefyd fod yn eglur am y math sy'n
yr ydym yn mynd i'w ddefnyddio ar gyfer cysonion neu newidynnau
trwy ddefnyddio cystrawen hwn instead-- gadewch Llinynnol enw colon hafal
Dan, sydd yn yr achos yn golygu ein bod yn mynd i ddiffinio enw o'r enw gyson.
Mae'n mynd i fod o fath Llinynnol.
Ac mae'r gwerth yn mynd i fod Dan.
Nawr bod y ffordd arall sy'n gallwn greu variables--
ac mae'r rhain yn newidynnau mutable, a oedd yn yn golygu ein bod, mewn gwirionedd, yn mynd
i newid eu cynnwys rywbryd yn y cyfnod y cyd-destun
bod y newidyn yn defined-- ydym Defnyddiwch y gair allweddol var yn hytrach na gadael i.
Ond unwaith eto, yn ddiofyn, oni bai eich bod yn gwybod bod angen i chi drin data hwnnw,
ceisiwch ddefnyddio gadael am gwelliannau perfformiad.
>> Yn yr achos hwn, gallaf wedyn nodi'r math o ddata
ein bod yn disgwyl i fod tu mewn y newidyn newydd o'r enw label.
Mae'n mynd i fod yn llinyn.
Ac rydym yn mynd i wedyn concatenate dau llinynnau at ei gilydd, y llinyn helo,
ac y llinyn gynrychiolir gan y amrywiol, neu yn hytrach yr enw gyson.
>> Felly, mae hyn yn braf gan fod hyn yn braidd PHP fel yn ein bod yn
cael concatenation llinyn yn hawdd iawn.
Nid oes rhaid i Rydym yn awtomatig defnyddio unrhyw fath o reolaeth cof
i gynyddu maint a gwneud unrhyw fath o bethau doniol yno.
Mae hyn yn gweithio fel y byddem yn disgwyl mewn gwirionedd.
>> Mae pob hawl, unrhyw gwestiynau am hyn?
>> Nawr bod y rheswm arall y mae angen i chi y gallu
i allu diffinio beth math o newidynnau data rhifol yn
oherwydd weithiau nid ydym yn ei wneud eisiau ymgychwyn newidynnau
gyda rhywfaint o ddata yn y pwynt o ddiffiniad.
Felly, yn yr achos hwn, gadewch i ni ddweud yr wyf am ddechrau mewnbynnu
rhai graddau mewn llyfr gradd.
Wel, yr wyf yn gwybod bod un o'r newidynnau yr wyf am ei fod yn
yn mynd i fod yn radd mutable.
Ac rydym hefyd yn gwybod ein bod yn am iddo fod yn gyfanrif.
Ond efallai nad ydym yn ei wneud eto cael y radd honno ar gael.
>> Yn Swift, rhaid i chi diffinio'r math o ddata
sy'n gysylltiedig â amrywiadwy neu adael gyson
cyn y gallwch mewn gwirionedd defnyddiwch y newidyn.
Oherwydd ei fod yn cael ei deipio yn gryf, mae'n rhaid i chi gysylltu math
gyda newidynnau hyn.
>> Felly, yn yr achos hwn, os nad wyf i wedi yn iawn ymgychwyn y cyntaf gyda rhywfaint o werth,
yna mae angen i mi ddweud wrth Swift beth Yr wyf yn disgwyl y math data i fod.
Ac mae'n mynd i aros hynny un math data
drwy gydol hanes y rhaglen hon.
>> Nawr efallai y cewch eich temtio cyn gynted ag y Rwyf wedi creu y newidyn radd
ac ar yr amod ei fod yn cyfanrif o 100, yn awr os byddaf
eisiau ceisio concatenate llinyn gyda'r cyfanrif,
Efallai chael eich temtio i barhau i ddefnyddio y gweithredwr concatenation llinyn
fel y gwnaethom dim ond ychydig linellau o'r blaen.
Ond yn anffodus, bydd hyn mewn gwirionedd nid
yn gweithio, am eich bod yn perfformio yn y bôn
llawdriniaeth ar ddau fath gwahanol.
>> Yn awr mae hyn yn wahanol iawn i eraill ieithoedd fel PHP sydd yn wirioneddol
Goosey loosey gyda'u math o fathau.
Maent yn unig yn ei hoffi, ie, beth bynnag, nid wyf yn poeni.
Dim ond yn rhoi un math mi, ac efallai 'n annhymerus' wneud y peth iawn.
>> Yn yr achos hwn, Swift yn hynod o llym am y mathau
eich bod yn delio â.
Mae'r gweithredwr Crynodeb neu weithredwr concatenation
Mae gan y bôn un neu ddau o gwahanol opsiynau posibl.
Gallwch wneud Crynodeb gyda chyfanrifau, neu os ydych yn
Gall wneud concatenation llinyn, ac efallai rhai pethau eraill hefyd.
Ond os nad yw gweithredwr yn cydnabod beth sydd ar y naill ochr iddo,
neu yn hytrach y cyfuniad o'r rhai Nid yw dau fath, yn yr hyn y mae'n ei ddisgwyl,
Yna, mae'n mynd i achosi methiant.
>> Felly, yn yr achos hwn, beth mae'n ei olygu i gael llinyn ynghyd yn gyfanrif?
Wel yng nghyd-destun hyn, mae'n debyg ein bod eisiau
i wneud llawdriniaeth concatenation llinyn.
Ond wrth gwrs y cyfrifiadur Nid oes gan y math hwnnw o gyd-destun.
Ac felly mae angen i ni ddarparu bod gwybodaeth ychwanegol
i adael iddo wybod beth y mae'n yw ein bod am ei wneud.
>> Felly, mewn geiriau eraill, y ffaith bod Swift yn teipio gryf
golygu bod yn rhaid i chi wneud ychydig bach o waith ychwanegol
i'w gael i weithredu'r ffordd y byddech am.
Ond o ganlyniad, mae'n fwy diogel.
Ac unwaith y byddwch wedi cymryd i ystyriaeth y mathau hynny,
pethau dim ond dweud y gwir yn dechrau i weithio'n eithaf da.
>> Felly, yn yr achos hwn, byddwn wedyn byddai perfformio concatenation llinyn
trwy gastio benodol cyfanrif i llinyn
drwy lapio fel hyn cyfalaf swyddogaeth S Llinynnol,
ac yna defnyddio'r concatenation llinyn gweithredwr i addasu ein newidyn label,
ac yna ei hargraffu.
>> Hyd yn hyn, felly da?
Mae pob hawl, gadewch i ni symud ymlaen.
>> Erbyn hyn mae amrywiaeth o ddata mathau y gallwn eu defnyddio yn Swift.
Gan eich bod wedi dod yn gyfarwydd â, gallwn greu amrywiaeth mutable.
A gall fod amrywiaeth yn unig cynnwys math sengl.
>> Felly, yn yr achos hwn, rydym yn mynd i greu o araeau mutable o gyfanrifau, a oedd yn
byddwn yn galw graddau, a byddwn yn gallu storio'r yn y band sgwâr
fformat ag y byddwch wedi tyfu gyfarwydd i mewn amryw o ieithoedd eraill.
Ond yn sylwi bod yma rydym yn diffinio un neu ddau o bethau.
graddau yn variable-- mutable nid ydym yn defnyddio'r gair allweddol osod.
Felly mae hynny'n golygu y gallwn ni wedyn addasu cynnwys y arae hwn.
Mae'n y math Int Array, a gallwn ddweud bod
yn seiliedig ar bachau petryal yma fan hyn.
>> Bellach yn un o'r pethau neis am hyn yw ein bod yn
yn cael mynediad at lawer o Gwybodaeth Ychwanegol
am yr amrywiaeth yn unig gan ddefnyddio rhywfaint o dot syml nodiant.
Felly, er enghraifft, grades.count yn darparu i ni
nifer yr eitemau sy'n bodoli yn y array, a gallwn wedyn gael mynediad bert
hawdd syml, gan ddefnyddio hynny dot nodiant.
>> Os ydych chi eisiau ychwanegu ychwanegol eitemau i amrywiaeth hwn,
na allwch wneud yr arddull PHP lle rydych jyst diffinio yn benodol,
mewn mynegai a roddir, rhywfaint o werth eich bod am i fewnosod.
Yn lle hynny, defnyddiwch y atodi dull yn y math amrywiaeth
i atodi hynny eitem, 95, at y rhestr hon.
>> Felly nawr amrywiaeth hon mae gan y canlynol contents-- 100, 0, 90, 85.
Ac yn awr rydym wedi atodi 95 i hynny hefyd.
>> Mae yna ffyrdd eraill gallwn atodi pethau.
Gallwch ddefnyddio mewn gwirionedd gweithredwr Crynodeb,
fydd yn cael ei ddehongli fel llawdriniaeth atodi arae.
A gallwch wedyn atodi un arall array, y mae eu cynnwys yn 70 a 80,
at y casgliad.
Felly, yn awr mae gennym y cynnwys yn y newidyn hwn
grades-- 100, 0, 90, 85, 95, 70, a 80.
Mae hyn yn unig yw cystrawennol bach neis yn siwgr sy'n Swift yn darparu i ni.
>> Felly os ydym am i grynhoi y graddau, rydym yn bosibl
mynd i eisiau i ailadrodd dros bob eitem yn y ddolen hon.
A oes gennym, yn Swift, mae'r syniad o ar gyfer dolen fel y byddech yn ei ddisgwyl.
Ond mae'r ffordd yr ydym yn dangos amrediad ychydig yn wahanol.
Felly, yn yr achos hwn, i grynhoi popeth, rydym chi helpu
mynd i greu dros dro Gelwir swm amrywiol er mwyn i ni
i gynnal y cyfrif hwn.
>> Ac yn sylwi ar ein gyfer adeiladu dolen yma.
Ar gyfer mynegai yn 0 .. <grade.count.
Felly adeiladu hwn, 0 .. <grades.count yn llawdriniaeth amrediad lle'r ydym
dweud ein bod yn mynd i greu amrywiaeth o gyfanrifau o 0 i fyny
i ond heb gynnwys grades.count.
Felly bydd hyn yn 0, 1, 2, 3, 4, 5, hyd nes faint bynnag o un
cyn grades.count.
>> Felly, mae hyn yn wahanol na sut yr ydym Byddai ei ddefnyddio fel arfer ar gyfer dolenni
lle y byddech yn cael rhywfaint o fynegai amrywiol, ei osod yn gyfartal i 0 ar y dechrau,
ac yna integreiddio hynny nes i rai werth llai na'r cyfrif o eitemau
yn y rhesi.
>> Felly mae addasiad at hyn, mewn gwirionedd,
sy'n ein galluogi i hawdd iawn gosod gwahanol fathau o ystodau.
Os byddwch yn newid ystod hon i tri dotiau, 0 ... grade.count,
mae hyn yn cynrychioli yr ystod 0 i grades.count gynhwysol,
sy'n golygu bod y rhif hwnnw hefyd Yna eu cynnwys yn yr ystod.
>> Ond mae hyn yn ddefnyddiol iawn ar gyfer y rhain union bethau,
pan mae'n rhaid i ni berfformio iteriadau dros ddolen
oherwydd bod mynegeion hynny yn cael eu mynegeio sero, fel y gwelsom mewn ieithoedd eraill
yn ogystal.
Unrhyw gwestiynau am hyn ar gyfer dolen?
>> Felly mae diffiniad ymhlyg o hyn newidyn mynegai,
gwerth y mae ei dechrau ar 0, ac yn parhau ar bob iteriad dolen
cynyddu 1 hyd at bwynt sy'n hafal i grades.count,
a bryd hynny, mae'r ddolen aborts.
>> Sylwch fod yn ein llinyn rhyngosod yma,
gallwn mewn gwirionedd yn perfformio rhai syml manipulations i gwerthoedd hynny.
Felly mynegai ac 1 fydd mewn gwirionedd perfformio Crynodeb o'r gwerth hwnnw
oherwydd bod mynegai yw, mewn yr achos hwn, yn gyfanrif.
Ac ar y pwynt hwnnw, bydd yn wedyn yn cael ei drawsnewid i mewn i linyn
a rhyngosod mewn i linyn hyn yma, a'i argraffu fel y byddem yn ei ddisgwyl. .
>> A'r peth braf am y arrays yma yw
ein bod hefyd yn gallu cael Gwerthoedd nôl a gosod gwerthoedd
gan ddefnyddio'r nodiant braced sgwâr fel rydym wedi gweld mewn ieithoedd eraill hefyd.
>> Mae pob hawl, felly oddi yma, rydym bellach gyfrifo ein swm o bob un o'n graddau.
Nawr fath o'r nesaf Byddai cam rhesymegol yn
i wneud llawdriniaeth is-adran i ddod o hyd allan y cyfartaledd y graddau hynny.
Ond mae rhywbeth pwysig yma yn digwydd pa
yw bod y swm hwn o bosibl yn gyfanrif.
Ond mae angen i berfformio rhai fath o is-adran dwbl.
Ac mae hyn yn mynd i fod eithriadol o bwysig pan fydd
rydym am i berfformio llawdriniaeth hon, oherwydd yr hyn yr ydym yn ei ddweud
yw bod angen mewn gwirionedd i ni perfformio rhaniad ar ddau dyblau.
Ac eto, oherwydd Swift ei deipio yn gryf iawn,
mae'n rhaid i ni osod yn benodol pob un o'r eitemau i dyblau cyn i ni mewn gwirionedd
perfformio y llawdriniaeth.
>> Felly, er mwyn i ni perfformio rhaniad dwbl,
nid yw'n ddigonol ar gyfer dim ond un o'r eitemau hynny i fod yn ddwbl.
Rhaid i'r ddau ohonynt fod yn dwbl er mwyn i gyflym
i fod yn siŵr bod hyn yn yw'r hyn yr ydym am ei wneud.
Felly, byddwn wedyn yn typecast yn benodol y swm y rydym wedi gyfrifo uchod
a'r cyfrif o raddau i dyblau, a yna perfformio y llawdriniaeth ac yn storio
hynny i mewn i'r newidyn newydd, neu yn hytrach hwn cyson newydd o'r enw gyfartaledd,
a fydd yn cael pa fath, chi ddychmygu?
Dwbl, yeah.
Felly, yn yr achos hwn, rydym yn Nid oes rhaid nodi ei fod
oherwydd gellir ei casglu o gweithrediad pa fath o gyfartaledd y data
Bydd fod.
A Swift yn gyffredinol eithaf da am allu gasglu mathau.
>> Ydych chi eisiau gweld hyn rhedeg, neu a allaf symud ymlaen?
Rwyf am i gadw i fynd.
Unrhyw gwestiynau am unrhyw un o'r hyn?
Great.
>> Nawr rydym yn mynd i ddechrau i gyrraedd swyddogaethau diffinio stuff-- da,
ac un neu ddau o fathau eraill sy'n unigryw i Swift nad oes gennych
gweld mewn ieithoedd eraill hyd nes y pwynt hwn,
ond maent yn bresennol yn eraill ieithoedd a allai fod yn nes ymlaen.
Felly, yn gyntaf os ydych am i ddiffinio swyddogaeth,
ydych yn ei ddiffinio â'r gair ffynci swyddogaeth, ac yna enw'r swyddogaeth,
ac yna mewn cromfachau, y dadleuon eich bod am swyddogaeth honno i dderbyn.
Rhaid i'r dadleuon hefyd specify-- generally--
Rhaid hefyd nodi y math o ddata sy'n maent, oni bai y gellir eu casglu.
A byddwn yn gweld mai ychydig cafeat mewn dim ond ychydig.
>> Felly, yn yr achos hwn mae gennym swyddogaeth o'r enw printGradeCount.
Rydym yn mynd i dderbyn variable-- neu yn hytrach yn yr achos hwn,
yn constant-- o'r enw llyfr marciau.
Ac mae'n mynd i fod o teipiwch amrywiaeth o gyfanrifau.
Nawr mae yna rywbeth mae hynny'n bwysig iawn fan hyn
yr wyf am i chi ddeall.
Hynny yw, yn y dadleuon hyn yn ddiofyn sy'n mewnbynnau i'r swyddogaeth hon yn cael eu
ddiffiniwyd gyda gair allweddol osod ymhlyg, sy'n golygu na allaf addasu hyn
newidyn llyfr marciau yma.
Ac yn y math hwnnw o yn gwneud synnwyr, oherwydd eich bod yn pasio data i mewn.
Ac nad ydych efallai yn dymuno hynny i gael eu newid o dan chi.
Mae'n bosibl sôn yn benodol bod hwn yn newidyn drwy roi
yr allweddair var yma.
Ond mae hynny'n gotcha ein bod i wedi pobl sylwi wedi gwneud yn y gorffennol
yw eu bod yn cymryd yn ganiataol ei fod yn mynd i fod yn newidyn pan, mewn gwirionedd, mae'n
yn gysonyn.
>> Mae pob hawl, felly dyma hynny, yn yr achos hwn, nid ydym yn pennu unrhyw fath dychwelyd.
Byddwn yn dangos i chi sut i wneud hynny mewn dim ond hyn o bryd.
Ond yn sylwi bod yma gennym dim ond syml os bydd cyflwr.
Os bydd y llyfr marciau yn gwag, sydd yn yr achos
yn unig yn eiddo i gyfanrif hwn array, yna rydym yn argraffu rhywbeth.
Fel arall rydym yn ei wneud rhywbeth arall.
>> Pretty syml hyd yn hyn dwi'n meddwl.
Ond rhoi'r gorau i mi os oes gennych unrhyw gwestiynau.
>> Yn awr y swyddogaeth hon, ar gyfartaledd, hefyd yn cymryd rhai dadleuon, neu yn hytrach un ddadl,
sef y llyfr marciau, a'r tro hwn yn mynd i ddychwelyd math dwbl.
Oherwydd ei fod yn cyfrifiadurol cyfartaledd ac mae'n
mynd i ddychwelyd sydd mewn gwirionedd cyfartaledd gyfrifiadurol i'r llinell galw.
>> Yn yr achos hwn, rydym yn pennu'r yn dychwelyd ar ôl y math saeth.
A gallai hyn deimlo fath o 'n annaearol ar y dechrau.
Rydych chi wedi tyfu gyfarwydd i osod y ffurflen
teipiwch cyn enw'r swyddogaeth.
Ond os ydych yn meddwl am hyn o ran mathemateg,
fel pan mae gennych mathemateg sy'n diffinio swyddogaeth,
mae gennych swyddogaeth gyda rhai mewnbynnau, ac mae'n cynhyrchu allbwn.
A dyna yn union beth mae hyn i fod i ddynwared.
Ac mae 'na ychydig o ieithoedd eraill sydd â cystrawen tebyg yn ogystal,
ond mae'n debyg na fydd unrhyw un sy'n rydych wedi ei weld yn CS50.
Ond yn dal heb eu drysu ganddo.
Mae'r saeth yn golygu beth sy'n mynd i'w dychwelyd yn yr achos hwn.
Iawn, felly sut ydym yn mynd i gyfrifo cyfartaledd hwn?
Wel, os yw'r llyfr marciau yn wag, yn dda yna rydym yn
mynd i ddychwelyd 0, sydd efallai yn ffordd resymol i drin hyn.
Nid wyf yn gwybod, gadewch i ni ddod yn ôl at hynny mewn ychydig.
Efallai na fydd hyn mewn gwirionedd yn ffordd resymol
i gyfrifo cyfartaledd os mae gennym llyfr graddau wag.
>> Yna, byddwn yn unig yn perfformio ein Crynodeb.
Sylwa a dyma ni mewn gwirionedd gael fersiwn arall o
ar gyfer dolen, sy'n ein galluogi i ailadrodd dros bob un eitem mewn amrywiaeth
ac yn gosod pob elfen yn ei amrywiol hun.
Drwy nodi ar gyfer gradd mewn llyfr marciau, yr hyn yr ydym yn ei ddweud
yw ein bod ni'n mynd i ymhlyg creu cyson newydd o'r enw
radd a mynd i gynrychioli pob eitem unigryw yn y llyfr marciau
bob tro y mae'r i ailadrodd ddolen.
Felly, y tro cyntaf i mae'n rhedeg, gradd y bydd
fydd yr eitem gyntaf yn y llyfr graddau.
Yr ail dro bydd yn cael y ail eitem, yn y blaen ac yn y blaen
hyd nes y llyfr graddau wedi blino'n lân ei hun o elfennau.
Yna, byddwn yn gallu i grynhoi bod radd i mewn i'n newidyn Crynodeb
a dychwelyd ein cyfartaledd fel yr ydym wedi ei weld o'r blaen.
OK, unrhyw gwestiynau?
Do?
GYNULLEIDFA: Mae gennyf ddau gwestiwn.
Rhif un, yn ddamcaniaethol, gall ydych yn rhedeg cyfanrif ar yr un yma?
Nid oes rhaid i fod yn ddwbl, yw bod yn gywir?
DAN AMRMENDARIZ: Allwch chi ailadrodd y cwestiwn hwnnw?
GYNULLEIDFA: A allaf wneud cyfanrif fel cyfartaledd?
DAN AMRMENDARIZ: Allwch chi gwneud cyfanrif fel cyfartaledd?
Felly ddychwelyd yn gyfanrif gyfartaledd yn lle ddwbl?
>> GYNULLEIDFA: Return-- chi wedi bod ar hyn o bryd isod.
DAN AMRMENDARIZ: Hawl yma, yn dychwelyd 0.0?
GYNULLEIDFA: Yeah, dim ond yn dychwelyd 0.
Felly bydd yn naill ai 80 neu 85, ond nid yw 85.2.
>> DAN AMRMENDARIZ: Felly yn yr achos hwnnw, felly mae 'na gwpl o ffyrdd gwahanol
i ateb hynny.
Gadewch i mi eu hateb mewn trefn.
Felly os Fi jyst yn gwneud y ffurflen hon 0, mae 0 yn werth gyfanrif.
Ac felly fydd yn achosi gwall math ar gyfer yr achos hwn
oherwydd ei fod yn disgwyl dwbl ond yna yn dychwelyd yn gyfanrif.
Os ydw i eisiau dychwelyd cyfanrif, gallaf.
Gallaf osod y math dychwelyd i int, dychwelyd 0 yma,
ac nid yn perfformio rhaniad dwbl.
Ond yna byddem yn wneud is-adran cyfanrif.
Ac felly rydym ni fyddai wedyn yn cael y cyfartaledd y byddem yn ei ddisgwyl o bosib.
Ond ie gallwn addasu y mathau yn y ffordd honno.
>> GYNULLEIDFA: Ac yn ail, chi yn cael y un ddwywaith ar y brig.
Ond i lawr isod, pan fyddwch yn yn dychwelyd Dwbl Dwbl,
sydd eisoes yn awtomatig dychwelyd fformat dwbl.
Pam mae dal i fod angen i chi ddiffinio gyda saeth ar ben gyda Dwbl?
>> DAN AMRMENDARIZ: Felly rhag ofn, mae hyn yn rhan
o the-- felly i ailadrodd y cwestiwn, am ei fod ymhlyg o ffurflen
mathau yma, pa fath yma mewn gwirionedd yw, mae angen i ni fod yn eglur gyda Swift
am yr hyn yr ydym am ei ddychwelyd allan o'r swyddogaeth hon
felly pan mae'n perfformio teipio gwirio, gall wneud yn siwr
bod yr hyn rydym wedi ysgrifennu mewn gwirionedd i lawr isod mewn gwirionedd yn cydymffurfio at hynny.
Felly mae'n fath o fel siec gyda chi eich hun math o sefyllfa.
Ond mae yw--
>> GYNULLEIDFA: [Anghlywadwy] arrow?
>> DAN AMRMENDARIZ: Mae yna achosion pan gallwn nodi y gallwn yn ymhlyg
gosod y math dychwelyd.
Ond yn yr achos hwn, nid wyf yn ei wneud yn meddwl a fyddai'n gweithio.
Mae rhywfaint o gystrawen arall y byddwn yn gweld yn nes ymlaen.
>> Mae pob hawl, felly ffynhonnell hon cod yn ychydig yn wahanol
gan fod hyn yn parses dadleuon o y swyddogaeth yr ydym yn galw.
Gadewch i mi ddangos i chi sut mae'n gweithio cyn i ni mewn gwirionedd yn symud ymlaen
at rai pethau diddorol sy'n digwydd yn Swift.
>> Felly, yn yr achos hwn, os Fi jyst yn rhedeg hyn cod, yn sylwi bod yr hyn y mae'n ei wneud
tra yw--, mae'n fath o yn rhoi gwall rhyfedd i mi.
Mae angen i mi basio ychydig o gyfanrifau fel ymresymiad llinell orchymyn.
Felly, gadewch i ni weld, 150 a 80, ac yn taro Enter i gael gwybod beth mae'n ei wneud mewn gwirionedd.
Mae'n derbyn pob un o'r gwerthoedd hyn fel gyfanrifau.
Mae wedi eu mewnbynnu i mewn i llyfr graddau.
Ac yna mae'n perfformio y cyfrifiad ar gyfartaledd
a outputting bod fel y byddem yn ei ddisgwyl.
>> Ond yn amlwg mae rhywbeth yn mynd ymlaen gyda hyn wrthod rhywbeth
rhywbeth fel cyfanrif.
Fel y byddech yn cofio o'r pan oeddem delio gyda dadleuon llinell gorchymyn
yn C ac ieithoedd eraill, y cyntaf iawn 0-fed eitem yn y ymresymiad llinell orchymyn
rhestr yn enw'r gorchymyn ein bod yn ddienyddio mewn gwirionedd.
Felly, yn yr achos hwn, Im 'jyst yn dolennu dros yr holl ddadleuon llinell orchymyn.
Ond dydw i ddim yn gwneud unrhyw fath o ffansi gwirio i hepgor bod un cyntaf.
Im 'jyst yn benodol neu'n ymhlyg rwy'n gwirio pa un o'r mathau hyn
yn gyfanrifau cyn i mi mewn gwirionedd perfformio gyfrifiannu hwn.
>> A dyna yn y bôn yr hyn sy'n digwydd yma.
Ar gyfer pob dadl yn dadleuon y broses, gan
Rydw i'n mynd i berfformio rhai siec.
Ac yn yr achos hwn, dw i'n mynd i geisio troi cyntaf
y ddadl honno i mewn i cyfanrif gan perfformio typecast benodol,
oherwydd ei fod, ar fewnbwn, llinyn ac nid mewn gwirionedd yn gyfanrif.
>> Ond mae hyn yn fath o 'n annaearol cystrawen, os radd a gadewch hafal Int (dadl).
Beth sy'n digwydd mewn gwirionedd yma yn hynod o
bwysig i'ch ddefnyddio Swift.
Mae hyn yn defnyddio beth sydd Gelwir fath dewisol.
>> Felly y swyddogaeth hon, Int (dadl), nid dim ond yn dychwelyd cyfanrif, ond yn dychwelyd
hyn a elwir yn gyfanrif dewisol.
Ac felly mae hwn yn fath o math ar ben o fath.
Gallwch fath o ddychmygu ei hoffi mae'n dychwelyd fel pecyn.
A phan fyddwch yn agor y pecyn, mae'n naill ai
Mae yn gyfanrif, sef y canlyniad, neu mae wedi dim byd o gwbl ynddo o gwbl.
Ac mae hyn yn ddefnyddiol fel gwirio gwall mecanwaith, oherwydd yn yr achos hwn
gallwn ddod o hyd allan, roedd hyn Math trosi llwyddiannus?
Os oedd, yna mae'n mewn gwirionedd mynd i gael yn gyfanrif tu mewn.
Fel arall mae'n mynd i gael rhywfaint o gwerth y byddwn yn galw dim, a oedd yn
yn gynrychioliadol o ddim cyfanrif o gwbl.
Mae'n wirioneddol gynrychioliadol o ddim byd.
>> Ac felly hwn os adeiladu yn ein galluogi i unwrap y pecyn,
hynny ddewisol rhwymiad.
Ac os ydym yn gallu unwrap bod pecynnu a dod o hyd yn gyfanrif y tu mewn,
Yna, yr hyn yr ydym yn ei ddweud yma yw bod yna byddwn yn
caniatáu hynny werth i gael eu gosod i mewn gyson hwn a elwir gradd.
Ac mae rhan hon o'r datganiad os, y rhan uchaf y datganiad os
bydd yn rhedeg, gan fod y unwrap yn llwyddiannus.
>> Os bydd yn digwydd dim ond fel bod roedd gwall efallai
yn y trosi math penodol o llinyn i cyfanrif, efallai
'i' y ABC gwerth am enghraifft.
A dyna mewn gwirionedd ddim yn mynd i newid i cyfanrif.
Yna bydd yn dychwelyd dim, nad yn gyfanrif.
Ac mae hyn os y datganiad dda yna yn methu.
Gradd Ni fydd yn bodoli oherwydd nad oes ganddo unrhyw gynnwys cyfanrif.
A bydd yn rhedeg y bloc arall yn lle hynny.
Do?
>> GYNULLEIDFA: Dim yn N-I-L?
DAN AMRMENDARIZ: dim yw N-I-L, ie.
>> Felly mae hyn yn efallai un o'r pethau anoddaf am Swift,
yn enwedig pan fyddwch chi yn y chwyn ar an app iOS
ac yr ydych yn ceisio mewn gwirionedd i wneud rhywfaint o ddatblygiad yno.
Mae'n mynd i fod yn gweiddi ar chi am ddewisol.
Mae'n mynd i fod yn gofyn i chi am marciau cwestiwn a phwyntiau ebychnodau.
Ond ar ôl i chi chyfrif i out-- os ydych neilltuo peth amser i figuring
beth sy'n digwydd gyda mathau dewisol, byddwch yn arbed llawer o gur pen eich hun
fel yr ydych yn ceisio ysgrifennu app yn Swift.
>> Mae'n nodwedd pwerus iawn mewn gwirionedd.
A bydd yn rhaid i chi cymryd fy ngair i am hynny am y tro.
Ond byddwn yn gweld hyn adeiladu a rhai eraill yn ei hoffi
mewn rhai o'r cod ffynhonnell arall sy'n byddwn yn dangos i chi mewn dim ond ychydig.
>> A oes unrhyw gwestiynau cychwynnol yma?
Felly mae'r bwyd parod pwysig yw bod math dewisol yn fath o metatype.
Mae naill ai'n mae iddo werth, ac os felly, yna mae'n
Bydd yn rhaid bod gwerth cysylltiedig o bosibl ag ef, neu nad oes ganddo werth o gwbl,
ac mae'n cael ei gynrychioli gan ddim.
Mae gweddill y mae hyn yn bosibl fel y byddech yn ei ddisgwyl.
>> Felly gadewch i ramp i fyny i'r anhawster unwaith eto.
A'r tro hwn, gadewch i ni edrych ar rai mathau data eraill sy'n bodoli mewn gwirionedd.
Un ohonynt yw geiriaduron, sef debyg iawn i geiriaduron Python.
Mae'n braidd yn debyg i dabl hash mewn C. Yn y bôn, mapio allweddi
lle y gall fod yn llinynnau allweddi.
A phan fyddwch yn edrych i fyny allweddi hynny, Bydd allweddi y rhai â gwerth.
Felly nid yw'n hollol amrywiaeth, ond yn lle hynny, fwy cysylltiedig
i fap hash neu dabl hash.
>> Gadewch i ni weld sut mae hyn yn dybiedig i weithio cyn i ni mewn gwirionedd
mynd i mewn i'r cod ffynhonnell ei hun.
Os Fi jyst yn rhedeg hyn, dim byd mewn gwirionedd yn digwydd.
Mae'n dweud wrthyf fy mod i'n disgwyl rhai paramedrau o'r math canlynol.
Felly dw i'n mynd i roi i mae'n rhai enwau broblem a osodwyd,
felly pset0, efallai cefais 100.
Ac pset1, Ges i 5.
Ac yna ar yr arholiad, yr wyf yn gwneud yn dda iawn ac yn got 30.
Ac wps, yr wyf yn taro gofod yma.
>> Pan fyddaf yn taro Mewnbynnu, gallwch weld mae'n perfformio rhai cyfrifiant.
Mae'n dweud llyfr graddau yn dair graddau, pset1, pset0, arholiad.
Ac mae'r llyfr marciau wedi cyfartaledd penodol hwn.
Felly unwaith eto, rydym yn gweithio gyda hyn syniad llyfr graddau,
ond rydyn ni'n mynd i barhau i ailadrodd â chymhlethdod ein swyddogaeth.
>> Felly, ar y dechrau, rydym yn unig mynd i greu swyddogaeth sy'n
yn gyfrifol am argraffu'r defnydd.
Ac mae allanfa hon swyddogaeth a fydd yn unig
rymus rhoi'r gorau iddi y cais.
Nid yw hyn yn rhywbeth y byddwch yn eu defnyddio yn iOS app.
Nid yw hyn ond, yn yr achos hwn, gyda ymresymiad llinell orchymyn.
Nesaf byddwn yn dechrau symud tuag at Xcode.
Ond mae hyn yn benodol i gorchymyn rhaglen arddull llinell yn Swift.
>> Gadewch i ni edrych ar rai o'r y pethau diddorol yma.
Gadewch i ni weld, dim ond un neu ddau o bethau diddorol sôn efallai
yw hynny yn fy swyddogaeth argraffu nifer y graddau,
efallai y byddwch yn cofio fy mod wedi bod rhestr o pset1 items--, pset0, ac arholiad.
Gallwch mewn gwirionedd yn gyflym ac yn hawdd gwneud hyn
drwy gymryd y llyfr graddau, sydd yn Geiriadur sydd â allweddi a gwerthoedd.
Dod o hyd i bob un o'r allweddol yw drwy y dull allweddi dot yma,
ac yna defnyddio'r joinWithSeparator hwn, fydd wedyn yn cymryd pob un o'r allweddi
ein bod wedi teipio i mewn, pset1-- neu ddrwg gennym, pset0, pset1, a exam--
ac yn concatenate nhw at ei gilydd gan ddefnyddio coma a gofod
i greu un llinyn hir.
Mae'r llawdriniaeth yn ymuno yn unig hynod ddefnyddiol mewn amrywiaeth o gyd-destunau.
Ac felly mae'n joinWithSeparator hwn.
>> Ac mae hyn yn un peth sy'n newid o Swift 1 i Swift 2.
Arferai fod yn Style-- Python os ydych chi'n
gyfarwydd â Python-- yn Python arddull ymuno â dull ar dannau.
Ond bellach mae hynny'n yr achos yn Swift 2.
Y byddwch am ddefnyddio hwn os ydych am i concatenate amrywiaeth o bethau
ynghyd â llinyn.
>> Felly efallai wedyn yn ein trafodaeth ar gyfartaledd o'r blaen,
mae'n gwneud ychydig bach mwy o synnwyr i ni osod swyddogaeth ar gyfartaledd
i fod yn ddewisol yn hytrach dwbl na dim ond dwbl penodol.
Oherwydd roedd ein bod cyflwr anarferol lle,
beth os llyfr marciau mewn gwirionedd Nid oes werthoedd ynddo?
Beth ddylai'r enillion cyfartalog?
>> Wel efallai yn C i chi Byddai wedi gwneud rhywbeth
fel darparu gwerth sentinel, fel 0.0, neu efallai rhif negatif,
neu rywbeth yn unig cynrychioli'r ffaith fod rhywfaint o gyflwr wall
ac rydych efallai nad ydynt mewn gwirionedd yn cael y gallu i gyfrifo cyfartaledd hwnnw.
Wel harddwch sy'n pennu byddai'r math dewisol fydd gwneud hynny.
A dwi'n bellach yn dweud yr holl eiriau hyn, ond mae hyn mewn gwirionedd yn defnyddio optionals.
Ond byddwn yn gweld hynny mewn dim ond cofnodion lle y gallwn osod ar gyfartaledd
i fod yn fath o ddata dewisol fel bod os yw'n mewn gwirionedd yn dychwelyd rhywfaint o ddata, yna
byddwn yn dychwelyd data hwnnw.
Fel arall, byddwn yn dychwelyd nil, gan ddweud bod hyn yn
Nid oes cyfrifiant ystyrlon.
>> Gadewch i ni symud ymlaen i rywbeth arall.
Felly oddi yma, rydym wedi bod yn edrych ar yr holl enghreifftiau hyn yn y llinell orchymyn.
Ond mewn gwirionedd yr hyn yr ydych chi'n mynd i fod yn delio â yw Xcode.
Ac un o'r pethau neis am Xcode yw, ac yn benodol yn Swift,
yw bod gennym hon beth a elwir yn Cae Chwarae.
Ac mae Maes Chwarae yn ddim o gwbl app iOS.
Ond mae'n eich galluogi i arbrofi gyda Swift mewn ffordd hawdd iawn.
Gallwch deipio eich holl cod.
Mae'n 'n glws gystrawen hamlygu yma.
Pan fyddwch yn creu ffeil newydd, bydd yn gofyn chi os ydych am i greu Iard Chwarae.
Ond y peth braf am y Cae Chwarae yw bod ar yr ochr dde eich ffenestr,
mae'n mewn gwirionedd yn dangos i chi allbwn eich cod.
Felly, os wyf yn sgroliwch i lawr, gallwn weld beth allbwn gwahanol linellau o god
mewn gwirionedd yn digwydd bod.
>> Felly, yn yr achos hwn, rydym yn mynd i newid cyfeiriad ychydig bach
a siarad am rywbeth sy'n wirioneddol bwysig i'r ffordd hon lefel uchel
bod Swift yn gweithredu, ac mae'n yw y syniad hwn o gau.
Ac mae'n debyg eich bod wedi gweld hyn ychydig yn JavaScript.
I'r rhai ohonoch nad yn CS50, cau
yn boblogaidd iawn ffordd, yn dda iawn o wneud pethau ar lefel uchel mewn ieithoedd modern.
Ond mae hefyd yn fath o anodd i lapio eich pen o gwmpas y tro cyntaf.
Felly, os ydych yn edrych ar hyn tro cyntaf, mae hynny'n iawn.
Dim ond yn edrych ar y cod ffynhonnell a gweld os gallwch chyfrif 'ii maes yn y cartref.
>> Felly, yn yr achos hwn, gadewch i ni ddweud ein bod yn am greu llawer o ddehonglwyr
gyda rhywfaint o werth sefydlog.
Felly, yn yr achos hwn y gallaf greu swyddogaeth.
Rydw i'n mynd i alw grym 2 a'i unig bwrpas mewn bywyd
yw cymryd rhywfaint o gyfraniad a dwbl iddo, ac yn dychwelyd y gwerth.
Sylwch fod dyma fi gan dderbyn un math o ddata.
Mae'n mynd i fod yn newidyn a elwir yn x.
Mae'n y math dwbl.
Ac yr wyf i'n mynd i ddychwelyd Dwbl yma.
Ac Im 'jyst yn mynd i wneud yn iawn, a dweud y gwir, 'n bert
ffordd naïf o ddyblu gwerth hwn.
A byddaf yn dangos i chi pam mae hyn yn ddefnyddiol mewn dim ond eiliad.
>> Hysbysiad bod yma mae gennym ystod hon eto. am rywbeth yn 1, dot
dot dot, 2, sy'n golygu y Bydd dolen hwn yn rhedeg ddwywaith.
Ond mae hyn yn cynrychioli newidyn ffug.
Mae'n golygu Dydw i ddim wir yn mynd i yn defnyddio y newidyn yn unrhyw le
tu mewn dolen hwn.
Fi jyst eisiau y llinell hon o god i redeg ddwywaith,
heb fod angen i wybod gwerth yr amrediad.
>> Felly, yn yr achos hwn rwy'n rhedeg canlyniad Amseroedd x ddwywaith, sydd yn eu hanfod
yn golygu fy mod yn sgwario gwerth hwn.
Ac mae hyn yn digwydd i gweithio fel y byddem yn ei ddisgwyl.
Pŵer 2, gan fynd heibio gwerth o 2.0 yn rhoi allbwn o 4 ni.
3.2 weithiau ar gyfer 10.24.
>> Nawr gallwn wneud tebyg beth am rym o 3.
Ond yn awr yn newid dim ond yr ystod.
Ar gyfer newidyn ffug mewn 1 trwy 3, lluosi 3 gwaith,
ac yn gwneud yr un peth.
>> Felly, gallai hyn deimlo ychydig ddyfeisgar.
Ond mae 'na pwysig beth yma sy'n
yw bod edrych ar y rhain ddwy swyddogaeth, mae '
ond un peth sy'n wahanol, sydd yn y gwerth hwn yn yr ystod.
Popeth arall am y ddau yma swyddogaethau, pŵer 3 a phŵer o 2,
, mewn gwirionedd, yn union oherwydd bod maent yn gweithio yn yr un ffordd.
>> Felly, yn y fan hon, ychydig Dylid cloch larwm yn mynd i ffwrdd.
Gobeithio yr hyn yr ydych yn ei ddweud, eich bod yn gwybod, mae hyn yn teimlo ychydig bach
fel dyblygu ymdrech.
Efallai mae ffordd sy'n Hoffwn yn gallu crynhoi hyn oll
ac yn darparu swyddogaeth neu greu swyddogaeth sy'n
gwneud yn union yr hyn yr wyf eisiau heb angen ei deipio allan benodol.
Ac mae hyn yn beth y pŵer am gau yn caniatáu i ni ei wneud.
Felly, gadewch i ni edrych ar hyn.
A byddaf yn treulio cwpl cofnodion ar hyn, gan fod hyn
yn eithaf pwysig ar gyfer Swift.
Rydym yn gweld hyn drwy'r amser.
Rydym yn mynd i ddiffinio swyddogaeth.
Mae'n mynd i gael ei alw powerOf.
Mae'n mynd i dderbyn paramedr a elwir yn y o'r fath Int.
Ond yn edrych ar y math dychwelyd.
Mae'r math dychwelyd yw, mewn cromfachau, Dwbl saeth dwbl.
Sy'n golygu bod y swyddogaeth hon, powerOf swyddogaeth hon,
yn dychwelyd swyddogaeth.
Mae hynny'n derbyn Dwbl a dychwelyd Dwbl.
Felly allai swnio'n fath o crazy, ond gadewch i sgrolio i lawr ychydig bach
ac yn edrych i weld beth sy'n digwydd.
Rydym yn tu mewn hon powerOf swyddogaeth.
Rydym yn creu swyddogaeth newydd Gelwir exponentiator,
ond does dim ots beth yw.
>> Sylwch fod hyn yn cael gwerth mewnbwn x.
Ac mae'n cymryd mewn Dwbl a dychwelyd Dwbl.
Ac mae hyn yn un cod yr ydym Gwelodd uchod, ac eithrio bod y gwerth o 2
neu werth 3, bod uchaf rhwymo yn yr ystod,
wedi cael ei ddisodli gyda y gwerth hwn o y, a oedd
oedd y paramedr cyntaf o'n swyddogaeth powerOf.
Ac ar hyn o bryd, rydym yn dychwelyd exponentiator.
Rydym yn dychwelyd y swyddogaeth.
>> Mae'n fath o fel ychydig o chwythu meddwl.
Ond gadewch i ni ddychmygu beth sy'n digwydd pan fydda i'n galw swyddogaeth hon powerOf
a phasio i mewn iddo ryw werth fel 2.
Mae hyn yn golygu bod Yr wyf yn awr yn cael y gwerth
2 ar gyfer y, sy'n golygu y gwerth hwn y yn swyddogaeth exponentiator hon
Bydd y gwerth 2.
Ond dw i'n dychwelyd hwn swyddogaeth exponentiator.
>> Felly sylwi ar yr hyn Swift yn dweud fy wedi creu yn yr achos hwn.
gadewch sgwâr yn diffiniad, mae'n swyddogaeth sy'n yn derbyn Dwbl
ac yn dychwelyd Dwbl.
Rwyf wedi creu swyddogaeth bod sgwariau rhywbeth
defnyddio'r mecanwaith hwn yn iawn yma.
Ac yn wir yn yr hyn sy'n digwydd yn ei fod yn dychwelyd swyddogaeth hon
exponentiator, ond mae gwerth hwn y ei lapio tu mewn iddo.
Ac felly yn awr bob tro rwy'n defnyddio hyn amrywiol neu gyson o'r enw
sgwâr, mae'n ei fod yn mynd i ymddwyn fel swyddogaeth.
Ac fel y gallaf wedyn alw y newidyn fel y byddwn yn galw swyddogaeth,
a phasio i mewn iddo rhif, fel yn yr achos hwn 3.
A byddaf wedyn yn sgwâr y gwerth hwn.
Felly 3 sgwâr fydd wedyn yn dod yn 9, fel y gwelwn yma.
>> Really crazy, ond mae hyn bellach yn rhoi'r cyfle i mi
i greu swyddogaethau powerOf eraill.
Fel y gallaf ei ddweud, OK, wel nawr rwyf eisiau i greu swyddogaeth newydd, powerOf (3),
ac yn ei storio hynny i mewn i Gelwir ciwb gyson.
Ac yn awr ciwb yn mynd i fod yn swyddogaeth ar wahân a fydd wedyn yn
cymryd rhywfaint o werth fel mewnbwn a ciwb sydd gwerth fel y gallwn weld yn y llinell isaf
yma.
ciwb o 2 yn mynd i arwain at 8.
>> Stwff Gobeithio eithaf taclus.
Nad ydych erioed wedi gweld hyn o'r blaen.
Yr wyf yn eich annog i edrych i mewn i gau ac ymchwilio i hyn ychydig yn fwy.
Mae'n stwff 'n sylweddol bwerus rydym yn gweld llawer yn JavaScript a rhai ieithoedd eraill.
Mae'n wirioneddol hanfodol deall APIs yn ogystal
y byddwn yn mynd i mewn dim ond eiliad.
Do?
>> GYNULLEIDFA: Pan fyddwch yn ei wneud powerOf (2), cromfachau, ac yna
parenthesis arall, input-- arall eich bod yn y bôn yn lle'r sgwâr.
DAN AMRMENDARIZ: Felly edrych ar y llinell olaf un yma.
Mae'n mewn gwirionedd yn gwbl bosibl i gwneud hynny gadwyno fel yr awgrymasoch.
Felly powerOf (5) yn golygu ein bod yn mynd i gael exponentiator o 5 i fyny fan hyn.
Felly, mae hyn yn ei hanfod yn mynd i fod y un peth â 4 i'r pumed rym,
oherwydd ein bod wedi creu exponentiating gweithredu i'r pumed pŵer,
ac rydym yn pasio i mewn sy'n gweithredu gwerth 4.
Ac rydym yn cael y gwerth ein bod yn disgwyl, 1024.
GYNULLEIDFA: Ac nid ei fod yn enw, felly mae'n gwneud yn haws
i ddarllen, y sgwâr beth bynnag.
>> DAN AMRMENDARIZ: Iawn, yn union.
Felly, cyn i mi jyst roi i mewn i gyson yma fel
ei fod yn ei gwneud yn hawdd i'w defnyddio enw hwnnw.
Do?
>> GYNULLEIDFA: Yn y cyd-destun hwn powerOf, mae'n rhan
o'r iaith raglennu yn hytrach na'r ffordd yr ydych
meddwl am powerOf yn [Anghlywadwy]?
DAN AMRMENDARIZ: Felly yn yr achos hwn, powerOf
yn syml, enw'r swyddogaeth yr wyf ddiffinnir fyny fan hyn.
Felly nid yw'n gynhenid i'r iaith ei hun,
ond yn hytrach, 'i' jyst swyddogaeth sydd
bod enw gan fy mod yn rhoi enw hwnnw.
Unrhyw gwestiynau eraill?
Iawn.
>> Yn awr mae hyn yn wych.
Ond nid ydych yn mynd i weld llawer o swyddogaethau cau y
yn debyg i hyn lle rydych yn diffinio, y tu mewn o un swyddogaeth, swyddogaeth arall.
A allwch chi wneud hynny.
Ond mae'n fath o beidio 'n sylweddol angen, dde?
Fel pam ydw i'n diffinio hyn swyddogaeth a elwir yn exponentiator
ac yna dychwelyd ar unwaith.
Ni all Pam Fi jyst yn syth dychwelyd swyddogaeth hon?
>> Ac yn wir, mae hyn yn union y syniad y tu ôl i gysyniad o'r enw
swyddogaethau dienw, lle Nid yw swyddogaethau dienw yn ei wneud mewn gwirionedd
gael enw am eu bod yn Nid oes angen i gael un.
Ac felly yn yr achos hwn, yn 7B, gallwn ddod o hyd yn union hynny.
Mae hyn i gyd yr un cod, gwneud yn union yr un peth,
ond erbyn hyn rydym wedi ei newid ychydig er swyddogaeth honno powerOf hon ar unwaith
yn dychwelyd swyddogaeth.
Sylwch bod ar ôl dychwelyd, mae 'na braced cyrliog agored.
Mae'n disgwyl cyfraniad hwn Dwbl.
Mae'n disgwyl y cynnyrch dwbl.
Ac yna y mewn allweddair gwahanu'r cod ei hun.
Felly, mae hyn yn swyddogaeth ddienw.
Nid oes mewn gwirionedd yn cael enw, tra cyn iddo gael ei alw exponentiator.
Ond fel y gwelsom, jyst 'n sylweddol Nid oedd yn cyfeirio at exponentiator
y tu allan i swyddogaeth honno.
Felly nid oedd ots.
Felly, mae hyn swyddogaeth dienw yn hyn a elwir gan ei fod yn ddienw,
ond mae'n dal i gael ei defnyddio yng nghyd-destun y cod hwn.
>> Y rhai ddwy nesaf rwy'n mynd i barhau, gobeithio,
chwythu eich meddwl ychydig.
Gallwn symleiddio'r hyn hyd yn oed yn fwy.
Oherwydd fel yr oedd yn astud nodwyd yn gynharach,
efallai ein bod mewn gwirionedd yn gwybod, gan casglu bod o'r cod hwn, beth
allbwn y cod hwn yn mynd i fod.
Ac yn wir, yn y swyddogaeth ddienw, gallwn mewn gwirionedd yn awgrymu y mathau o ddata.
>> Felly, yn yr un yma, rydym bellach yn Mae angen rhoi diffiniad penodol o
y math o ddata sy'n cael ei mewnbwn ac allbwn o'r swyddogaeth hon
am ychydig o resymau.
Un yw ein bod ni wedi diffinio, i fyny yn y prototeip o'r swyddogaeth amgáu,
pa fath o ddata dienw hwn Dylai swyddogaeth mewnbwn ac allbwn.
Ac oddi wrth y llall, yr ydym Gellir casglu oddi wrth y cod
lawr yma yr ydym yn derbyn mewnbwn sydd o fath Double
a dychwelyd Dwbl.
>> Sylwch fod yma nid ydym wedi benodol diffiniedig enwau'r dadleuon
bod y swyddogaeth hon yn cael ei derbyn.
Ac felly rydym yn gweld y gallwn gyfeirio at paramedrau hynny sy'n defnyddio $ 0, $ 1,
yn y blaen ac yn y blaen, yn dibynnu ar y nifer o y paramedr a ddefnyddir
yn y swyddogaeth hon.
>> Mae hyn yn rhywbeth yr ydych yn mynd gweld llawer yn y band cyrliog agored
diffiniad ddilyn gan $ 0, ac yna mae rhai llawdriniaeth,
ac yna braced cyrliog caeedig.
Mae hynny yn swyddogaeth anhysbys sy'n perfformio y llawdriniaeth hon.
Mae ganddo paramedr hwn lle 'i' math cael ei awgrymu yn.
Dyna paramedr cyntaf yw $ yn 0.
Ac mae rhai llawdriniaeth yn yn digwydd ar y $ yn 0.
>> GYNULLEIDFA: Felly yr arwydd doler golygu paramedr yn y bôn,
a 0 yn golygu yr un cyntaf?
DAN ARMENDARIZ: Mae hynny'n gywir.
Felly mae'r arwydd doler yn y bôn yn golygu paramedr, a 0 yn golygu yr un cyntaf.
Ond mae'n gweithio yn benodol yn yr achos hwn lle nad wyf wedi enwi
y dadleuon yn fy swyddogaeth ddienw.
>> GYNULLEIDFA: A yw Perl neu rywbeth gael arwydd doler hwn, doler 0 i mewn 'na?
DAN ARMENDARIZ: A oes sydd, mae'n ddrwg gen i?
GYNULLEIDFA: A oes gan Perl gael doler hwn 0, doler 1--
DAN ARMENDARIZ: Dydw i ddim yn yn rhy gyfarwydd â Perl,
ond PHP hyn sy'n diffinio newidynnau yn seiliedig ar arwyddion ddoler.
Ac efallai y bydd rhai ieithoedd sydd â nodweddion fel hyn.
Yn wir, Swift benthyg yn llawer o nodweddion fel hyn
o lawer o ieithoedd eraill.
Rydym yn gweld awgrym o Python ynddo.
Mae'r diffiniad hwn o fath ymddangos i ddod o OCaml.
Ac rydym wedi dim ond criw cyfan o pethau o lawer o wahanol ieithoedd.
Dyna un o'r 'n glws pethau am Swift
yw ei fod yn cymryd llawer o'r gorau syniadau o griw o ieithoedd
ac yn shoehorns nhw i gyd at ei gilydd i mewn i un iaith super.
Yn wir, os ydych yn caniatáu i mi parhau i chwythu eich meddwl,
felly rydym wedi bod yn gwneud hyn i gyd.
Efallai y gallwn symleiddio'r hyn ychydig yn bit trwy sylweddoli hynny, wrth gwrs,
Swift Mae gan exponentiating swyddogaeth a adeiladwyd yn.
Os byddaf yn mewnforio Darwin, a oedd yn yn unig yw llyfrgell sydd
Nodweddion swyddogaeth gelwir hyn pow, yn awr Gallaf symleiddio fy pŵer swyddogaeth
i fod y canlynol.
Mae'n mynd i fod yn dychwelyd swyddogaeth dienw hwn.
>> Ond edrych ar sut syml hwn bellach.
Mae hyn yn swyddogaeth anhysbys sy'n yn derbyn rhyw fath o ddata,
ac mae'n mynd i fod yn un dadl yn benodol,
cyfeiriwyd at $ 0 sydd o fath Dwbl.
Mae'n mynd i ddychwelyd math dwbl.
Ond mae'r datganiad yn dychwelyd yn awr yn ymhlyg.
>> Ac mae'n union y dull hwn fod yn iawn, yn gyffredin iawn yn Swift,
i gyd dros y lle.
Rydym yn mynd i weld hon drwy'r amser yn Swift.
Felly dw i'n dangos hyn oll i chi oherwydd cystrawen hwn.
Mae hyn yn gyffredin iawn i weld, sy'n golygu ei fod
yn swyddogaeth anhysbys sy'n cael ei perfformio
rhywfaint weithredol ar y dadleuon hyn.
Ac mae ffurflen ymhlyg.
Felly mae'n hollol yr un peth i ni i ddweud hyn, dde yma.
>> Gan fod cyrliog hwn braced yn swyddogaeth,
rydym yn perfformio llawdriniaeth hon ar y ddadl gyntaf.
Rydym yn mynd i ddychwelyd hynny.
Ond dychwelyd allanol hyn yn dychwelyd y ffwythiant cyfan,
swyddogaeth honno dienw cyfan ein bod wedi creu unig.
Unrhyw gwestiynau eraill?
Mae pob hawl, nid wyf yn gwybod os rydych guys yn barod ar gyfer hyn,
ond gallwn fynd hyd yn oed crazier gyda Swift.
Rydych yn barod?
OK, mae hyn yn wych.
>> Nawr rydym mewn gwirionedd yn meddu ar y gallu i, yn Swift, oherwydd y ffordd modiwlaidd
a sut yn seiliedig protocol y mae, i diffinio ein gweithredwyr freaking hunain.
Fel yn yr achos hwn, rydym yn cael unrhyw gweithredwr i exponentiation-- yn dda,
ar gyfer pwerau o rywbeth perfformio.
Ond gallaf, yn Swift, diffinio newydd gweithredwr sy'n gwneud yn union hynny.
Felly, yn yr achos hwn mae ' criw o gystrawen yma.
A byddaf yn caniatáu i chi edrych arno gartref pan fyddwch yn edrych ar hyn.
Ond rydym yn diffinio infix hwn gweithredydd, **, a fydd wedyn yn caniatáu i ni,
trwy ddiffinio beth mae hynny'n ei swyddogaeth ** mewn gwirionedd
mae, i dderbyn llaw chwith ochr a ochr dde,
ac yna dychwelyd y ddehonglwr o hynny ochr chwith ar yr ochr dde.
>> Ac felly erbyn hyn i gyd o fy mod sydyn wedi creu rhifiadur newydd.
Felly 2 ** 3 yn golygu 2 i'r trydydd pŵer.
[MIND SAIN RHYBUDD] Mae'r trwy Dylai ei hun yn gwneud i chi fod yn debyg,
OK, sgriw C. Rydw i'n mynd Swift y ffordd i gyd.
Mae hyn yn wych.
Mae hyn yn eithaf anhygoel.
>> Er bod hyn yn enghraifft wych.
Ond yr wyf byth yn cael unwaith y tu allan yr enghraifft hon mewn gwirionedd
diffinnir fy gweithredwr hun.
Ond o hyd, mae'n dangos llawer o rym Swift
a pham mae hyn yn mewn gwirionedd 'n sylweddol oera iawn.
OK, ie?
GYNULLEIDFA: Os ydych yn ddiffinio eich gweithredwr hun,
sut ydych chi'n gwybod nad ydych yn ddamweiniol ceisio creu gweithredydd sy'n
yn rhywle yn C, fel cuddio rhywle yn Swift,
fel un aneglur yr ydych Efallai nad ydynt wedi eu gweld o'r blaen.
>> DAN ARMENDARIZ: Felly, os ydych yn ceisio i ddiffinio eich hun gweithredwyr,
ceir y risg o ddiffinio un dros gweithredydd sy'n bodoli eisoes.
Sy'n mynd i mewn lefel o fanylder sy'n Nid wyf yn credu ein bod yn cael amser i fynd dros.
Ond mae hynny'n risg.
A dyna yn wir yr union reswm pam Doeddwn i ddim yn defnyddio'r symbol caret, a oedd yn
pan fyddwn ni'n teipio allan pŵer, byddwn fel arfer defnyddiwch 4 ychydig caret 5 neu rywbeth
fel 'na, dim ond pan rydym yn Gchatting cyfeillion neu beth bynnag.
Ond yn yr achos hwnnw, sydd mewn gwirionedd yn byddai wedi achosi gwrthdrawiad.
Ac felly yr wyf yn osgoi iddo dim ond oherwydd Yr wyf yn digwydd i wybod yn yr achos hwn
y byddai hynny'n peri bod gwrthdrawiad.
>> Iawn.
Nawr yn anffodus, ar gyfer y saith munud olaf,
Rhaid i mi gadw chwiban eich meddyliau ychydig.
Felly caniatáu i mi i ddangos i chi rhai pethau eraill hefyd.
>> Rydym wedi dangos i chi y syniad hwn o cael swyddogaethau dienw hyn,
cau hyn, sy'n eich caniatáu i math o pasio swyddogaethau o gwmpas.
Gallwch eu dychwelyd.
Gallwch eu trin.
Gallwch wneud pob math o bethau crazy.
>> Ond mae un peth arall sy'n digwydd bod yn ddefnyddiol
yw y gallu i, yn hytrach na i ddychwelyd swyddogaethau hynny
mewn swyddogaeth, i basio swyddogaeth fel baramedr i swyddogaeth arall.
Efallai eich bod yn meddwl yn dda pam ar y Ddaear fyddwn am wneud rhywbeth fel 'na?
>> Wel, gadewch i ni yn dweud fy mod eisiau i gymryd gweithredwr hwn yr wyf
gweithio mor galed i greu a chymhwyso i griw o wahanol rifau
mewn amrywiaeth.
Felly, yn yr achos hwn mae gen i amrywiaeth o integers-- 1, 4, 7, 2, 5, 10, 56.
Ac yr wyf am i ddyblu nhw i gyd.
Mae'r modd y byddem fel arfer yn ei wneud ydy at jyst ysgrifennu
yn syml ar gyfer dolen sy'n ailadrodd dros bob un ohonynt
a pherfformio rhyw fath o gweithrediad sgwâr drostynt,
mewnbynnu gwerthoedd newydd hynny i mewn i newydd newidiol, neu yn hytrach, amrywiaeth newydd yma.
A gwerth allbwn canlyniad yw Yna holl araeau hynny,
neu yn hytrach phawb elfennau bellach sgwâr.
>> A gallem wneud yr un peth beth am cubing hynny,
ond ychydig cloch larwm Dylai fod yn mynd i ffwrdd
gan ddweud bod efallai mae rhyw ffordd y byddem
yn gallu symleiddio hyn ychydig.
Ac yn wir, mae yna.
Beth pe gallem greu swyddogaeth sy'n caniatáu i ni
i dderbyn, fel ysglyfaethwr, swyddogaeth?
Felly, yn yr achos hwn, yn cymryd edrych ar y dadleuon hyn.
Rydym yn mynd i dderbyn rhestr o dyblau.
Ac yna rydym yn mynd i dderbyn swyddogaeth
mewn newidyn a elwir f sy'n mynd i gymryd Dwbl a dychwelyd Dwbl.
Ac mae'r allbwn cyfan o hyn swyddogaeth cyfan
Gelwir mapper yn mynd i dychwelyd arae o'r enw dwbl.
>> Beth fyddai hyn wedyn yn caniatáu i mi wneud yw ailadrodd dros y rhestr honno
ac yn gwneud yr un peth, ond erbyn hyn cymhwyso swyddogaeth honno ar bob
o'r gwerthoedd unigol yn y rhestr honno.
Felly, nid wyf ddim yn gwybod pa f yw.
Nid yw o bwys i mi.
Ond cyn belled ag y mae'n ei gymryd mewn Dwbl, perfformio rhywfaint llawdriniaeth arno,
ac yna yn dychwelyd Dwbl, byddwn wedyn yn
gallu i fapio swyddogaeth honno ar draws pob elfen unigol yn y rhestr.
>> A'r math yma o raglenni yn Gelwir swyddogaethau uwch,
lle'r ydym yn pasio swyddogaethau o gwmpas fel paramedrau
a gwneud pethau gyda swyddogaethau.
Mae'n fath o fel cymryd pob un o'r rhain syniadau yr ydym wedi dysgu yn CS50
ac yn mynd â nhw didoli o i'r lefel nesaf.
Ac mae hyn i gyd yn bethau arddull CS51.
Ac felly byddwn yn mynd yn fanwl mwy mewn dosbarthiadau fel 'na.
>> Ond mae hyn yn hefyd pwysig yma oherwydd ein bod
gweld llawer o swyddogaethau sy'n cael eu defnyddio mewn Swift
hynny ei hanfod yn gwneud hyn, lle mae gennym
rhai rhifau, rhyw amrywiaeth o rifau.
Rydym yn mynd i basio hynny amrywiaeth yn ein mapper.
Ac rydym hefyd yn mynd i pasio rhywfaint o swyddogaeth, a oedd yn
rydym eisoes wedi diffinio'n fyny fan hyn.
Mae'n mynd i fod yn sgwâr.
Ac rydym yn mynd i hynny sgwâr pob un o'r niferoedd hynny
ac yn ei storio mewn i hynny y canlyniad hwn yma.
>> Felly, yr achos hwn rydym wedi diffinio'n ein swyddogaeth ei hun o'r enw mapper.
Ond mae hyn yn union beth yw, mewn gwirionedd, a adeiladwyd i mewn i Swift.
Mae amrywiaeth o swyddogaethau a elwir map.
Mae 'na swyddogaeth map, mae 'na lleihau swyddogaeth,
ac mae 'na swyddogaeth hidlo, sydd yn eu hanfod yn gymwys swyddogaethau
at bob elfen sengl mewn rhestru i addasu nhw mewn rhyw ffordd.
>> GYNULLEIDFA: Felly ers i chi yn trawsnewid mae'r data i fformat arall
drwy function--
DAN ARMENDARIZ: Iawn.
Yeah, felly mae'r swyddogaeth ein bod yn derbyn
yn trawsnewid y data mewn rhyw ffordd.
Yn yr achos hwn, roeddem yn naill ai sgwario, neu yr oeddem yn ei cubing,
neu yn wir, gallem perfformio dim llawdriniaeth arno o gwbl.
>> Ond gadewch i mi ddangos i chi wedyn sut mae hyn yn yn mynd i edrych yn ymarferol.
Ac eto, yr wyf i'n rhedeg dipyn o amser. felly dydw i ddim
mynd i fod yn gallu mynd dros yr holl o'r cod ffynhonnell yma yn fanwl.
Ond yr wyf yn eich annog i wneud hynny.
Byddwn yn ei bostio cyn gynted ag y phosibl ar ôl y sgwrs yma.
>> Ond os ydych yn edrych ar hyn, gymryd yn ganiataol bod gennym restr o rifau,
amrywiaeth o rifau yn hyn newidyn a elwir yn rhifau.
Yna, rydym yn awyddus i berfformio hyn gweithredu hidlydd ar y niferoedd hynny.
Felly hidlo yn uwch swyddogaeth fel y
yn derbyn arae ac hefyd swyddogaeth.
Ac ar bob elfen yn y array, mae'n perfformio swyddogaeth honno.
>> Os yw hynny'n dychwelyd ffwythiant yn wir, mae'n cadw yr eitem honno.
Os yw hynny'n dychwelyd ffug, mae'n taflu yr eitem honno.
Ac yna mae'n dychwelyd rhestr hynny wedyn yn cynnwys yr holl
o'r eitemau hynny sydd wedi cael eu hidlo.
>> Felly, mewn geiriau arall, mae hyn yn yr un syniad, mae'r llyfr graddau.
Efallai y byddwn yn cael amrywiaeth o raddau i mewn i werth gelwir hyn rhifau.
A allai fod yn 100, a 70, a 40, yn y blaen ac yn y blaen.
Pa hidlydd hwn yn ei wneud yw rhybudd mai hyn yw bod siwgr cystrawennol
am swyddogaeth ddienw.
Mae hyn yn swyddogaeth anhysbys dweud bod y paramedr fy mod i'n derbyn
yn mynd i fod, os bydd yn yn fwy na 70,
yna bydd hyn yn dychwelyd yn wir, sy'n golygu bod Bydd yr eitem yn cael ei gadw yn hidlo hwn.
Felly gadewch i ni fod ychydig mwy pendant am hyn.
Os oes gen i amrywiaeth hon o rifau ac mae'n cynnwys 100, 70, a 40,
Yr wyf yn perfformio hidlen yma gweithredu ar bob un o'r rheiny.
Fel bod un cyntaf yw gwerth hwn o 100.
100 fwy na neu'n hafal i 70 yn wir, a oedd yn
yn golygu bod 100 yn cael ei gadw mewn y copi newydd o'r amrywiaeth hon.
70 hefyd yn mynd heibio.
Ond nid 40 yn gwneud hynny.
Felly beth cael ei ddychwelyd yn passingCount yn yr amrywiaeth o elfennau 100 a 70--
100, coma, 70.
Y rhai oedd yr unig ddau eitemau sydd yn cael eu cadw.
Ac felly y rheswm yr wyf yn gyflym yn mynd trwy llawer o'r math yma o safon uchel
mae pethau oherwydd hyn yw bod yn gyffredin beth y byddwch yn ei weld yn Swift 'n bert
yn aml, yn perfformio rhywfaint o weithredu yn arfer hon chystrawen ffwythiant dienw.
>> Mae rhai pethau oeri.
Switshis yn wirioneddol pwerus yn Swift, Yr wyf yn golygu yn union fel gwallgof, pwerus crazy.
Gallwch ddefnyddio switsh, a gallwch wneud cais iddynt mewn gwirionedd
i ystodau, sydd yn fath o crazy, ac yn gwneud pethau ffansi fel 'na.
>> Ond yn yr ychydig funudau diwethaf, Rwyf am hepgor y blaen yn eithaf pell
ac yn dangos i chi enghraifft benodol o'r modd y gallwn greu yn iOS app gan ddefnyddio Swift.
Felly, pan fyddwch yn ei wneud hyn, bydd yn rhaid i chi gymryd
a edrych at-- ar Afalau ' dogfennaeth, maent yn
yn cael llawer o sesiynau tiwtorial da iawn ar gyfer creu eich cais cyntaf.
Ac yr wyf yn eich annog i wneud hynny am eu bod yn mynd â chi
trwy'r holl gamau o beth yn union i cliciwch ar i greu cais iOS.
>> Ond dyma ni wedi hyn iOS app.
Ac mae'n app eithaf syml mewn gwirionedd.
Os byddaf yn rhedeg hyn, gadewch i mi ddangos chi sut mae'n edrych.
Y cyfan y mae'n ei hanfod wneud yw ei tynnu oddi ar y rhyngrwyd ffeil JSON
fy mod wedi eu storio ar weinydd.
Ac mae hynny'n ffeil JSON yn diffinio delweddau sy'n caniatáu
mi wedyn beicio drwy, ar fy app, delweddau o fy weinydd y we.
>> Felly, yr wyf wedi yma getNextImage.
Mae'n llwythi delwedd o'r rhyngrwyd, ac yna yn dangos ar y sgrin.
>> Felly mae'n eithaf syml.
Ond y nod yma yw dangos chi sut y gallwn gyfuno pethau
gan yr ychydig wythnosau olaf CS50 i mewn i gais iOS gwirioneddol.
Mewn geiriau eraill, efallai mai un o'r pethau y byddwch am ei wneud
yw cael gais iOS sy'n Gall dynnu data oddi ar y rhyngrwyd
ac yn dangos y defnyddiwr rhywfaint o wybodaeth.
Mae hynny'n gwbl y pwynt y cod ffynhonnell yma.
>> Felly mae llawer i'w ddweud am sut i wneud gwir ddatblygiad iOS.
Mae llawer o gystrawennau crazy nad ydym wedi ei weld yn eithaf eto
fel dosbarth, beth dosbarth mewn gwirionedd.
Gallwn anwybyddu i raddau helaeth hynny am y tro.
>> Ond yn sylwi ein bod wedi cynnwys o fewn y amrywiaeth o bethau
ein bod eisoes wedi gweld fel swyddogaethau sydd ag enwau penodol.
A phan fyddwn yn rhoi rhai swyddogaethau yr enwau cywir
y disgwylir gan iOS, mewn gwirionedd mae hyn yn teimlo ychydig yn hudol.
Ond pan fyddwch yn creu cais iOS, mae
yn enwau swyddogaeth benodol sydd yn cael eu galw gan y ffôn ei hun
gan fod y cais yn cael ei llwytho i roi cynnig i greu'r broses sydd mewn gwirionedd
yn rhedeg eich cais.
Felly unwaith eto, mae llawer o bethau yr wyf yn rhaid i sglein dros yma er mwyn i ni
i siarad am hyn yn benodol.
Ond yr wyf yn eich annog i edrych ar o bosibl y seminar iOS eraill, ond hefyd rhai
o'r sesiynau tiwtorial ar-lein sy'n gwneud gwaith llawer gwell o ddisgrifio
y wybodaeth benodol.
>> Ond gallwn weld un neu ddau o bethau y yn ddiddorol oddi wrth y cod yma.
Sylwch fod gennym os ddatganiadau.
Gyda llaw, un pwysig beth am os ddatganiadau
yw bod y cromfachau o gwmpas y Mynegiad Boole yn ddewisol.
Ond nid y braces cyrliog yn ddewisol, ni waeth pa mor ychydig neu lawer o linellau o god
sydd gennych mewn os bydd datganiad.
Ni allwch gael os yw'r datganiadau heb braces cyrliog yn Swift.
>> Ac mae hyn yn, wel, rhyw fath o wirion.
Ond mae rhesymau hanesyddol dros hynny.
Mae'n i fod i eich arbed rhag eich hun.
Fel hyn, er enghraifft, ni allwch gwared ar y braces cyrliog o gwmpas y
os ddatganiad.
Yn mewn gwirionedd yn ofynnol hynny.
Felly, yr wyf yn eich annog i cymerwch olwg ar hyn.
Ond mae un yn fwy adeiladu fy mod am
i ddangos i chi am Swift sy'n yn newydd i Swift 2.0 o gymharu
i fersiynau hŷn o Swift, sef y canlynol.
Gadewch i ni weld lle wnes i ei roi fan hyn?
>> Felly, yn y swyddogaeth hon a elwir yn fetchJSON, swyddogaeth hon
yn gyfrifol am dynnu hynny JSON ffeil o URL, sy'n digwydd dim ond fel
i fod yn rhedeg ar fy IDE CS50.
Rwyf newydd ddechrau Apache, rhoi fy ffeil JSON yno,
ac rwy'n gallu tynnu wedyn bod data o'r rhyngrwyd gan ddefnyddio
swyddogaeth hon a URL hwn, sy'n cael ei ddarparu gan y ffôn.
Mae wedi ei ddarparu gan llyfrgell eich bod yn ei ddefnyddio wrth
eich bod yn gwneud rhywfaint o ddatblygiad app iOS.
>> Sylwa yma fod yna mae hyn yn anarferol lluniad cystrawennol a elwir yn wyliadwrus.
Ac yn wir i gyd mae hyn yn Swift yn ffordd o wirio
bod rhai pethau wedi wedi'u bodloni cyn i chi
bwrw ymlaen â gweddill y swyddogaeth.
Er mwyn imi gael, gan ddefnyddio math dewisol hwn,
Gallwn fod wedi dod o hyd i'r URL gan rhedeg y swyddogaeth NSURL
a storio hynny i mewn i URL gyson, ac yna gwirio
i weld os URL oedd dim, gan ei fod yn yn mynd i ddychwelyd fath dewisol.
Ac os oedd dim, yna fyddwn i argraffu gwall ac yna dychwelyd.
>> Ond yn hytrach, pa gard yn gadael ni ei wneud yw yr union beth,
ond sicrhau ei fod yn mewn gwirionedd yn wir bod url
wedi ei osod yn briodol gan NSURL.
Ac os ydyw, yna mae'n sgipiau dros hyn, ac mae'n
Bydd yn eich galluogi i fwrw ymlaen â'r url ar ôl cael ei diffinio'n briodol.
Ond os yw'n wir fod Nid yw url yn cael ei ddiffinio yn iawn,
os yw ffwythiant yma yn dychwelyd gwall neu ryw beth annisgwyl arall
yn digwydd mewn gwirionedd, mae hyn yn lluniad gard yn caniatáu i ni wedyn allbwn sy'n gwall
a'i dychwelyd ar unwaith.
Do?
>> GYNULLEIDFA: Felly mae'n garedig o debyg i os hynny arall?
DAN ARMENDARIZ: Mae'n fath o fel arall, os hynny, ie,
ac eithrio bod url hwn, yna ddiffinnir ar gyfer popeth yn is na'r hyn.
Os yw'n pasio gard hwn, yna mae'n Bydd mewn gwirionedd yn cael eu llenwi â data
ac y gellir ei ddefnyddio yn y gweddill cod ffynhonnell yn eich swyddogaeth.
Felly yr wyf yn amau ​​eich bod yn mynd i dechrau gweld wyliadwrus hwn yn ogystal.
Ac fod yn ymwybodol o hynny.
>> Felly, dim ond edrych ar un neu ddau o eraill pethau, mae hyn yn iawn dyma beth,
yn eich barn chi, dim ond yn seiliedig ar yr hyn y oeddem yn sôn am o'r blaen?
>> GYNULLEIDFA: Meddyliwch bydd yn rhedeg yn y rhestr?
>> DAN ARMENDARIZ: Felly dyna agos.
Mae hon yn swyddogaeth yr ydym yn diffinio.
Ac rydym yn mewnbynnu swyddogaeth honno fel dadl i swyddogaeth hon fan hyn.
>> GYNULLEIDFA: [Anghlywadwy] os nad dim.
Felly mae'n yn y rhestr, dde?
>> DAN ARMENDARIZ: Os nad yw camgymeriad yn ddim, fel bod yw-- felly rhaid i mi sgrolio.
Wel, gadewch i ni weld, ni allaf wir yn sgrolio i'r dde yma.
gwall yn ddadl sy'n yn cael ei trosglwyddo i'r hyn swyddogaeth dienw.
Mae hyn yn swyddogaeth ddienw.
Nid oes ganddo unrhyw enw.
Ond rydym yn derbyn tri hyn dadleuon, data, ymateb, a chamgymeriadau.
Ac mae'n mynd i ddychwelyd yn ddi-rym, felly nid yw'n mynd i ddychwelyd unrhyw beth.
Ac mae hyn yn cynnwys y swyddogaeth honno.
Ac yna rydym yn cael mynediad y tu mewn i'r swyddogaeth i bob un o'r dadleuon hyn.
>> Felly mae'n corwynt taith o amgylch yr iaith.
Ond yr wyf yn gobeithio gyda hyn, gobeithio wrth i chi fynd
Edrychwch ar rai o'r sesiynau tiwtorial benodol i ddatblygu iOS gyda Swift,
yn enwedig os byddwch yn mynd i Afalau 'datblygwr page-- y we
ganddynt lawer o wir yn dda sesiynau tiwtorial i'ch rhoi ar ben.
Ond gobeithio dim ond yr awr hon o siarad am y gystrawen ei hun wedi rhoi
ydych yn ddigon i ddechrau arni gyda hynny.
>> Byddwn yn postio i gyd ffynhonnell hon cod ar wefan seminar
cyn gynted ag y bo modd, a hefyd y sleidiau felly mae gennych cyfeirio ar gyfer pawb.
Ond pob lwc gyda'ch prosiectau.
A diolch i chi i gyd yn fawr iawn am ddod.
>> [Cymeradwyaeth]