>> [Music kucheza]
>> DAN AMRMENDARIZ: Kila mtu, kuwakaribisha kwa CS50 semina hiyo,
iOS App Maendeleo na Swift.
Mimi nina Dan Armendáriz, na mimi nina preceptor ya sayansi ya kompyuta hapa katika Harvard.
>> Na saa ijayo ni kwenda kuwa ziara kimbunga cha mambo mengi
kuhusu mada hii kama tunaweza fit.
Nami baada yote ya chanzo kanuni kwamba utaona leo online.
Tunaweza kuwa na uwezo wa kweli kwenda juu ya kila kitu
kwamba mimi nina kwamba mimi nina kuonyesha katika saa hii.
Lakini angalau hopefully kupitia maoni ya chanzo kanuni,
wewe utakuwa na uwezo wa kujaribu kufikiri nini hasa kinachotokea kwa mambo hayo
kwamba hatuna kabisa kupata.
>> Kwa ujumla, muundo wa Majadiliano ya leo itakuwa kama ifuatavyo.
Tutaweza kuanza nje kufanya baadhi ya msingi syntax kwa lugha Swift,
kwenda katika baadhi ya juu zaidi syntax ya lugha Swift.
Kwa sababu lugha ni kweli kisasa na
ina mengi ya ngazi ya juu makala, mambo ambayo tuna si
kuonekana katika C katika CS50, au hata baadhi ya lugha nyingine
kwamba tumekuwa kuanza kutumia katika CS50 kama PHP,
hivyo mimi ni kwenda kuwa na kujaribu kuanzisha pia baadhi ya mada ambazo
ni kuhusiana na lugha ngazi za juu kwamba unaweza kuona katika kina katika CS50,
lakini utaona katika baadaye sayansi ya kompyuta madarasa.
Hivyo ni kwenda kuwa lenye msongamano mkubwa saa.
Na tafadhali jisikie huru basi mimi kujua kama una maswali yoyote.
Hivyo kama wewe ni nia kwa kufanya maendeleo
pamoja Swift, au kweli yoyote iOS programu ya maendeleo,
kuna wanandoa wa mahitaji.
Awali ya yote, una kutumia Mac, mbio katika mifano
kwamba sisi ni kwenda kuwa na kutumia leo, toleo la kipya cha OS
X. Katika kesi hiyo, mimi nina mbio X 10.5.
Unaweza kuwa mbio 10.11 kama unataka.
Lakini kila kitu ambacho wewe ni kwenda ona ni kuwashirikisha Xcode 7 na baadaye,
ambayo ina toleo la karibuni ya Swift, ambayo ni Mwepesi 2.0.
Hii ni kweli pretty muhimu tofauti.
Mengi ya syntax ina iliyopita pretty kiasi kikubwa
katika baadhi ya kesi kutoka Swift 1.0, ambayo ilitolewa mwaka jana,
kwa Swift 2.0, ambayo tu akatoka hii kuanguka.
Hivyo sisi ni kwenda kuonyesha Swift 2.0.
Mambo mengi ambayo wewe kutafuta online
wakati wewe ni kujaribu kupata nyongeza taarifa kuhusu aina ya mambo,
unaweza kutaka kupanga kutafuta Swift 2
badala ya wazi tu umri wa Swift kufanya uhakika kwamba kupata syntax sahihi.
>> Kwa kweli, hii ni kwa ujumla kweli.
Kuna kiasi ya haraka ya maendeleo kinachotokea katika lugha Swift
tangu wakati huo Apple iliyotolewa yake, nadhani nini, imekuwa ni kidogo zaidi ya mwaka
sasa.
Na mambo yamebadilika kasi wakati huo.
Na hivyo si kuwa frustrated kama, wakati wewe ni kuangalia kuzunguka
kwa mada juu ya Swift au jinsi ya kutekeleza kitu kwa kutumia baadhi mfano kificho
au kitu ambacho hana kweli kazi juu ya Swift 2.0.
Kuhakikisha wewe ni kuangalia mahsusi kwa ajili ya toleo kwamba
kujaribu kupunguza madhara ya tofauti matoleo na wale aina ya mambo.
>> Nitajaribu kumweka nje baadhi tu ya mambo ambayo ni tofauti na matoleo ya zamani.
Lakini ni kitu cha kuangalia nje kwa.
Hiyo pengine ni kwenda kuwa moja ya maumivu ya kichwa kubwa
kwamba utakuwa na kwa Swift ni kutafuta mfano kificho kwamba ni wakubwa, hata tu
na miezi michache, kujaribu kutumia hivyo katika zaidi ya kisasa ya mradi wako.
Na ni haki tu haifanyi kazi.
Wewe ni kupata makosa compiler, syntax makosa, kila aina ya mambo mambo.
Hivyo tu kuwa na subira na hiyo, na wewe hopefully
wana uzoefu mzuri nzuri kwa ujumla Swift.
>> Sasa unaweza kweli join-- na natumaini sisi kweli bado wana hii year-- hii
CS 50 ya Apple programu timu ya maendeleo, ambayo
itawawezesha kufunga programu yoyote ambayo wewe kujenga juu yako iOS.
Hivyo kuchukua kuangalia URL hii ikiwa una nia ya kufanya hivyo.
>> Hivyo michache tu ya mambo kuhusu Swift yenyewe.
Ni lugha ulioandaliwa.
Lakini utaona kwamba baadhi ya sifa ya kuwa sisi kutumia
kuruhusu ni kutumika pia katika kidogo kama kufasiriwa kwa njia vilevile.
>> Mengi ya syntax ni alikopa kutoka C. Ni msingi na kuandikwa katika C.
Na hivyo tutaona kwamba kuna mengi ya takeaways
kutokana na elimu yako zilizopo kutoka C kwamba tunaweza bandari ya Swift.
>> Lakini kuna mambo ambayo kufanya hivyo tofauti sana na C.
Ni nguvu sana typed.
Kuna usimamizi wa kumbukumbu moja kwa moja.
Wewe si kwenda na kutumia malloc au bure mahali popote.
Ni iliyoundwa kwa ajili ujumla.
Hivyo kwa maneno mengine, unaweza kutumia katika kila aina ya mazingira, kutoka Apple Watch
kwa iPhone njia yote hadi OS X, na hata baadhi ya watumishi, hata baadhi ya scripting.
Lakini tutaweza kuona kwamba msaada kwa ajili ya scripting
sio kabisa huko bado kama ni katika lugha nyingine.
Hivyo uwezekano mkubwa wewe utakuwa na kutumia hii kwa ajili tu ya maendeleo
juu ya Mac yako au iPhone yako.
>> Na ina mengi ya makala kisasa.
Na mengi ya mambo haya ni mambo ambayo tunakwenda kujaribu kushughulikia leo,
lakini pia mada yetu kwamba kusema ukweli, tunaweza kujishughulisha kozi nzima.
Kwa kweli, CS 51, ambayo ni inayotolewa muhula ujao,
inalenga mengi juu ya mada hizi kwamba ni ilivyoelezwa hapo chini.
Hivyo unaweza kutumia muhula mzima kuelewa mambo haya.
Lakini sisi ni kwenda kujaribu kupata njia yao
angalau kutosha kwamba anaweza kuelewa nini
kinachoendelea wakati ukiangalia katika mpango Swift
na kuwa na uwezo wa hack njia yako kwa njia hiyo kwa mradi wa mwisho.
>> Sasa moja ya njia bora kwamba unaweza kupata maelezo ya ziada juu ya hili
ni kusema ukweli tu kupitia Apple zinazotolewa nyaraka kwa ajili ya Swift.
Kuna mengi ya APIs ambayo inapatikana.
Na hii ni nzuri nyumbani msingi kwa ajili yenu kwa kuangalia, mambo maalum kwamba
wanataka kufanya na API kuwashirikisha iOS.
Kama unataka kutumia kamera kwa mfano, unaweza kuanza kuangalia hapa,
na pia kutumia Google na Stack Kufurika kama wewe ungekuwa kawaida.
>> Maswali yoyote juu ya hii kabla ya sisi kuruka haki katika?
Sawa.
Hebu hoja juu.
>> Hivyo kwanza, nina idadi ya mafaili mfano.
Na mimi nina kwenda kujaribu hatua njia yao kiasi haraka.
Faili hili Hello World kwa Swift.
Ni rahisi sana.
Kuna maoni njia zaidi kuliko kuna kanuni halisi.
Taarifa kificho halisi ni katika chini sana kwenye mstari 14.
Inasema magazeti.
Na kisha ni kazi ya wito.
Sisi ni kupita ndani yake string kuitwa Habari cs50.
Taarifa kwamba hakuna semicolons.
Taarifa kwamba hakuna int kuu.
Kuna hakuna wa cruft kwamba tulikuwa na C.
Wakati sisi ni kutumia Swift kwa njia hii, ambayo imeandikwa tu katika faili maandishi
na kuhifadhiwa kwenye kompyuta yangu, kisha Siwezi kukusanya ni na kukimbia nayo.
>> Taarifa kwamba hapa mimi nina si kwa kutumia CS50 IDE.
Hii akubali kwamba mimi ni mbio na kwamba mimi nina juu ya OS X,
na kwamba mimi Xcode tayari imewekwa juu ya mashine hii ili kwa hili
kwa kweli kazi.
Lakini hii ni kawaida ya maandishi ya faili tuweze kisha kukusanya na hariri.
Basi hebu angalia jinsi hii kweli kazi.
Nini kama nataka kukusanya ni?
swiftc 1.swift.
Baada ya muda au mbili, ni utaona kwamba tuna sasa
ulioandaliwa hii katika faili inayoitwa 1.
Na sasa tuna kuchapishwa CS50 yetu, Hello World yetu maombi badala.
>> Taarifa ya jambo moja nyingine kama vizuri ni kwamba by default,
hatukuwa na pembejeo a / n na magazeti mstari mpya.
By default, magazeti kazi katika Swift magazeti mstari mpya kwa ajili yenu.
Unaweza kupita hiari ziada parameter kuwaambia kuwa si kufanya hivyo.
Lakini Google kwa maelezo zaidi juu ya hilo.
By default, itakuwa kufanya mstari magazeti.
>> Haki wote, hivyo hebu hoja juu ya kisha kwa baadhi ya mambo mengine.
Hivyo ni jinsi gani sisi kweli kufafanua vigezo?
Tunaweza kufanya hivyo kwa kutumia moja ya njia mbili.
Na moja kwamba mimi nataka kukuambia kuhusu kwanza ni huu ufafanuzi let.
Na hii ni muhimu kwa sababu kwa ufanisi
nini sisi ni kufanya ni kufafanua mara kwa mara.
Tunaenda kuunda kutofautiana, au tuseme mara kwa mara kuitwa jina,
kutoa yake baadhi data-- katika kesi hiyo, kamba Dan.
Lakini kwa kutumia let hii keyword, tunasema
kwamba hii kutofautiana au tena constant-- aitwaye
jina ni kamwe kwenda kubadilishwa.
Ni kwenda kuwa hayabadiliki katika muda wa mpango huu
au katika muda wa mazingira
kuwa kwamba kutofautiana inapatikana.
>> Hii ni kweli ni muhimu kwamba wakati una baadhi ya takwimu ambazo siyo
kwenda na mabadiliko katika mpango wako, na utaona aina ya mifano
kuhusu wakati tunataka kutumia basi dhidi syntax mengine,
ni muhimu kwamba wewe kutumia basi popote iwezekanavyo kwa sababu notifies hii
lugha kuwa ni si kwenda kubadilishwa,
na ni kweli anaweza kufanya mengi ya optimizations
kuboresha kasi na usalama wa programu yako.
Na kwa usalama, I mean, si lazima ni ajali na mambo makosa
ili tuweze kuwa wamezoea kuona katika C.
>> Basi tunaweza kutumia kamba nyongeza katika kitabu kurejelea hii ndani ya kamba.
Ili tuweze kuona katika hii magazeti line, magazeti hodi,
na kisha kwa kutumia backslash wazi parens, na kisha jina la kutofautiana yangu,
katika hii mara kwa mara kesi, karibu mabano.
Mimi kimsingi kisha kuweka yaliyomo ya hii jina kutofautiana kuitwa
ndani ya kamba na kisha uchapishaji matokeo huko.
>> Kuna moja mabadiliko mengine na faili hili ambayo ni kwamba mimi, juu sana,
kuweka katika mstari shebang, ambayo kimsingi tu bayana
kwamba mimi nataka kutumia Swift mkalimani, ambayo
maana yake ni kwamba mimi tena kuwa na kukusanya mpango huu hasa.
Siwezi kukimbia tu ni kama Muswada yake mwenyewe.
Lakini hii ni, katika kesi hii, nyuma ya pazia kuwa ulioandaliwa na kisha
kuwa kukimbia.
Ni tu asiyeonekana kwetu.
>> Haki wote, hivyo hebu kuondoka.
Hivyo kuna kidogo ya hila kwamba ilitokea tu kabla.
Mimi ilionyesha kuwa mimi aliweza kuainisha mara kwa mara.
Na mimi naweza kutoa baadhi data ya kufanya hivyo.
Lakini katika kesi hii, taarifa kwamba sikuwa kweli bayana aina ya data
kuwa ni.
Na hiyo ndiyo sababu compiler, Swift Unaweza
kudai aina ya data kwa kuzingatia tu juu ya data kwamba mimi kuweka ndani yake.
Kwa sababu anajua kwamba kwa kufanya tathmini ya hii kutofautiana haki hapa, hii haki data
hapa, ni anajua kwamba ni kamba.
Na hivyo jina hili mara kwa mara ni kwa hiyo kwenda kuwa kamba vilevile.
>> Lakini tunaweza pia kuwa wazi kuhusu aina hiyo ni
sisi ni kwenda kutumia kwa constants au vigezo
kwa kutumia syntax hii instead-- basi jina matumbo Kamba sawa na
Dan, ambayo katika kesi hii ina maana tuko kwenda kufafanua mara kwa mara kuitwa jina.
Ni kwenda kuwa ya aina Kamba.
Na thamani ni kwenda kuwa Dan.
Sasa njia nyingine ambazo tunaweza kujenga variables--
na hizi ni vigezo mutable, ambayo ina maana kwamba sisi ni, kwa kweli, kwenda
kubadili yaliyomo yao wakati mwingine katika muda wa mazingira
kwamba kuwa kutofautiana ni defined-- sisi kutumia var keyword badala ya basi.
Lakini tena, kwa default, isipokuwa wewe kujua kwamba unahitaji kuendesha data kwamba,
kujaribu kutumia basi kwa utendaji maboresho.
>> Katika kesi hiyo, naweza kisha kutaja aina ya data
kwamba tunatarajia kuwa ndani ya kutofautiana hii mpya iitwayo studio.
Ni kwenda kuwa kamba.
Na tunakwenda kisha concatenate masharti mawili kwa pamoja, kamba hodi,
na kamba inawakilishwa na kutofautiana, au tuseme jina mara kwa mara.
>> Hivyo hii ni nzuri kwa sababu hii ni kiasi fulani PHP kama katika kwamba sisi
kuwa rahisi sana kamba concatenation.
Hatuna moja kwa moja kutumia aina yoyote ya usimamizi wa kumbukumbu
kuongeza ukubwa na kufanya aina yoyote ya mambo funny huko.
Hii kazi kama tunataka kweli kutarajia.
>> Haki zote, maswali yoyote juu ya hili?
>> Sasa sababu nyingine ambazo tunahitaji una uwezo
kuwa na uwezo wa kufafanua nini aina ya data vigezo ni
ni kwa sababu wakati mwingine hatuna wanataka initialize vigezo
pamoja na baadhi ya data katika hatua ya ufafanuzi.
Hivyo katika kesi hii, hebu sema kuwa nataka kuanza inputting
baadhi darasa katika kitabu daraja.
Naam Najua kwamba moja ya vigezo kwamba mimi nataka kuwa
ni kwenda kuwa daraja mutable.
Na tunajua pia kwamba sisi unataka kuwa integer.
Lakini labda tunafanya bado na kwamba daraja kutosha.
>> Katika Swift, una kufafanua aina ya data
kwamba ni kuhusishwa na kutofautiana au basi mara kwa mara
kabla unaweza kweli kutumia kwamba kutofautiana.
Kwa sababu ni nguvu typed, una kujiunga aina
na vigezo hivi.
>> Hivyo katika kesi hii, kama nimekuwa vizuri initialized kwanza kwa baadhi ya thamani,
kisha mimi haja ya kuwaambia nini Swift Natarajia aina data kuwa.
Na itakuja kubakia takwimu ambazo aina moja
kipindi chote cha historia ya mpango huu.
>> Sasa unaweza kujaribiwa kwa haraka kama I have umba hii kutofautiana daraja
na zinazotolewa ni integer ya 100, sasa kama mimi
wanataka kujaribu concatenate kamba na kwamba integer,
kujaribiwa bado kutumia kwamba kamba concatenation operator
kama tulivyofanya mistari michache tu kabla.
Lakini kwa bahati mbaya, hii itakuwa kweli si
kazi, kwa sababu wewe ni kimsingi kufanya
operesheni juu ya aina mbili tofauti.
>> Sasa hii ni tofauti sana na wengine lugha kama PHP ambayo ni kweli
loosey goosey na aina yao ya aina.
Wao ni tu kama, yeah, chochote, Sijali.
Nipe tu aina moja, na labda mimi itabidi kufanya jambo sahihi.
>> Katika kesi hiyo, Swift ni kali sana kuhusu aina
kwamba wewe ni kushughulika na.
Alama hii summation au concatenation operator
ina kimsingi michache ya chaguzi mbalimbali iwezekanavyo.
Unaweza kufanya summation kwa integers, au wewe
anaweza kufanya kamba concatenation, na labda baadhi ya mambo mengine pia.
Lakini kama hiyo operator haitambui kile ni upande wake,
au tuseme mchanganyiko wa wale aina mbili, ni si nini ni tegemeo,
kisha itakuja kusababisha kushindwa.
>> Hivyo katika kesi hii, ni nini maana kuwa na kamba pamoja na integer?
Vizuri katika mazingira ya hili, sisi pengine wanataka
kufanya operesheni kamba concatenation.
Lakini bila shaka kompyuta hana kwamba aina ya mazingira.
Na hivyo tunahitaji kutoa habari kwamba ziada
basi ni kujua nini ni kwamba tunataka kufanya.
>> Hivyo kwa maneno mengine, ukweli kwamba Swift sana typed
ina maana una kufanya kidogo ya kazi ya ziada
kupata kazi njia ambayo wewe unataka.
Lakini matokeo yake, ni salama.
Na mara moja una kuchukua maanani wale aina,
mambo kusema ukweli tu kuanza kufanya kazi pretty vizuri.
>> Hivyo katika kesi hii, sisi kisha ingekuwa kufanya kamba concatenation
na waziwazi akitoa integer kwa kamba
kwa wrapping katika hii mji mkuu S Kamba kazi,
na kisha kwa kutumia kamba concatenation operator kurekebisha studio yetu kutofautiana,
na kisha magazeti ya nje.
>> Hadi sasa, hivyo nzuri?
Sawa, hebu kuondoka.
>> Sasa kuna aina ya data aina kwamba tunaweza kutumia katika Swift.
Kama wewe kuwa desturi ya, tunaweza kujenga safu mutable.
Na kwamba safu Unaweza tu vyenye aina moja.
>> Hivyo katika kesi hii, sisi ni kwenda kujenga arrays mutable ya integers, ambayo
sisi kuwaita darasa, na sisi kuwa na uwezo kuhifadhi kwamba katika mabano mraba huu
muundo kama umefanya mzima wamezoea kwa katika aina mbalimbali za lugha nyingine.
Lakini taarifa kwamba hapa tuko kufafanua mambo kadhaa.
darasa ni kutofautiana mutable sisi si kutumia let Keyword.
Hivyo kwamba maana tunaweza kisha kurekebisha yaliyomo ya safu hii.
Ni ya aina Array Int, na tunaweza kujua kwamba
kulingana na haya mabano mraba hapa.
>> Sasa ni moja ya mambo mazuri kuhusu hili ni kwamba sisi
wanapata mengi ya Taarifa za ziada
kuhusu safu kwa kutumia tu baadhi rahisi dot nukuu.
Hivyo kwa mfano, grades.count hutoa kwetu
idadi ya vitu ambazo zipo katika kwamba safu, ambayo tunaweza kisha kupata pretty
urahisi tu kwa kutumia kwamba dot nukuu.
>> Kama unataka kuongeza ziada vitu na safu hii,
huwezi kufanya PHP style ambapo wewe tu wazi kufafanua,
katika ripoti iliyotolewa, baadhi thamani kuwa unataka kuingiza.
Badala yake, matumizi append Njia katika aina safu
append kwamba bidhaa, 95, kwa orodha hii.
>> Hivyo sasa safu hii ina zifuatazo contents-- 100, 0, 90, 85.
Na sasa tumekuwa umeongezewa 95 kwa kuwa vilevile.
>> Kuna njia nyingine tunaweza append mambo.
Unaweza kweli kutumia summation operator,
ambayo itakuwa kutafsiriwa kama safu append operesheni.
Na unaweza kisha append nyingine safu, ambayo ina maandishi ni 70 na 80,
kwa kuwa safu.
Hivyo basi, tuna yaliyomo katika kutofautiana hii
grades-- 100, 0, 90, 85, 95, 70, na 80.
Hii ni nzuri tu kisintaksia kidogo sukari kwamba Swift hutoa kwetu.
>> Hivyo kama tunataka kwa jumla darasa, tuko labda
atataka iterate juu ya kila kitu katika kitanzi hii.
Na hatuwezi kuwa, katika Swift, dhana ya kwa kitanzi kama ungependa kutarajia.
Lakini njia hiyo sisi zinaonyesha mbalimbali ni tofauti kidogo.
Hivyo katika kesi hii, kwa kuhitimisha kila kitu, tutaweza
kwenda kujenga muda kutofautiana kuitwa kiasi ili na sisi
kudumisha hesabu hii.
>> Na taarifa kwa wetu kitanzi ujenzi hapa.
Kwa ripoti katika 0 .. <grade.count.
Hivyo hii ujenzi, 0 .. <grades.count ni operesheni mbalimbali ambapo sisi ni
akisema kwamba sisi ni kwenda kujenga mbalimbali ya integers kutoka 0 hadi
kwa lakini ukiondoa grades.count.
Hivyo hii itakuwa 0, 1, 2, 3, 4, 5, hadi hata hivyo wengi moja
kabla grades.count.
>> Hivyo hii ni tofauti kuliko jinsi sisi ingekuwa kawaida kutumika kwa ajili ya mizunguko
ambapo ingekuwa baadhi ripoti kutofautiana, kuweka sawa na 0 mara ya kwanza,
na kisha kuunganisha kwamba mpaka baadhi thamani chini ya hesabu ya vitu
katika safu hiyo.
>> Kwa hiyo, kuna mabadiliko kwa hiyo, kwa kweli,
ambayo inaruhusu sisi urahisi sana kuweka aina mbalimbali za safu.
Kama mabadiliko haya mbalimbali ili nukta tatu, 0 ... grade.count,
hii inawakilisha mbalimbali 0 kwa grades.count umoja,
kwa maana ya kuwa idadi hiyo ni pia kisha ni pamoja na katika mbalimbali.
>> Lakini hii ni Handy sana maana hayo halisi,
wakati tuna kufanya iterations juu ya kitanzi
kwa sababu bahati hizo sifuri indexed, kama tumeona katika lugha zingine
vilevile.
Maswali yoyote juu ya hii kwa kitanzi?
>> Hivyo kuna thabiti ufafanuzi ya kutofautiana hii ripoti,
thamani ambao huanza saa 0, na inaendelea katika kila iteration ya kitanzi
kuongezeka kwa 1 hadi hatua ambayo ni sawa na grades.count,
ambapo kiwango, kitanzi aborts.
>> Taarifa kwamba katika kamba yetu kitabu hapa,
sisi kweli anaweza kufanya baadhi rahisi manipulations kwa maadili hayo.
Hivyo ripoti pamoja na 1 mapenzi kweli kufanya summation wa thamani kwamba
kwa sababu ripoti ni, katika kesi hiyo, integer.
Na katika hatua hiyo, itakuwa kisha kuwa waongofu katika kamba
na interpolated katika kamba hii hapa, na kuchapishwa kama tungetarajia. .
>> Na kitu kizuri kuhusu arrays hapa ni
kwamba sisi pia ni uwezo wa kuwa na maadili kuchota na kuweka maadili
kutumia mraba bracket nukuu kama tumeona katika lugha zingine vilevile.
>> Haki wote, hivyo kutoka hapa, sisi sasa compute kiasi yetu ya yote ya darasa letu.
Sasa aina ya ujao hatua mantiki itakuwa
kufanya mgawanyo wa operesheni ya kutafuta nje wastani wa wale wanafunzi wa darasa.
Lakini kitu muhimu hapa kinachotokea ambayo
ni kwamba jumla hii ni labda integer.
Lakini tunahitaji kufanya baadhi ya aina ya mara mbili mgawanyiko.
Na hii ni kwenda kuwa muhimu sana wakati
tunataka kufanya operesheni hii, kwa sababu kile tunasema
ni kwamba tunahitaji kweli kufanya mgawanyo juu ya mbili mara mbili.
Na tena, kwa sababu Swift ni sana sana typed,
ni lazima waziwazi kuweka yote ya vitu na mara mbili kabla ya sisi kweli
kufanya operesheni hiyo.
>> Hivyo ili na sisi kwa kufanya mara mbili mgawanyiko,
siyo ya kutosha kwa ajili moja tu ya vitu hivyo kuwa mara mbili.
Wote wawili kuwa mara mbili ili mwepesi
kuwa na uhakika kwamba hii ni nini tunataka kufanya.
Hivyo tutakuwa na kisha kupanga typecast Jumla ambayo tumekuwa computed juu
na hesabu ya wanafunzi wa darasa kwa mara mbili, na kisha kufanya kwamba operesheni na kuhifadhi
kwamba katika kutofautiana hii mpya, au tuseme mara kwa mara hii mpya iitwayo wastani,
ambayo itakuwa na ni aina gani, unaweza kufikiria?
Double, yeah.
Hivyo katika kesi hii, sisi hawana kutaja ni
sababu inaweza inferred kutoka operesheni ni aina gani ya data wastani
itakuwa.
Na Swift ni nzuri kwa ujumla juu ya kuwa na uwezo wa kudai aina.
>> Je, unataka kuona hii kukimbia, au naweza kusonga mbele?
Nataka kuendelea.
Maswali yoyote juu ya yoyote ya hili?
Kubwa.
>> Sasa sisi ni kwenda kuanza kupata nzuri stuff-- kazi kufafanua,
na wanandoa wa aina nyingine ambazo ni kipekee kwa Swift kwamba una si
kuonekana katika lugha zingine hadi hatua hii,
lakini waliopo katika mengine lugha ambazo unaweza kupata baadaye.
Hivyo kwanza kama unataka kufafanua kazi,
unaweza kufafanua kwa neno funky kazi, na kisha jina kazi,
na kisha katika mabano, hoja kwamba unataka kazi ambayo kukubali.
Lazima hoja pia specify-- generally--
Lazima pia kutaja aina ya data kwamba wao, isipokuwa wao inaweza inferred.
Na tutaweza kuona kwamba kidogo caveat katika kidogo tu.
>> Hivyo katika kesi hii tuna kazi kuitwa printGradeCount.
Tunakwenda kukubali kutofautiana au tuseme katika kesi hiyo,
constant-- aitwaye gradebook.
Na ni kwenda kuwa ya aina safu ya integers.
Sasa kuna kitu hiyo ni kweli ni muhimu hapa
kwamba mimi nataka kuelewa.
Hiyo ni kwamba by default, hoja hizi ambazo ni pembejeo kwa kazi hii ni
inavyoelezwa na thabiti hebu keyword, ambayo ina maana kwamba siwezi kurekebisha hii
gradebook kutofautiana hapa.
Na kwamba aina ya mantiki, kwa sababu wewe ni kupita data katika.
Na wewe labda hawataki kubadilishwa kutoka chini ya wewe.
Inawezekana kupanga kutaja kwamba hii ni kutofautiana kwa kuweka
var keyword hapa.
Lakini hiyo ni gotcha kwamba tumekuwa watu niliona wamefanya katika siku za nyuma
ni kwamba wao kudhani kuwa itakuja kuwa kutofautiana wakati, kwa kweli, ni
ni mara kwa mara.
>> Haki wote, hivyo hapa ndipo, katika kesi hii, sisi si kubainisha aina yoyote ya kurudi.
Tutaweza kuonyesha jinsi ya kufanya kwamba katika muda tu.
Lakini taarifa kwamba hapa tuna rahisi tu kama hali hiyo.
Kama gradebook ni tupu, ambayo katika kesi hii
ni tu mali ya integer hii safu, basi sisi magazeti nje kitu.
Vinginevyo sisi kufanya kitu kingine chochote.
>> Pretty moja kwa moja hadi sasa nadhani.
Lakini kuacha mimi kama una maswali yoyote.
>> Sasa kazi hii, kwa wastani, pia inachukua baadhi ya hoja, au tuseme moja hoja,
ambayo ni gradebook, na wakati huu ni kwenda na kurudi aina mbili.
Kwa sababu ni kompyuta wastani na ni
kwenda kweli kurudi kwamba wastani computed katika wito line.
>> Katika kesi hiyo, sisi kutaja kurudi aina baada ya mshale.
Na hii wanaweza kujisikia aina ya weird mara ya kwanza.
Umefanya mzima wamezoea kwa kuweka kurudi
aina kabla ya jina la kazi.
Lakini kama wewe kufikiria hii katika suala la hisabati,
kama wakati una hisabati kwamba kufafanua kazi,
una kazi pamoja na baadhi pembejeo, na inazalisha pato.
Na kwamba ni nini hasa hii ni walidhani kuiga.
Na kuna wanandoa wa lugha nyingine ambazo zina syntax sawa pia,
lakini pengine hata mmoja wameweza kuona katika CS50.
Lakini bado wala kuwa na kuchanganyikiwa kwa hilo.
Mshale ina maana kile kinachoendelea kurudishwa katika kesi hii.
OK, hivyo ni jinsi ni sisi kwenda compute wastani hili?
Naam, kama gradebook ni tupu, vizuri basi tuko
kwenda na kurudi 0, ambayo labda njia nzuri ya kutibu hii.
Sijui, hebu kuja nyuma na kwamba katika kidogo.
Hii inaweza si kweli kuwa njia nzuri
compute wastani ikiwa tuna gradebook tupu.
>> Kisha tutaweza tu kufanya summation yetu.
Taarifa kwamba hapa sisi kweli kuwa na toleo mbadala ya
kwa kitanzi, ambayo inaruhusu sisi iterate zaidi ya kila kitu moja katika safu
na mahali kila kipengele ndani ya kutofautiana yake mwenyewe.
Na kubainisha kwa daraja katika gradebook, nini tunasema
ni kwamba tunakwenda inamuunga kujenga mara kwa mara mpya iitwayo
Daraja kwamba ni kwenda kuwakilisha kila kitu kipekee katika gradebook
kila wakati kwamba kwa kitanzi iterates.
Hivyo mara ya kwanza kwa ni kukimbia, daraja mapenzi
kuwa bidhaa ya kwanza katika gradebook.
Mara ya pili utakuwa bidhaa pili, kadhalika na kadhalika
mpaka gradebook ina nimechoka yenyewe ya mambo.
Kisha sisi kuwa na uwezo wa kuhitimisha kwamba daraja katika summation yetu kutofautiana
na kurudi wastani wetu kama tumeona kabla.
Sawa, maswali yoyote?
Ndiyo?
Watazamaji: Nina maswali mawili.
Namba moja, hypothetically, unaweza kukimbia integer juu ya hili?
Hana na kuwa mara mbili, ni kwamba ni sahihi?
DAN AMRMENDARIZ: Je, unaweza kurudia swali hilo?
Watazamaji: Je, mimi kufanya integer kama wastani?
DAN AMRMENDARIZ: Je, unaweza kufanya integer kama wastani?
Hivyo kurudi integer wastani badala ya mara mbili?
>> Watazamaji: Return-- wewe na kwamba hivi sasa hapa chini.
DAN AMRMENDARIZ: Hapa hapa, kurudi 0.0?
Watazamaji: Yeah, tu kurudi 0.
Hivyo itakuwa ama 80 au 85, lakini si 85.2.
>> DAN AMRMENDARIZ: Hivyo katika kesi hiyo, hivyo kuna njia kadhaa tofauti
kujibu hilo.
Napenda kujibu yao kwa utaratibu.
Hivyo kama mimi tu kufanya kurudi huu 0, 0 ni thamani integer.
Na hivyo kuwa itakuwa na kusababisha Aina ya makosa ya kesi hii
kwa sababu ni mara mbili wanatarajia lakini ni kisha kurejea integer.
Kama mimi nataka kurudi integer, naweza.
Naweza kuweka aina ya kurudi int, kurudi 0 hapa,
na si kufanya mara mbili mgawanyiko.
Lakini basi tunataka kuwa kufanya integer mgawanyiko.
Na hivyo sisi kisha bila kupata wastani kwamba tunataka uwezekano kutarajia.
Lakini ndiyo tunaweza kurekebisha aina katika njia hiyo.
>> Watazamaji: Na pili, wewe kuwa moja mara mbili juu.
Lakini chini chini, wakati kufanya kurudi Double Double,
hiyo ni tayari moja kwa moja kurudi mara mbili muundo.
Kwa nini bado wanahitaji kufafanua na mshale juu na mara mbili?
>> DAN AMRMENDARIZ: Kwa hiyo katika kesi, hii ni sehemu
ya the-- hivyo kurudia swali, kwa sababu ni thabiti kutoka kurudi
aina hapa, ni aina gani hii kwa kweli ni, tunahitaji kuwa wazi kwa Swift
kuhusu nini tunataka kurudi nje ya kazi hii
hivyo kwamba wakati hufanya aina kuangalia, inaweza kuhakikisha
kwamba kile sisi kuwa kweli imeandikwa chini chini kwa kweli inajilainisha na kwamba.
Hivyo ni aina ya kama kuangalia na wewe mwenyewe aina ya hali hiyo.
Lakini kuna are--
>> Watazamaji: [inaudible] mshale?
>> DAN AMRMENDARIZ: Kuna matukio wakati tunaweza bayana kwamba tunaweza inamuunga
kuweka aina ya kurudi.
Lakini katika kesi hii, sijui kufikiri kwamba ingekuwa kazi.
Kuna baadhi ya syntax mengine kwamba tutaweza kuona baadaye.
>> Haki wote, hivyo chanzo hiki kificho ni tofauti kidogo
kwa sababu hii parses hoja kutoka kazi ambayo sisi ni wito.
Napenda kuonyesha jinsi kazi kabla ya sisi kweli hoja juu ya
kwa baadhi ya mambo ya kuvutia yale yanayotokea katika Swift.
>> Hivyo katika kesi hii, kama mimi tu kukimbia hii kanuni, taarifa kwamba nini anafanya
is-- wakati, ni aina ya anitiaye makosa weird.
Mimi haja ya kupita michache ya integers kama hoja mstari amri.
Basi hebu angalia, 150 na 80, na hit Enter ili kujua nini ni kweli kufanya.
Ni kukubali kila mmoja maadili haya kama integers.
Ni inputting yao katika gradebook.
Na kisha ni kufanya kwamba hesabu ya wastani
na outputting kwamba kama sisi bila kutarajia.
>> Lakini ni wazi kuna kitu kinachoendelea tarehe na hii kumkataa kitu
kitu kama integer.
Kama unaweza kukumbuka kutoka tulipokuwa kushughulika na hoja mstari amri
katika C na lugha nyingine, kwanza kabisa 0-th bidhaa katika mstari amri hoja kwamba
orodha ni jina la amri kwamba sisi kweli kunyongwa.
Hivyo katika kesi hii, mimi nina wanaoendesha tu juu ya yote hoja mstari amri.
Lakini Mimi si kufanya aina yoyote ya dhana kuangalia ruka juu kwamba moja ya kwanza.
Mimi tu wazi au mimi nina implicitly kuangalia ambayo ya aina hii
ni integers kabla mimi kwa kweli kufanya hesabu hii.
>> Na hiyo ndiyo kimsingi nini kinatokea hapa.
Kwa kila hoja katika hoja mchakato wa,
Mimi nina kwenda kufanya baadhi ya hundi.
Na katika kesi hii, mimi nina kwenda kujaribu kubadilisha kwanza
kwamba hoja ndani ya integer na kufanya typecast wazi,
kwa sababu ni, juu ya pembejeo, kamba na si kwa kweli integer.
>> Lakini hii ni aina ya syntax weird, kama basi daraja ni sawa na Int (hoja).
Nini ni kweli yanatokea hapa ni kubwa mno
muhimu kwa yako kwa kutumia Swift.
Hii ni kwa kutumia nini aitwaye aina ya hiari.
>> Hivyo kazi hii, Int (hoja), anarudi si tu integer, lakini anarudi
kile kinachoitwa integer hiari.
Na hivyo hii ni aina ya Aina juu ya aina.
Unaweza aina ya kufikiria kuwa kama ni kurudi kama mfuko.
Na wakati wa kufungua kwamba mfuko, ni ama
ina integer, ambayo ni matokeo, au ina kitu kabisa ndani yake wakati wote.
Na hii ni muhimu kama kuangalia makosa utaratibu, kwa sababu katika kesi hii
tunaweza kujua, ilikuwa hii Aina ya kubadilika na mafanikio?
Kama ilivyokuwa, basi ni kwa kweli kwenda na integer ndani.
Vinginevyo ni kwenda kuwa na baadhi ya thamani kwamba tutaweza wito haina kabisa, ambayo
ni mwakilishi wa hakuna integer wakati wote.
Ni kweli mwakilishi wa chochote.
>> Na hivyo hii kama ujenzi inaruhusu sisi unwrap mfuko huo,
kwamba hiari kisheria.
Na kama sisi ni uwezo wa unwrap kwamba kufunga na kupata integer ndani,
basi nini tunasema hapa ni kwamba sisi kisha
kuruhusu thamani kwamba kuwekwa katika mara kwa mara hii inaitwa daraja.
Na sehemu hii ya kama kauli, sehemu ya juu ya kauli kama
inakwenda, kwa sababu hiyo --zingua ilikuwa na mafanikio.
>> Kama ni hivyo tu hutokea kwamba kulikuwa na makosa labda
katika hii wazi aina kubadilika kutoka kamba kwa integer, labda
ni thamani ABC kwa mfano.
Na hiyo ni kweli si kwenda kubadilisha na integer.
Basi itakuwa kurudi haina kabisa, ambayo si integer.
Na hii ikiwa kauli vizuri kisha kushindwa.
daraja haipo kwa sababu hana yaliyomo integer.
Na itakuwa kukimbia kuzuia hii kingine badala yake.
Ndiyo?
>> Watazamaji: Nil ni N-I-L?
DAN AMRMENDARIZ: nil ni N-I-L, ndiyo.
>> Hivyo hii ni labda moja ya mambo ya gumu kuhusu Swift,
hasa wakati uko katika Magugu juu ya programu iOS
na wewe ni kweli kujaribu kufanya baadhi ya maendeleo huko.
Ni kwenda kuwa kunguruma saa wewe kuhusu hiari.
Ni kwenda kuwa na kuuliza wewe kwa alama ya kuuliza na pointi Moderators.
Lakini mara moja kufikiri out-- kama wewe kujitolea muda wa kuhesabia
kinachoendelea na aina ya hiari, wewe utakuwa kujiokoa mengi ya maumivu ya kichwa
kama wewe ni kujaribu kuandika programu katika Swift.
>> Ni kweli kipengele nguvu sana.
Na wewe utakuwa tu na kuchukua neno langu kwa ajili yake kwa sasa.
Lakini tutaona ujenzi huu na baadhi ya watu wengine kama hayo
katika baadhi ya wengine chanzo kanuni kwamba tutaweza kuonyesha katika kidogo tu.
>> Je, kuna maswali ya awali hapa?
Hivyo takeaway muhimu ni kwamba hiari aina ni aina ya metatype.
Ni ama ina thamani, na kama itakuwa hivyo, basi ni
labda na kwamba thamani ya kuhusishwa pamoja na hayo, au hana thamani yoyote ile,
na ni kuwakilishwa na haina.
Wengine wa hii ni labda kama ungependa kutarajia.
>> Basi hebu njia panda juu ugumu bado tena.
Na wakati huu, hebu tuangalie baadhi aina nyingine takwimu ambazo kweli zipo.
Mmoja wao ni Mkwawa, ambayo ni sawa na chatu Mkwawa.
Ni kiasi fulani sawa na hash meza katika C. Ni kimsingi ramani ya funguo
ambapo funguo inaweza kuwa masharti.
Na wakati wewe kuangalia juu funguo hizo, funguo hizo itakuwa na thamani.
Hivyo si kabisa safu, lakini badala yake, karibu zaidi zinazohusiana
kwa hash ramani au meza hash.
>> Hebu angalia jinsi hii zinatakiwa kufanya kazi kabla ya sisi kweli
kwenda katika chanzo kanuni yenyewe.
Kama mimi tu kukimbia hii, kitu kweli hutokea.
Ni kuwaambia mimi kwamba mimi nina wanatarajia baadhi ya vigezo vya aina zifuatazo.
Hivyo nina kwenda kutoa kwa ni baadhi ya majina tatizo kuweka,
hivyo pset0, labda mimi got 100.
Na pset1, I got 5.
Na kisha katika mtihani, mimi alifanya vizuri na got 30.
Na oops, mimi hit nafasi hapa.
>> Wakati mimi hit Enter, unaweza kuona hufanya baadhi hesabu.
Inasema gradebook ni tatu darasa, pset1, pset0, mtihani.
Na gradebook ina wastani huu maalum.
Hivyo tena, sisi ni kazi na hii ni wazo gradebook,
lakini sisi ni kwenda kuendelea iterating na utata wa kazi yetu.
>> Hivyo wakati wa mwanzo, tuko tu kwenda kujenga kazi ambayo
ina jukumu la kuchapa matumizi.
Na kuna njia ya kutoka hii kazi ambayo itakuwa tu
kwa nguvu kujiondoa maombi.
Hii si kitu ambacho utatumia katika iOS programu.
Hii ni tu, katika kesi hii, na hoja mstari amri.
Ijayo tutaweza kuanza kuelekea kwenye Xcode.
Lakini hii ni maalum kwa amri mstari style A mpango Swift.
>> Hebu tuangalie baadhi ya mambo ya kuvutia hapa.
Hebu angalia, michache tu ya mambo ya kuvutia kutaja labda
ni kwamba katika kazi yangu ya uchapishaji idadi ya wanafunzi wa darasa,
unaweza kukumbuka kuwa nilikuwa orodha hiyo ya items-- pset1, pset0, na mtihani.
Unaweza kweli haraka na kwa urahisi kufanya hivyo
kwa kuchukua gradebook, ambayo ni kamusi ambayo ina funguo na maadili.
Kupata yote ya msingi ni kupitia dot funguo njia hapa,
na kisha kutumia joinWithSeparator hii, ambayo hatimaye kuchukua yote ya funguo
kuwa tulikuwa typed katika, pset1-- au pole, pset0, pset1, na exam--
na concatenate yao pamoja kutumia comma na nafasi
kujenga moja kwa muda mrefu kamba.
Hii kujiunga operesheni ni phenomenally muhimu katika aina mbalimbali za mazingira.
Na hivyo ni joinWithSeparator hii.
>> Na hili ni jambo moja kwamba ni iliyopita kutoka Swift 1 kwa Swift 2.
Kuna kutumika kwa kuwa Chatu style-- kama wewe ni
ukoo na Python-- chatu style kujiunga njia juu ya masharti.
Lakini hiyo ni tena kesi katika Swift 2.
Unataka kutumia hii kama unataka kwa concatenate safu ya mambo
pamoja na kamba.
>> Hivyo labda kisha katika yetu mjadala wa wastani kabla,
inafanya hisia kidogo zaidi kwa sisi kuweka kazi wastani
kuwa hiari mara mbili badala kuliko tu mara mbili wazi.
Kwa sababu tulikuwa na kwamba hali ya kawaida ambapo,
nini kama kweli gradebook hana maadili ndani yake?
Lazima kurudi wastani nini?
>> Vizuri labda katika C wewe ingekuwa amefanya kitu
kama zinazotolewa thamani mwangalizi, kama 0.0, au labda idadi hasi,
au kitu tu anayewakilisha ukweli kuwa kulikuwa na baadhi ya hali makosa
na wewe labda si kweli kuwa uwezo wa compute kwamba wastani.
Naam uzuri wa kubainisha hiari aina itakuwa kufanya hivyo.
Na mimi nina sasa akisema maneno hayo yote, lakini hii kwa kweli haina matumizi optionals.
Lakini tutaweza kuona kwamba katika tu Dakika ambapo tunaweza kuweka wastani
kuwa data hiari aina ili kama kweli anarudi baadhi ya data, kisha
tutarudi data hizo.
Vinginevyo sisi kurudi haina kabisa, akisema kuwa hii
hana hesabu ya maana.
>> Hebu hoja juu ya kitu kingine.
Hivyo kutoka hapa, tumekuwa kuangalia mifano yote haya katika mstari amri.
Lakini kwa kweli nini wewe kwenda kuwa kushughulika na ni Xcode.
Na moja ya mambo mazuri kuhusu Xcode ni, na hasa katika Swift,
ni kwamba tuna hii Jambo aitwaye Uwanja wa michezo.
Na Uwanja wa michezo ni si wakati programu zote iOS.
Lakini utapata majaribio pamoja Swift kwa njia rahisi sana.
Unaweza aina zote za kanuni yako.
Ni vizuri syntax yalionyesha hapa.
Wakati kujenga faili mpya, kuuliza wewe kama unataka kujenga Uwanja wa michezo.
Lakini jambo zuri kuhusu Uwanja wa michezo ni kwamba juu ya haki ya dirisha yako,
je, ni kweli kuonyesha pato kutoka kanuni yako.
Hivyo kama mimi kitabu chini, tunaweza kuona nini pato la mistari mbalimbali ya maadili
kweli hutokea kwa kuwa.
>> Hivyo katika kesi hii, tunakwenda mabadiliko maelekezo kidogo tu
na majadiliano juu ya kitu ambacho ni kweli muhimu kwa kiwango hiki njia ya juu
kwamba Swift kazi, na ni wazo hili la kufungwa.
Na ve pengine kuona hii kidogo katika JavaScript.
Kwa wale kwamba ni katika CS50, kufungwa
ni maarufu sana, njia nzuri sana ya kufanya kiwango cha juu ya mambo katika lugha ya kisasa.
Lakini pia ni aina ya vigumu wrap kichwa yako karibu mara ya kwanza.
Hivyo kama wewe kuangalia hii mara ya kwanza, hiyo ni sawa.
Tu kuangalia chanzo kanuni na kuona kama unaweza takwimu ni nje ya nyumbani.
>> Hivyo katika kesi hii, hebu kusema kwamba sisi wanataka kujenga mengi ya mashujaa
pamoja na baadhi ya thamani ya kudumu.
Hivyo katika kesi hii mimi inaweza kujenga kazi.
Mimi nina kwenda kuiita nguvu za 2 ambao lengo pekee katika maisha
ni kuchukua baadhi ya pembejeo na mara mbili yake, na kurudi thamani hiyo.
Taarifa kwamba mimi hapa kukubali aina moja ya data.
Ni kwenda kuwa variable kuitwa x.
Ni ya aina Double.
Na mimi nina kwenda na kurudi mara mbili hapa.
Na mimi nina kwenda tu kufanya sana, kusema ukweli, pretty
njia wasiojua wa mara dufu thamani huu.
Na mimi nitakuonyesha nini hii ni muhimu katika haki ya pili.
>> Taarifa kwamba hapa tuna mbalimbali huu tena. kwa ajili ya kitu katika 1, nukta
dot dot, 2, ambayo ina maana kwamba kitanzi hii inakwenda mara mbili.
Lakini hii inawakilisha kutofautiana dummy.
Ina maana mimi si kweli kwenda kutumia kwamba kutofautiana popote
ndani ya kitanzi hii.
Mimi nataka tu mstari huu ya maadili ya kuendesha mara mbili,
bila wanaohitaji kujua thamani ya mbalimbali.
>> Hivyo katika kesi hii mimi nina mbio matokeo mara x mara mbili, ambayo kimsingi
ina maana kwamba mimi nina squaring thamani huu.
Na hii hufanyika kwa kazi kama sisi bila kutarajia.
Nguvu ya 2, kupita thamani ya 2.0 inatupa pato la 4.
3.2 Kazi kwa 10.24.
>> Sasa tunaweza kufanya sawa Jambo kwa nguvu ya 3.
Lakini sasa kubadili tu mbalimbali.
Kwa dummy kutofautiana katika 1 kupitia 3, kuzidisha mara 3,
na kufanya kitu kimoja.
>> Hivyo hii inaweza kujisikia kidogo contrived.
Lakini kuna muhimu Jambo hapa ambayo
ni kwamba kuangalia hizi kazi mbili, kuna
jambo moja tu kwamba ni tofauti, ambayo ni thamani hii katika mbalimbali.
Kila kitu kingine kuhusu hizi mbili kazi, uwezo wa 3 na uwezo wa 2,
ni, kwa kweli, kufanana kwa sababu wanafanya kazi katika njia hiyo hiyo.
>> Hivyo katika hatua hii, kidogo kengele kengele inapaswa kwenda mbali.
Hopefully unachosema, unajua, hii anahisi kidogo
kama kurudia ya juhudi.
Labda kuna njia ni kwamba napenda kuwa na uwezo wa kurejelea haya yote
na kutoa kazi au kuunda kazi ambayo
gani hasa nini nataka bila wanaohitaji aina yake nje waziwazi.
Na hii ni nini nguvu ya kufungwa inaruhusu sisi kufanya.
Basi hebu tuangalie hii.
Na mimi itabidi kutumia michache Dakika juu ya hili, kwa sababu hii
ni pretty muhimu kwa Swift.
Tunaona hii wakati wote.
Tunakwenda kufafanua kazi.
Ni kwenda kuitwa powerOf.
Ni kwenda kukubali parameter aitwaye y ya aina Int.
Lakini tuangalie aina ya kurudi.
Aina ya kurudi ni, katika mabano, Double Double mshale.
Ambayo ina maana kwamba kazi hii, hii powerOf kazi,
ni kurudi kazi.
Hiyo ni kukubali Double na kurudi mara mbili.
Hivyo kwamba ili sauti aina ya mambo, lakini hebu kitabu chini kidogo
na kuangalia na kuona nini kinatokea.
Tuko ndani ya hii powerOf kazi.
Sisi ni kujenga kazi mpya aitwaye exponentiator,
lakini haijalishi ni nini.
>> Taarifa kwamba hii ina pembejeo thamani ya x.
Na ni kuchukua katika mara mbili na kurudi mara mbili.
Na hii ni kanuni sawa kwamba sisi ona hapo juu, ila kwa kuwa thamani ya 2
au thamani ya 3, kwamba juu amefungwa katika mbalimbali,
imekuwa kubadilishwa na thamani huu wa y, ambayo
ilikuwa parameter ya awali ya powerOf yetu kufanya kazi.
Na katika hatua hii, sisi kurudi exponentiator.
Tuko kurudi kazi.
>> Ni aina ya kama kidogo akili unavuma.
Lakini hebu fikiria nini kinatokea wakati mimi kuwaita kazi hii powerOf
na kupita ndani yake baadhi thamani kama 2.
Hii ina maana kwamba Mimi sasa kuwa na thamani
2 kwa y, ambayo ina maana kwamba thamani hii y katika hii kazi exponentiator
itakuwa kwamba thamani 2.
Lakini mimi nina kurudi huu exponentiator kazi.
>> Hivyo taarifa gani Swift anasema mimi tumemuumba katika kesi hii.
basi mraba ni ufafanuzi, ni kazi ambayo anapokea Double
na anarudi Double.
I have umba kazi kwamba viwanja kitu
kutumia utaratibu huu hapa hapa.
Na kwa kweli nini kinatokea ni kuwa ni kurudi kazi hii
exponentiator, lakini thamani huu y umefungwa ndani yake.
Na hivyo sasa kila wakati mimi kutumia hii kutofautiana au mara kwa mara hii inaitwa
mraba, ni itakuja kuwa na tabia kama kazi.
Na hivyo siwezi kisha kuwaita kwamba kutofautiana kama napenda kuwaita kazi,
na kupita ndani yake idadi, kama katika kesi hii 3.
Nami kisha mraba thamani huu.
Hivyo 3 mraba kisha kuwa 9, kama tunaweza kuona hapa.
>> Kweli mambo, lakini hii sasa inaruhusu mimi nafasi
kujenga kazi nyingine powerOf.
Kama naweza kusema, OK, vizuri sasa nataka kujenga kazi mpya, powerOf (3),
na kuhifadhi kwamba katika mara kwa mara aitwaye mchemraba.
Na sasa mchemraba ni kwenda kuwa kazi tofauti kwamba mapenzi kisha
kuchukua baadhi ya thamani kama pembejeo na mchemraba kwamba thamani kama tunaweza kuona katika mstari wa chini
hapa.
mchemraba wa 2 ni kwenda kusababisha 8.
>> Hopefully pretty nadhifu mambo ya ajabu.
Wewe sijawahi kuona hili kabla.
Mimi moyo kuangalia ndani kufungwa na kuchunguza hii kidogo zaidi.
Ni mambo ya ajabu kweli nguvu tunaona mengi katika JavaScript na baadhi lugha nyingine.
Ni kweli muhimu kwa kuelewa APIs pamoja
kwamba tutaweza kupata katika haki ya pili.
Ndiyo?
>> Watazamaji: Wakati wa kufanya powerOf (2), mabano, na kisha
mabano nyingine, input-- nyingine wewe ni kimsingi kuondoa mraba.
DAN AMRMENDARIZ: Ili kuangalia katika mstari wa mwisho kabisa hapa.
Ni kweli kabisa inawezekana kufanya hivyo chaining kama wewe unahitajika.
Hivyo powerOf (5) ina maana kwamba tunakwenda kuwa na exponentiator ya 5 hapa.
Hivyo hii ni kimsingi kwenda kuwa kitu kimoja kama 4 madarakani tano,
kwa sababu tumeunda exponentiating kazi kwa nguvu ya tano,
na sisi ni kupita katika kwamba kazi thamani 4.
Na sisi kupata thamani kwamba kwamba sisi kutarajia, 1024.
Watazamaji: Na si jina, hivyo inafanya kuwa rahisi
kusoma, mraba chochote.
>> DAN AMRMENDARIZ: Haki, hasa.
Hivyo kabla ya mimi tu ya kuweka ndani ya mara kwa mara hapa ili
kuwa alifanya hivyo rahisi kutumia jina hilo.
Ndiyo?
>> Watazamaji: Katika hali hii powerOf, ni sehemu
ya lugha ya programu kinyume na njia
kufikiria powerOf katika [inaudible]?
DAN AMRMENDARIZ: Kwa hiyo katika kesi hiyo, powerOf
ni tu jina la kazi ambayo mimi inavyoelezwa hapa.
Hivyo si asili kwa lugha yenyewe,
lakini badala yake, ni tu kazi ambayo ina
jina kwamba kwa sababu mimi kuwapa jina hilo.
Yoyote maswali mengine?
Sawa.
>> Sasa hii ni kubwa.
Lakini wewe si kwenda kuona mengi ya kazi kufungwa kwamba
ni kama hii ambapo unaweza kufafanua, ndani ya ya kazi moja, kazi nyingine.
Na unaweza kufanya hivyo.
Lakini ni aina ya si kweli muhimu, sawa?
Kama kwa nini mimi kufafanua hii kazi kuitwa exponentiator
na kisha mara moja kurudi.
Kwa nini hawawezi mimi tu mara moja kurudi kazi hii?
>> Na kwa kweli, hii ni just Dhana ya dhana iitwayo
kazi bila majina, ambapo kazi bila majina si kweli
na jina kwa sababu wao huna haja ya kuwa na mtu mmoja.
Na hivyo katika kesi hii, katika 7B, tunaweza kupata just kwamba.
Ni wote kificho huo, hasa kitu kimoja gani,
lakini sasa tumekuwa iliyopita ni kidogo hivyo kwamba hii kazi mara moja powerOf
anarudi kazi.
Taarifa kwamba baada ya kurudi, kuna wazi curly mabano.
Ni tegemeo pembejeo hii Double.
Ni kutarajia kwamba pato Double.
Na kisha katika neno la hutenganisha kificho yenyewe.
Hivyo hii ni kazi bila majina.
Haina kweli kuwa jina, ambapo kabla ilikuwa inaitwa exponentiator.
Lakini kama tuliona, tu kwa kweli hakuwa rejea exponentiator
nje ya kazi hiyo.
Hivyo hakuwa na jambo hilo.
Hivyo kazi hii bila majina ni kinachojulikana kwa sababu ni Nameless,
lakini bado inatumiwa katika mazingira ya kanuni hii.
>> Ijayo wanandoa ndio mimi nina kwenda kuendelea hopefully
kupiga akili yako kidogo.
Tunaweza kurahisisha hii hata zaidi.
Kwa sababu kama alikuwa astutely Alisema awali,
labda sisi kweli kujua, na inferring kutoka kanuni hii, ni nini
pato la kanuni hizi ni kwenda kuwa.
Na kwa kweli, katika kazi hii bila majina, tunaweza kwa kweli kudai aina ya data.
>> Hivyo katika hili, sisi tena haja ya kupanga kufafanua
aina ya data hiyo kuwa pembejeo na mazao kutokana na kazi hii
kwa michache ya sababu.
Moja ni kwamba tumekuwa inavyoelezwa, hadi saa mfano wa enclosing kazi,
ni aina gani ya data bila majina huu kazi lazima pembejeo na mazao.
Na kutoka nyingine, sisi unaweza infer kutoka kificho
chini hapa kwamba sisi ni kukubali pembejeo kwamba ni wa aina Double
na kurudi mara mbili.
>> Taarifa kwamba hapa tuna si wazi inavyoelezwa majina ya hoja
kuwa kazi hii ni kukubali.
Na hivyo tunaona tunaweza kutaja vigezo wale kutumia $ 0, $ 1,
kadhalika na kadhalika, kutegemeana na idadi ya kwamba parameter kutumika
katika kazi hii.
>> Hili ni jambo ambalo unaenda kuona mengi ni hili wazi curly mabano
ufafanuzi ikifuatiwa na $ 0, na kisha baadhi ya operesheni,
na kisha kufungwa curly mabano.
Hiyo ni kazi bila majina ambayo hufanya operesheni hii.
Ina parameter hii ambapo ni aina ni inferred.
Hiyo parameter kwanza ni $ 0.
Na baadhi ya operesheni ni kinatokea kwenye kwamba $ 0.
>> Watazamaji: Hivyo ishara ya dola ina maana parameter kimsingi,
na 0 maana yake ni moja ya kwanza?
DAN Armendáriz: Hiyo ni sahihi.
Hivyo ishara ya dola kimsingi ina maana parameter, na 0 ina maana moja kwanza.
Lakini ni kazi hasa katika kesi hii ambapo mimi si jina lake
hoja katika kazi yangu bila majina.
>> Watazamaji: Je, Perl au kitu na ishara hii ya dola, dola 0 katika huko?
DAN Armendáriz: Je ambayo, samahani?
Watazamaji: Je Perl na dola hii 0, dola 1--
DAN Armendáriz: Sina pia ukoo na Perl,
lakini PHP nini amefafanua vigezo kulingana na ishara ya dola.
Na kunaweza kuwa na baadhi ya lugha kwamba kuwa na sifa kama hii.
Kwa kweli, Swift borrows mengi ya makala kama hii
kutoka mengi ya lugha nyingine.
Tunaona mwanga wa chatu ndani yake.
Ufafanuzi huu wa aina inaonekana kuja kutoka OCaml.
Na tuna tu rundo zima la mambo kutoka kura ya lugha mbalimbali.
Hiyo ni moja ya nzuri mambo kuhusu Swift
ni kwamba inachukua mengi ya bora mawazo kutoka kundi la lugha
na shoehorns wote pamoja katika lugha moja super.
Kwa kweli, kama wewe naomba kuendelea kupiga akili yako,
hivyo tumekuwa kufanya haya yote.
Tunaweza labda kurahisisha hii kidogo kidogo kwa kutambua kwamba, bila shaka,
Swift ina exponentiating kazi kujengwa katika.
Kama mimi kuagiza Darwin, ambayo ni tu maktaba ambayo
makala kazi kuitwa hii pow, sasa Siwezi kurahisisha uwezo wangu wa kazi
kuwa yafuatayo.
Ni kwenda kuwa kurudi kazi hii bila majina.
>> Lakini tuangalie jinsi rahisi hii ni sasa.
Hii ni kazi bila majina kwamba ni kukubali baadhi ya aina ya data,
na ni kwenda kuwa moja Hoja hasa,
inatazamwa katika $ 0 kwamba ni ya aina Double.
Ni kwenda na kurudi aina Double.
Lakini kauli kurudi sasa thabiti.
>> Na ni mtindo huu halisi kwamba ni sana, imefikia sana katika Swift,
kila mahali.
Tunakwenda kuona hii muda wote katika Swift.
Hivyo mimi nina kuonyesha yote haya kwa wewe kwa sababu ya syntax hii.
Hii ni kawaida sana kuona, maana yake
ni kazi bila majina kwamba ni kufanya
baadhi ya operesheni juu ya hoja hizi.
Na kuna kurudi thabiti.
Hivyo ni kabisa kitu kimoja kwetu kusema hayo, haki hapa.
>> Kwa sababu curly hii mabano ni kazi,
tuko kufanya operesheni hii juu ya hoja ya kwanza.
Sisi ni kwenda na kurudi hivyo.
Lakini kurudi hii nje ni kurudi kazi ile yote,
kwamba kazi nzima bila majina kwamba tumekuwa tu kuundwa.
Yoyote maswali mengine?
Sawa, mimi sijui kama nyie ni tayari kwa ajili ya hii,
lakini tunaweza kwenda hata crazier na Swift.
Uko tayari?
OK, hii ni kubwa.
>> Sasa sisi kweli kuwa na uwezo kwa, katika Swift, kwa sababu ya jinsi msimu
na jinsi itifaki msingi ni, kwa kufafanua wetu waendeshaji wenyewe freaking.
Kama katika kesi hii, hatukuwa na alama kwa exponentiation-- vizuri,
kwa ajili ya kufanya nguvu za kitu.
Lakini siwezi, katika Swift, kufafanua mpya alama kwamba hana just kwamba.
Hivyo katika kesi hii kuna rundo la syntax hapa.
Na mimi itabidi kuruhusu kuangalia ni nyumbani wakati ukiangalia hiyo.
Lakini sisi ni kufafanua infix hii operator, **, ambayo hatimaye kuruhusu sisi,
na kufafanua kile kwamba kazi ** kweli
haina, kukubali mkono wa kushoto upande na upande wa kulia,
na kisha kurudi exponent ya kwamba mkono wa kushoto upande kwa upande wa kulia.
>> Na hivyo sasa wote wa mimi ghafla tumemuumba kadiri mpya.
Hivyo 2 ** 3 ina maana 2 madarakani tatu.
[AKILI BLOWING SOUND] Hii na yenyewe lazima uwe kuwa kama,
OK, parafujo C. mimi nina kwenda Swift njia yote.
Hii ni kubwa.
Hii ni pretty ajabu.
>> Ingawa hii ni mfano mkubwa.
Lakini nina kamwe mara moja nje ya mfano huu kwa kweli
inavyoelezwa operator yangu mwenyewe.
Lakini bado, inaonyesha mengi ya nguvu ya Swift
na kwa nini hii ni kweli kweli baridi sana.
OK, ndiyo?
Watazamaji: Kama uko kufafanua operator yako mwenyewe,
jinsi gani unajua huna ajali kujaribu na kujenga operator hiyo ni
katika mahali fulani katika C, kama siri mahali fulani katika Swift,
kama moja Obscure kwamba inaweza kuwa kuona mbele.
>> DAN Armendáriz: Hivyo kama wewe ni kujaribu kufafanua waendeshaji yako mwenyewe,
kuna hatari ya kufafanua moja juu ya alama zilizopo.
Kwamba huenda katika ngazi ya kina kwamba Sidhani kama tuna muda wa kwenda juu.
Lakini hiyo ni hatari.
Na kwamba kwa kweli ni sababu sana kwa nini Sikuwa kutumia kareti ishara, ambayo
wakati sisi ni kuandika nje nguvu, sisi kwa kawaida kutumia 4 kidogo kareti 5 au kitu
kama kwamba, tu wakati tuko Gchatting marafiki au chochote.
Lakini katika kesi hiyo, kwamba kweli ingekuwa unasababishwa mgongano.
Na hivyo mimi kuepukwa ni kwa sababu tu Mimi kilichotokea kwa kujua katika kesi hiyo
kwamba ambayo ingeweza kusababisha kwamba mgongano.
>> Sawa.
Sasa kwa bahati mbaya, kwa Dakika saba iliyopita,
Nina kuweka kupiga akili yako kidogo.
Hivyo naomba kuonyesha baadhi ya mambo mengine pia.
>> Tumekuwa umeonyesha wewe wazo hili la kuwa kazi hizi bila majina,
kufungwa hizi kwamba kuruhusu aina ya kupitisha kazi kuzunguka.
Unaweza kurudi kwao.
Unaweza kuendesha yao.
Unaweza kufanya kila aina ya mambo mambo.
>> Lakini jambo moja nyingine kwamba hutokea kwa kuwa na manufaa
ni uwezo wa, kinyume kwa kurudi kazi hizo
katika kazi, kupita kazi kama parameter kwa kazi nyingine.
Unaweza kuwa na mawazo vizuri kwa nini Duniani ingekuwa nataka kufanya kitu kama hicho?
>> Naam, hebu kusema kwamba nataka kuchukua operator huu kwamba mimi
kazi kwa bidii ili kujenga na kuomba kwa rundo la idadi tofauti
katika safu.
Hivyo katika kesi hii nina safu ya integers-- 1, 4, 7, 2, 5, 10, 56.
Na mimi wanataka mara mbili yao yote.
Njia ambayo tunataka kawaida kufanya hivyo ni kuandika tu
rahisi kwa kitanzi kwamba iterates juu wote
na kufanya aina fulani ya operesheni za mraba juu yao,
inputting maadili hayo mapya ndani ya mwezi kutofautiana, au tuseme, safu mpya hapa.
Na thamani ya pato la Matokeo yake ni kisha wote wa arrays hizo,
au tuseme wale wote mambo sasa squared.
>> Na tunaweza kufanya hivyo Jambo kwa cubing hilo,
lakini kidogo kengele kengele lazima kuwa kwenda mbali
akisema kwamba labda kuna baadhi ya njia kwamba tunataka
kuwa na uwezo wa kurahisisha hii kidogo.
Na kwa kweli kuna.
Nini kama tunaweza kujenga kazi ambayo inaruhusu sisi
kukubali, kama Predator, kazi?
Hivyo katika kesi hii, kuchukua tuangalie hoja hizi.
Tunakwenda kukubali orodha ya mara mbili.
Na kisha tunakwenda kukubali kazi
katika variable kuitwa f kwamba ni kwenda kuchukua Double na kurudi mara mbili.
Na pato zima ya kazi hii nzima
aitwaye mapper ni kwenda kurudi safu kuitwa mara mbili.
>> Nini hii itakuwa kisha naomba kufanya ni iterate juu ya orodha hiyo
na kufanya kitu kimoja, lakini sasa kuomba kazi ambayo kila
maadili ya mtu binafsi katika orodha hiyo.
Hivyo mimi si kweli kujua nini f ni.
Haijalishi kwangu.
Lakini kwa muda mrefu kama inachukua katika Double, hufanya baadhi operesheni juu yake,
na kisha anarudi Double, napenda kisha kuwa
uwezo wa ramani kazi ambayo hela kila kipengele moja katika orodha.
>> Na aina hii ya programu ni aitwaye kazi juu ili,
ambapo sisi ni kupita kazi karibu kama vigezo
na kufanya mambo na kazi.
Ni aina ya kama kuchukua yote haya mawazo ambayo tumejifunza katika CS50
na kuwapeleka aina ya ngazi ya pili.
Na hii yote ni mambo CS51 style.
Na hivyo tutaweza kwenda katika kina zaidi katika madarasa kama hayo.
>> Lakini hii pia ni muhimu hapa kwa sababu sisi
kuona mengi ya kazi ambazo hutumika katika Swift
kwamba kimsingi anafanya huu, ambapo tuna
idadi ya baadhi, baadhi safu ya idadi.
Tunakwenda kupita kwamba safu katika mapper yetu.
Na sisi ni pia kwenda kupita baadhi ya kazi, ambayo
tumekuwa tayari kuelezwa hapa.
Ni kwenda kuwa mraba.
Na tunakwenda kisha mraba wote wa wale idadi
na kuhifadhi kwamba katika matokeo haya hapa.
>> Hivyo kesi hii tumekuwa inavyoelezwa yetu kazi mwenyewe iitwayo mapper.
Lakini jambo hili ni halisi, kwa kweli, kujengwa katika Swift.
Kuna aina ya kazi inayoitwa ramani.
Kuna kazi ramani, kuna kupunguza kazi,
na kuna chujio kazi, ambayo kimsingi kuomba kazi
kwa kila kipengele moja katika orodha ya kurekebisha yao kwa namna fulani.
>> Watazamaji: Hivyo tangu wewe ni kubadilisha data katika muundo mwingine
kupitia function--
DAN Armendáriz: Haki.
Yeah, hivyo kazi kwamba sisi ni kukubali
ni kubadilisha data kwa namna fulani.
Katika kesi hiyo, sisi walikuwa ama squaring, au tulikuwa cubing hilo,
au kweli, tunaweza kufanya hakuna operesheni juu yake wakati wote.
>> Lakini napenda kuonyesha jinsi hii basi ni kwenda kuangalia kwa vitendo.
Na tena, mimi nina mbio muda kidogo. hivyo mimi nina
kwenda kuwa na uwezo wa kwenda juu ya mambo yote ya chanzo kanuni hapa kwa undani zaidi.
Lakini Mimi moyo wa kufanya hivyo.
Tutaweza baada yake kwa haraka kama iwezekanavyo baada ya majadiliano hayo.
>> Lakini kama wewe kuangalia hii, kudhani kwamba tuna orodha ya namba,
safu ya idadi katika hii kutofautiana kuitwa namba.
Kisha tunataka kufanya hii filter operesheni juu ya namba hizo.
Hivyo kuchuja ni kubwa Ili kazi hiyo
anapokea safu na pia kazi.
Na juu ya kila kipengele katika kwamba safu, hufanya kazi hiyo.
>> Kama hiyo anarudi kazi kweli, ni kuvaa bidhaa hiyo.
Kama kazi kwamba anarudi uongo, Moto huo unatoa mbali bidhaa hiyo.
Na kisha kuirudisha orodha kwamba ni kisha linaloundwa zote
ya vitu wale ambao wamekuwa kuchujwa.
>> Hivyo kwa maneno mwingine, hii ni wazo moja, gradebook.
Tunaweza kuwa na aina ya darasa ndani ya hii thamani aitwaye namba.
Inaweza kuwa 100, na 70, na 40, kadhalika na kadhalika.
Nini filter hii haina taarifa ni kwamba hii ni kwamba sukari kisintaksia
kwa kazi bila majina.
Hii ni kazi bila majina akisema kwamba parameter kwamba mimi nina kukubali
ni kwenda kuwa, ikiwa ni ni mkubwa kuliko 70,
basi hii itakuwa kurudi kweli, kwa maana kwamba bidhaa kwamba yatawekwa katika chujio hii.
Basi hebu kuwa kidogo thabiti zaidi kuhusu hili.
Kama mimi na safu hii ya namba na lina ya 100, 70, na 40,
Mimi kufanya filter hii operesheni juu ya kila mmoja wa wale.
Hivyo kwamba moja ya kwanza ni thamani hii ya 100.
100 zaidi au sawa 70 Ni kweli, ambayo
ina maana kwamba 100 ni agizo katika nakala hii mpya wa safu hii.
70 pia hupita.
Lakini 40 hana.
Kwa hiyo kile ni kurudi katika passingCount ni safu ya vipengele 100 na 70--
100, comma, 70.
Wale walikuwa wawili tu vitu kwamba walikuwa agizo.
Na hivyo sababu mimi haraka akaenda kwa njia ya mengi ya aina ya utaratibu ya juu
mambo ni kwa sababu hii ni kwamba kawaida Jambo kwamba utaona katika Swift pretty
mara kwa mara, ni kufanya baadhi ya operesheni kutumia hii bila majina kazi syntax.
>> Kuna baadhi ya mambo ya baridi.
Swichi ni kweli nguvu katika Swift, I mean tu kama mambo, mambo yenye nguvu.
Unaweza kutumia kubadili, na unaweza kweli kuyatumia
kwa safu, ambayo ni aina ya mambo, na kufanya mambo ya dhana kama hiyo.
>> Lakini katika dakika chache zilizopita, Nataka ruka mbele kabisa mbali
na kuonyesha mfano maalum ya jinsi tunaweza kujenga katika iOS programu kutumia Swift.
Hivyo wakati wewe ni kufanya hii, itabidi kuchukua
a kuangalia at-- juu ya Apple nyaraka, wao
una mengi ya tutorials mzuri kwa ajili ya kujenga maombi yako ya kwanza.
Na mimi moyo wa kufanya kwamba kwa sababu wao kuchukua wewe
kupitia hatua zote za nini hasa kwa click juu ya kuunda maombi iOS.
>> Lakini hapa tuna programu hii iOS.
Na ni programu pretty rahisi kweli.
Kama mimi kukimbia hii, napenda kuonyesha wewe nini inaonekana kama.
Wote ni kimsingi gani ni pulls kutoka internet JSON faili
kwamba mimi kuhifadhiwa kwenye kompyuta.
Na kwamba JSON faili amefafanua picha kwamba kuruhusu
mimi kisha mzunguko kwa njia, juu ya yangu programu, picha kutoka mtandao wa kompyuta yangu.
>> Hivyo nina hapa getNextImage.
Ni mizigo picha kutoka katika mtandao, na kisha maonyesho hayo kwenye screen.
>> Hivyo ni pretty rahisi.
Lakini lengo hapa ni kuonyesha jinsi tunaweza kuchanganya mambo
kutoka mwisho wa wiki chache ya CS50 ndani ya halisi iOS maombi.
Kwa maneno mengine, labda ni moja ya mambo ambayo wewe unataka kufanya
ni kuwa na maombi iOS kwamba anaweza kuvuta data kutoka kwa mtandao
na kuonyesha user baadhi ya habari.
Hiyo ni kabisa hatua ya hii chanzo kanuni hapa.
>> Hivyo kuna mengi ya kusema kuhusu jinsi ya kufanya maendeleo halisi iOS.
Kuna mengi ya mambo syntax kwamba hatujaona bado kabisa
kama darasa, kile darasa kweli ni.
Tunaweza kwa kiasi kikubwa kupuuza kwamba kwa wakati huu.
>> Lakini taarifa kwamba tuna zilizomo ndani ya hii aina ya mambo
kuwa tumekuwa tayari kuona kama kazi ambazo zina majina maalum.
Na wakati sisi kutoa wale kazi zake majina sahihi
kwamba wanatarajiwa na iOS, kwa kweli hii anahisi kidogo kichawi.
Lakini wakati kujenga iOS maombi, kuna
ndiyo majina kazi maalum kwamba walioitwa kwa simu yenyewe
kama maombi ni kupakia kujaribu kujenga mchakato kwamba kweli
anaendesha maombi yako.
Hivyo tena, kuna mambo mengi ambayo mimi kuwa na Gloss juu hapa ili na sisi
kuzungumza kuhusu suala hili mahsusi.
Lakini mimi moyo kuangalia labda wengine iOS semina, lakini pia baadhi
ya tutorials online ambayo kufanya kazi bora zaidi ya kuelezea
taarifa maalum.
>> Lakini tunaweza kuona michache ya mambo ambayo ni ya kuvutia kutoka kificho hapa.
Taarifa kwamba tuna kama kauli.
Kwa njia, moja muhimu Jambo kuhusu kauli kama
ni kwamba mabano kuzunguka Kujieleza Boolean ni hiari.
Lakini braces curly si hiari, bila kujali jinsi chache au mistari mingi ya kificho
una katika ikiwa kauli.
Huwezi kuwa kama kauli bila braces curly katika Swift.
>> Na hii ni, vizuri, aina ya silly.
Lakini kuna sababu za kihistoria kwa ajili hiyo.
Ni walidhani kuokoa kutoka mwenyewe.
Kama hii kwa mfano, huwezi kuondoa braces curly kuzunguka kwamba
kama taarifa.
Wale ni kwa kweli inahitajika.
Hivyo Mimi moyo tuangalie hii.
Lakini kuna moja zaidi kujenga kwamba nataka
kuwaonyesha kuhusu Swift kwamba ni mpya kwa Swift 2.0 ikilinganishwa
kwa matoleo ya zamani ya Swift, ambayo ni yafuatayo.
Hebu angalia wapi mimi kuweka hapa?
>> Hivyo katika kazi hii inaitwa fetchJSON, kazi hii
ina jukumu la kuunganisha kwamba JSON faili kutoka URL, ambayo tu hivyo hutokea
kuwa mbio juu ya CS50 yangu IDE.
Mimi tu ya kuanza Apache, kuweka JSON faili yangu huko,
na mimi nina uwezo wa kuvuta kwamba basi data kutoka kwa mtandao kwa kutumia
kazi hii na URL hii, ambayo hutolewa kwa njia ya simu.
Ni zinazotolewa na maktaba kwamba matumizi wakati
unafanya baadhi iOS programu ya maendeleo.
>> Taarifa hapa kwamba kuna hii isiyo ya kawaida syntactical kujenga aitwaye walinzi.
Na kwa kweli yote haya ni katika Swift ni njia ya kuthibitisha
kwamba baadhi ya mambo na alikutana kabla
kuendelea na mapumziko ya kazi.
Ili niweze kuwa, kwa kutumia aina hii ya hiari,
Mimi naweza wamegundua URL na mbio kazi hii NSURL
na kuhifadhi kwamba katika URL mara kwa mara, na kisha kuangalia
ili kuona kama URL ilikuwa haina kabisa, kwa sababu ilikuwa kwenda na kurudi aina ya hiari.
Na kama ilikuwa haina kabisa, kisha napenda magazeti nje makosa na kisha kurudi.
>> Lakini badala yake, nini walinzi lets sisi kufanya ni kuwa kitu sana,
lakini kuhakikisha kwamba ni kweli kesi hiyo url
imekuwa vizuri kuweka na NSURL.
Na kama ni, basi ni skips juu ya hili, na ni
itawawezesha kuendelea na url baada ya kuelezwa vizuri.
Lakini ikiwa ni kesi hiyo url ni vizuri defined,
kama kazi hii anarudi makosa au nyingine jambo isiyotarajiwa
kweli hutokea, huu kujenga ulinzi inaruhusu sisi kisha pato kwamba makosa
na kurudi mara moja.
Ndiyo?
>> Watazamaji: Hivyo ni aina ya kama ikiwa kisha mwingine?
DAN Armendáriz: Ni aina ya kama ikiwa kisha mwingine, ndiyo,
isipokuwa kwamba url hii ni kisha inavyoelezwa kwa kila kitu hapa chini hii.
Kama itapita walinzi hii, basi ni kwa kweli kujazwa na data
na inatumika katika iliyobaki chanzo kanuni katika kazi yako.
Hivyo mimi mtuhumiwa kuwa wewe ni kwenda kuanza kuona walinzi huu pia.
Na kukumbuka ya kwamba.
>> Hivyo kuangalia tu michache ya wengine mambo, haki hii hapa ni nini,
unafikiri, tu kulingana na kile sisi walikuwa wanazungumza juu kabla?
>> Watazamaji: Fikiria kutakuwa na kukimbia katika orodha?
>> DAN Armendáriz: Basi hiyo ni karibu.
Hii ni kazi ambayo sisi ni kufafanua.
Na sisi ni inputting kazi ambayo kama hoja kwa kazi hii hapa.
>> Watazamaji: [inaudible] kama si nil.
Hivyo ni katika orodha, sawa?
>> DAN Armendáriz: Kama kosa ni si haina kabisa, ili is-- hivyo nina kitabu.
Naam, hebu angalia, siwezi kitabu kwa haki hapa.
kosa ni hoja kuwa ni kuwa kupita kwa kazi hii bila majina.
Hii ni kazi bila majina.
Haina jina.
Lakini sisi ni kukubali hawa watatu hoja, data, majibu, na makosa.
Na ni kwenda na kurudi ni batili, hivyo siyo kwenda na kurudi kitu chochote.
Na hii ni yaliyomo ya kazi hiyo.
Na kisha sisi kupata ndani ya kwamba kazi kwa kila mmoja wa hoja hizi.
>> Hivyo ni kimbunga ziara ya lugha.
Lakini natumaini na hii, hopefully kama wewe kuchukua
Kuangalia baadhi ya tutorials maalum kwa iOS maendeleo na Swift,
hasa kama wewe kwenda Apple developer mtandao page--
wana mengi ya mzuri tutorials kupata wewe kuanza.
Lakini pengine tu hii saa ya kuzungumza kuhusu syntax yenyewe ametoa
wewe kutosha ya kupata ilianza na kwamba.
>> Sisi baada ya yote ya chanzo hiki kificho kwenye tovuti semina
haraka iwezekanavyo, na pia slides hivyo kuwa rejea kwa ajili ya wale wote.
Lakini bahati nzuri na miradi yako.
Na kuwashukuru wote sana kwa kuja.
>> [Makofi]