>> [Mūzikas atskaņošanai]
>> DAN AMRMENDARIZ: Ikvienam, welcome uz CS50 seminārā,
iOS App Development ar Swift.
Es esmu Dan Armendariz, un es esmu skolotājs datorzinātņu šeit Hārvardā.
>> Un nākamā stunda būs viesulis tūre tik daudz sīkumi
par šo tēmu, kā mēs varam fit.
Es post visas pirmkodu ka jūs redzēsiet šodien tiešsaistē.
Mēs varētu nebūt spējīgs faktiski iet pāri visam
ka es esmu, kas es esmu parādot jums šajā stundā.
Bet vismaz cerams cauri komentāri par pirmkodu,
jūs varēsiet mēģināt izdomāt, ko tieši notiek ar šīm lietām
ka mums nav gluži nokļūt.
>> Kopumā, struktūra šodienas diskusija būs šāda.
Mēs sāksim ārā darīt dažas pamata sintakse ar Swift valodu,
nonākšana daži no vairāk uzlabotas sintakse no Swift valodā.
Jo valodā ir patiešām mūsdienīgs un to
ir daudz augsta līmeņa funkcijas, lietas, kas mums ir ne
redzams C visā CS50, vai Pat daži citās valodās
ka mēs esam sākuši lietot CS50 piemēram PHP,
tāpēc es esmu nāksies mēģināt ieviest arī dažas tēmas, kas
ir saistīti ar augstāka līmeņa valodām ka jums nevar redzēt padziļināti CS50,
bet jūs redzēsiet vēlāk datorzinātnes nodarbības.
Tātad tas būs cieši saspiesti stundu.
Un, lūdzu, let me zināt, ja jums ir kādi jautājumi.
Tātad, ja jūs interesē darot attīstību
ar Swift, vai tiešām jebkurš iOS app attīstība,
tur ir pāris prasībām.
Pirmkārt, jums ir jābūt, izmantojot Mac, darbojas piemēriem
ka mēs gribam būt, izmantojot šodien, salīdzinoši jauna versija, OS
X. Šajā gadījumā, es skrienu X 10.5.
Jūs var darboties 10.11, ja vēlaties.
Bet viss, kas jūs gatavojas skatīt iesaista Xcode 7 un vēlāk,
kas ir jaunākā versija SWIFT, kas ir Swift 2.0.
Tas ir faktiski diezgan būtiska atšķirība.
A sintakse daudz ir mainījies diezgan būtiski
dažos gadījumos no Swift 1,0, kas tika izlaists pagājušajā gadā,
uz Swift 2.0, kas tikko iznāca šoruden.
Tātad mēs ejam, lai parādītu Swift 2.0.
Vairāki lietām daudz kas jūs meklēt tiešsaistē
kad jūs mēģināt iegūt papildu informācija par dažādām lietām,
Jūs varat skaidri meklēt Swift 2
nevis tikai plain veco Swift, lai padarītu pārliecināts, ka jūs saņemsiet sintakse pareiza.
>> Faktiski, tas parasti ir taisnība.
Tur ir ātra daudzums attīstības notiek Swift valodā
kopš Apple izlaida to, es domāju, ka ko, tas ir bijis nedaudz vairāk kā gadu
tagad.
Un viss ir mainījies dramatiski šajā laikā.
Un tāpēc nevajag neapmierinātas ja, ja jūs meklējat apkārt
par tēmām, par SWIFT vai kā paveikt kaut kas, izmantojot kādu piemēru kodu
vai kaut ka tā nav faktiski strādā pie Swift 2.0.
Pārliecinieties, ka jūs meklējat īpaši šim versiju
lai mēģinātu samazināt ietekmi atšķirīgs versijas un tie veidu lietas.
>> Es mēģināšu norādīt tikai dažas lietas kas atšķiras ar vecākām versijām.
Bet tas ir kaut kas, lai noskatītos, kas paredzēti.
Tas droši vien būs viena no lielākajām galvassāpēm
ka jums būs ar Swift ir atrast piemērs kods, kas ir vecāka, pat tikai
pēc dažiem mēnešiem, mēģinot izmantot tā savā modernāka projektu.
Un tas vienkārši nedarbojas.
Jūs saņemat kompilators kļūdas, sintakse kļūdas, visādi trakas lietas.
Tik vienkārši esiet pacietīgi ar ka, un jums būs, cerams
ir diezgan jauka pieredze ar Swift kopvērtējumā.
>> Tagad jūs varat faktiski join-- un es ceru mēs faktiski joprojām ir šī šī year--
CS 50-Apple app attīstības komanda, kas
ļaus Jums uzstādīt jebkuru progr kas jums izveidot jūsu iOS ierīcēm.
Tātad to apskatīt šo URL, ja Jūs interesē darot to.
>> Tātad tikai pāris lietas par Swift pati.
Tas ir apkopota valoda.
Bet jūs redzēsiet, ka daži no iezīmēm, ka mēs izmantojam
ļauj to izmantot arī mazliet tāpat interpretēts veidā, kā arī.
>> A sintakse daudz ir aizgūts no C. Tā ir balstīta un uzrakstīts C.
Un tā mēs redzam, ka tur ir daudz takeaways
no savas esošās zināšanas no C, ka mēs varam ostas SWIFT.
>> Bet ir lietas, kas padara to ļoti atšķiras no C.
Tas ir ļoti stingri drukāti.
Tur ir automātiska atmiņas pārvaldība.
Jūs neesat nāksies izmantot malloc vai bezmaksas visā.
Tā ir paredzēta vispār.
Tātad citiem vārdiem sakot, jūs varat izmantot to visu veidu kontekstos, no Apple Watch
iPhone visu ceļu līdz OS X, un pat daži serveri, pat daži skriptu.
Bet mēs redzam, ka atbalsts skriptu
nav gluži tur vēl par tas ir arī citās valodās.
Tātad, visticamāk, jūs izmantojat Tas vienīgi attīstībai
uz jūsu Mac vai jūsu iPhone.
>> Un tas ir daudz mūsdienīgas funkcijas.
Un daudz no šīm lietām ir sīkumi, kas mēs ejam, lai mēģinātu risināt šodien,
bet arī mūsu tēmas, kas atklāti, mēs varam veltīt visu kursu.
Faktiski, CS 51, kas ir piedāvāja nākamajā semestrī,
koncentrējas daudz par šīm tēmām kas ir aprakstīti zemāk.
Tātad jūs varat pavadīt visu semestri izprast šīs lietas.
Bet mēs esam gatavojas izmēģināt nokļūt caur tiem
vismaz tik daudz, ka jums var saprast, kas ir
notiek, ja paskatās pie Swift programmas
un varēs kapāt savu ceļu caur to galīgajā projektā.
>> Tagad viens no labākajiem veidiem, ka jūs varat iegūt papildu informāciju par šo
ir atklāti tikai caur Apple nosacījumu dokumentāciju Swift.
Tur ir daudz API kas ir pieejami.
Un tas ir labs mājas bāzi par jums meklēt, konkrētām lietām, kas jums
gribu darīt ar API iesaistot iOS.
Ja vēlaties izmantot kameru Piemēram, jūs varat sākt meklēt šeit,
un arī izmantot Google un kaudze Pārplūdes, kā Jūs parasti.
>> Kādi jautājumi par šo pirms mēs lēkt tiesības?
Viss kārtībā.
Pieņemsim pāriet.
>> Tātad, pirmkārt, man ir skaits piemēram failus.
Un es esmu gatavojas, lai mēģinātu soli caur tiem salīdzinoši ātri.
Tas ir Hello World fails Swift.
Tas ir ļoti vienkārši.
Tur ir daudz vairāk komentāri kā tur ir faktiskais kods.
Ievērojiet faktiskais kods ir ļoti apakšējā rindā 14.
Tajā teikts, drukāt.
Un tad tas ir funkcija zvans.
Mēs iet uz to stīgu sauc Sveiki CS50.
Ievērojiet, ka tur nav semikoliem.
Ievērojiet, ka tur nav int galvenais.
Tur neviens no koda atlikumiem, kas mums bija ar C.
Kad mēs izmantojam Swift šādā veidā, kas ir tikai uzrakstīts teksta failā
un glabājas manā datorā, tad Es varu sastādīt un palaist to.
>> Ievērojiet, ka šeit es esmu neizmantojot CS50 IDE.
Tas paredz, ka es esmu darbojas un ka es esmu par OS X,
un ka man ir Xcode jau uzstādītas par šo mašīnu, lai tas
faktiski funkciju.
Bet tas ir tikai normāla teksta failu ka mēs pēc tam var sastādīt un rediģēt.
Tātad, pieņemsim redzēt, kā tas reāli darbojas.
Ko darīt, ja es gribu, lai apkopotu to?
swiftc 1.swift.
Pēc brīža vai diviem, tas redzēs, ka mēs esam tagad
apkopoti šī failā ar nosaukumu 1.
Un tagad mēs esam uzdrukāts mūsu CS50, Mūsu Hello World pieteikums drīzāk.
>> Ievērojiet viena cita lieta, jo labi ir tas, ka pēc noklusējuma,
mums nebija ievade A / n izdrukāt jaunu līniju.
Pēc noklusējuma, drukas funkcija Swift izdrukās jaunu līniju jums.
Jūs varat nodot izvēles papildu parametrs pateikt to nedarīt.
Bet Google, lai iegūtu vairāk informācijas par to.
Pēc noklusējuma, tas būs jādara drukas līniju.
>> Labi, tāpēc pieņemsim pāriet uz tad uz dažām citām lietām.
Tātad, kā mēs varam faktiski definēt mainīgos?
Mēs varam darīt, ir, izmantojot viena no divām metodēm.
Un viens, ka es gribu jums pastāstīt Par pirmais ir tas pieņemsim definīcija.
Un tas ir svarīgi jo efektīvi
tas, ko mēs darām, ir definēt konstants.
Mēs gatavojamies izveidot mainīgo, vai drīzāk konstante sauc vārds,
nodrošināt to daži data-- in Šajā gadījumā, stīgu Dan.
Taču, izmantojot šo let atslēgvārds, mēs sakām
ka šis variable-- vai atkal constant-- sauc
vārds nekad nebūs jāmaina.
Tas būs jābūt nemainīgām visā ilgums šīs programmas
vai visā ilgums kontekstā
ka šis mainīgais ir pieejams.
>> Tas ir ļoti svarīgi, ka tad, kad Jums ir daži dati, kas nav
gatavojas mainīt savu programmu, un jūs redzēsiet dažādus piemērus
par to, kad mēs vēlamies izmantot ļaujiet pret otras sintaksi,
tas ir svarīgi, ka jūs izmantojat ļaut kur vien iespējams, jo šī Brīdina
valodas, ka tas ir netiks mainīta,
un tas faktiski var veikt daudz optimizācijas
lai uzlabotu ātrumu un drošība jūsu programmā.
Un ar drošību, es domāju ne let tas crash ar crazy kļūdām
ka mēs varētu būt pieraduši redzēt C
>> Tad mēs varam izmantot string interpolāciju rezumēju šo ietvaros virkni.
Tātad, mēs varam redzēt šajā print līnija, drukāt hello,
un tad, izmantojot slīpsvītru atvērtos parens, un tad nosaukums mana mainīgo,
šajā gadījumā konstanti, aizveriet iekavas.
Es esmu būtībā tad liekot saturs ir mainīgā sauc nosaukuma
no virknes iekšā un pēc tam drukāšanas rezultātu tur.
>> Ir viens otru izmaiņas šajā failā kas ir, ka man ir, pašā augšā,
īstenot zaņķis līniju, kas būtībā tikai precizēts
ka es vēlos izmantot Swift tulks, kas
nozīmē, ka man vairs nav apkopot šo konkrēto programmu.
Es varu tikai palaist to kā savu skriptu.
Bet tas ir, šajā gadījumā, aiz ainas tiek apkopoti un pēc tam
to palaist.
Tas ir tikai neredzama mums.
>> Labi, tāpēc pieņemsim pāriet.
Tātad tur ir mazliet blēdība kas tikko notika pirms tam.
Man parādīja, ka es varētu noteikt konstantu.
Un es varētu sniegt dažus datus, lai to izdarītu.
Bet šajā gadījumā, paziņojums, ka man nav faktiski norāda datu veidu
ka tas ir.
Un tas ir tāpēc, ka kompilatoru, Swift var
secināt datu veidu tikai, pamatojoties uz datiem, kas man par to.
Jo tas zina, ka, izvērtējot šo mainīgs tepat, šie dati tiesības
šeit, tas zina, ka tas ir string.
Un tā tas konstante nosaukums tādēļ ir būs virkni kā labi.
>> Bet mēs varam būt arī skaidri par veidu, kas ir
mēs gatavojamies izmantot konstantes vai mainīgie
izmantojot šo sintaksi instead-- ļaujiet nosaukums resnās String vienāds
Dan, kas šajā gadījumā nozīmē, ka mēs esam gatavojas noteikt nemainīgu sauc vārdu.
Tas būs tipa String.
Un vērtība būs Dan.
Tagad cits veids, kas mēs varam izveidot variables--
un tie ir mainīgs mainīgie, kas nozīmē, ka mēs esam, patiesībā, dodoties
mainīt to saturu dažkārt ilgumu, saistībā
ka mainīgais defined-- mēs izmantot VAR atslēgvārdu nevis ļaut.
Bet atkal, pēc noklusējuma, ja vien jūs zināt kas jums ir nepieciešams, lai manipulēt, ka dati,
mēģināt izmantot ļaut, lai veiktspējas uzlabojumi.
>> Šajā gadījumā, es var pēc tam norādīt datu tipu
ka mēs sagaidām, ka iekšpusē Šī jaunā mainīgais sauc etiķete.
Tas būs virkne.
Un mēs ejam, lai pēc tam saķēdēt divas stīgas kopā, string hello,
un string pārstāvēta ar mainīgs, vai drīzāk konstante nosaukums.
>> Tātad, tas ir jauki, jo tas ir nedaudz PHP, piemēram, to, ka mums
ir ļoti viegli string konkatenācija.
Mums nav automātiski izmantot jebkāda veida atmiņas pārvaldība
lai palielinātu izmēru un darīt jebkāda veida funny lietas tur.
Tas darbojas kā mēs varētu reāli sagaidīt.
>> Labi, kādi jautājumi par šo?
>> Tagad cits iemesls, ka mums ir vajadzīga jums ir iespēja
lai varētu noteikt, ko Datu mainīgo tips ir
ir tāpēc, ka dažreiz mēs to nedarīsim vēlaties, lai sāktu mainīgos
ar dažiem datiem tajā punkts definīcijas.
Tātad šajā gadījumā, teiksim ka es vēlos sākt ievadījusi
dažas pakāpes integrācijai klases grāmatu.
Nu es zinu, ka viens no mainīgie, kas es gribu būt
ir būs mainīgs pakāpes.
Un mēs arī zinām, ka mēs vēlaties, lai to veselam skaitlim.
Bet varbūt mēs to vēl nav ir pieejams, kas pakāpē.
>> In Swift, jums ir definēt datu veidu
kas ir saistīta ar mainīgais vai ļaut konstante
Pirms jūs faktiski var izmantot šo mainīgo.
Jo tas ir stipri drukāti, Jums ir saistīt tipa
ar šiem mainīgajiem.
>> Tātad šajā gadījumā, ja man nav pareizi inicializēts pirmais ar kādu vērtību,
tad man ir nepieciešams, lai pastāstītu, ko Swift Es ceru, ka datu tips būt.
Un tas notiek, lai paliek ka pats datu tips
Visā vēsturē šīs programmas.
>> Tagad jūs varētu būt kārdinājums, tiklīdz Esmu izveidojis šo klases mainīgo
un ja tas ir skaitlis 100, tagad, ja I
gribu mēģināt saķēdēt virkne ar šo skaitlim,
varētu būt kārdinājums joprojām izmanto ka string konkatenācija operators
tāpat kā mēs to darījām tikai dažas rindiņas pirms.
Bet, diemžēl, Tas faktiski nav
strādāt, jo jūs esat būtībā veicot
darbība uz diviem dažādiem veidiem.
>> Tagad tas ir ļoti atšķirīgs no citiem valodas, piemēram, PHP, kas ir patiešām
loosey dumjš ar savu veida veidiem.
Viņi tāpat kā, jā, kāds, man vienalga.
Dāvini man vienu veidu, un varbūt es darīšu pareizi.
>> Šajā gadījumā, Swift ļoti stingri par veidiem
ka jums ir darīšana ar.
Summēšanu operators vai konkatenācija operators
ir būtībā pāris dažādas iespējas.
Jūs varat darīt summēšanas ar veseliem skaitļiem, vai arī jūs
var izdarīt virkni konkatenācija, un varbūt dažas citas lietas, kā arī.
Bet, ja tas operators neatzīst to, kas ir uz katru pusi no tā,
vai drīzāk uz tiem apvienošanas divi veidi, nav tas, ko tā gaida,
tad tas būs radīt neveiksmes.
>> Tātad šajā gadījumā, ko tas nozīmē lai būtu virkni plus vesels skaitlis?
Nu kontekstā Tas, mēs, iespējams, vēlas
darīt string konkatenācija darbību.
Bet, protams, dators nav šāda veida kontekstā.
Un tāpēc mums ir nepieciešams, lai nodrošinātu ka papildu informācija
lai ļautu tai zināt, ko tas ir tā, ka mēs vēlamies darīt.
>> Tātad citiem vārdiem sakot, to, ka Swift ir stipri drukāti
nozīmē, ka jums ir jādara Mazliet papildu darbu
lai saņemtu to, lai darbinātu veids, ka jūs vēlaties.
Bet, kā rezultātā, tā ir drošāk.
Un, kad jums ir jāņem vērā šiem tipiem,
lietas vienkārši atklāti sākt strādāt diezgan labi.
>> Tātad šajā gadījumā, mēs tad būtu veikt virkni konkatenācija
nepārprotami liešana vesels skaitlis uz virkni
ar ietīšanas to šajā kapitāls S String funkcija,
un tad, izmantojot string konkatenācija operators, lai mainītu mūsu etiķetes mainīgo,
un pēc tam to izdrukāt.
>> Līdz šim tik labi?
Labi, pieņemsim virzīties tālāk.
>> Tagad tur ir dažādas datu veidi, ka mēs varam izmantot, jo SWIFT.
Kā jūs esat pieraduši, mēs varam radīt mainīgu masīvu.
Un tas masīvs var tikai satur viena veida.
>> Tātad šajā gadījumā, mēs ejam, lai radītu a mainīgs bloki veseli skaitļi, kas
mēs sauksim atzīmes, un mēs varēsim uzglabāt ka šajā kvadrātiekava
formātu, kā jūs esat pieraduši uz dažādiem citiem valodu.
Bet paziņo, ka šeit mēs esam definējot pāris lietas.
pakāpes ir mainīgs variable-- mēs neizmanto Let atslēgvārdu.
Tātad tas nozīmē, ka mēs varam, tad mainīt saturs šī masīva.
Tas ir tipa Array Int, un mēs varam pateikt, ka
pamatojoties uz šiem kvadrātiekavās šeit.
>> Tagad viens no jaukas lietas par šo ir tas, ka mēs
ir pieejams daudz Papildus informācija
par masīva tikai izmantojot daži vienkārši dot apzīmējumu.
Tā, piemēram, grades.count sniedz mums
Vienību skaits, kas pastāv, ka masīvs, kuru mēs pēc tam var piekļūt diezgan
viegli vienkārši izmantojot šo dot notācija.
>> Ja vēlaties pievienot papildu priekšmeti uz šo masīva,
Jūs nevarat darīt PHP stils kur tu tikko skaidri definēt,
pie noteikta indeksa, daži vērtība ka vēlaties ievietot.
Tā vietā, izmantojiet pievienošanu metode masīva tipa
lai pievienotu šo posteni, 95, šim sarakstam.
>> Tāpēc tagad šis masīvs ir šāds contents-- 100, 0, 90, 85.
Un tagad mēs esam pievienoti 95. ka labi.
>> Ir arī citi veidi mēs varam pievienot lietas.
Jūs faktiski var izmantot sasummēt operators,
kas tiks interpretēts kā masīvs Append operācija.
Un jūs varat pievienot otru masīvs, kuru saturs ir 70 un 80,
šai masīvs.
Tāpēc tagad mums ir saturs šajā mainīgā
grades-- 100, 0, 90, 85, 95, 70 un 80.
Tas ir tikai jauka maz sintaktisko cukurs, ka Swift sniedz mums.
>> Tātad, ja mēs gribam, lai summai pakāpes, mēs esam varbūt
gatavojas vēlaties atkārtot pār katru posteni šajā cilpa.
Un mums ir, jo Swift, jēdziens kādas cilpa, kā jūs varētu gaidīt.
Bet tā, ka mēs norādītu diapazons ir nedaudz atšķirīgs.
Tātad, šajā gadījumā, lai Rezumējot visu, mēs
gatavojas izveidot pagaidu mainīgais sauc summa, lai par mums
saglabāt šo skaitu.
>> Un paziņojums mūsu för cilpa celtniecība šeit.
Par indekss 0 .. <grade.count.
Tātad šī konstrukcija, 0 .. <grades.count ir diapazons operācija, kur mēs esam
sakot, ka mēs gatavojamies radīt diapazons veseli skaitļi no 0 līdz
neieskaitot grades.count.
Tāpēc tas ir 0, 1, 2, 3, 4, 5, līdz tomēr daudzās vienu
Pirms grades.count.
>> Tātad tas ir savādāki nekā to, kā mēs būtu parasti izmanto cilpas
kur jūs varētu būt dažas indekss mainīgais, kas to ir vienāda ar 0 sākumā,
un tad integrēt ka līdz daži vērtība ir mazāka nekā elementu skaitu
šajā masīvā.
>> Tāpēc ir modifikācija tam, faktiski,
kas ļauj ļoti viegli noteikt dažādu veidu diapazonu.
Ja jūs mainīt šo diapazonu līdz trīs punkti, 0 ... grade.count,
Tas ir diapazonā no 0 līdz grades.count ieskaitot,
tas nozīmē, ka šis skaitlis ir arī tad iekļauta šajā diapazonā.
>> Bet tas ir ļoti ērts Šo precīzu lietām,
kad mums ir jāveic iterācijas nekā cilpa
jo šie indeksi ir nulle indeksētas, kā mēs redzējām arī citās valodās
arī.
Visus jautājumus par šo par cilpu?
>> Tātad tur ir netiešs definīcija Šā indeksa mainīgo,
kuru vērtība sākas ar 0, un turpina ik cilpa atkārtojuma
palielināt ar 1 līdz brīdim, kas ir vienāds ar grades.count,
kurā brīdī, cilpa aborts.
>> Ievērojiet, ka mūsu virknē interpolācija šeit,
mēs faktiski var veikt dažas vienkāršas manipulācijas uz šīm vērtībām.
Tātad indekss plus 1 patiešām veikt sasummēt šīs vērtības
jo indekss ir, šajā gadījumā, vesels skaitlis.
Un tajā brīdī, tā būs pēc tam pārvērš virkni
un interpolē šajā virknē šeit, un izdrukāt, kā mēs varētu gaidīt. .
>> Un jauka lieta par masīvu šeit ir
ka mēs arī varētu būt Notiek vērtības un nosakot vērtības
izmantojot kvadrātiekava notācija kā mēs esam redzējuši arī citās valodās, kā arī.
>> Labi, tāpēc no šejienes, mēs tagad aprēķināt mūsu summa visiem mūsu pakāpes.
Tagad veida nākamais loģisks solis būtu
darīt sadalīšanas darbību, lai atrastu out vidējo šīm atzīmēm.
Bet kaut kas svarīgs Šeit notiek kas
ir tas, ka šī summa ir varbūt vesels skaitlis.
Bet mums ir nepieciešams veikt dažus kārtot dubultā sadalījumu.
Un tas būs ārkārtīgi svarīgi, ja
mēs gribam, lai veiktu šo darbību, jo tas, ko mēs sakām
ir tas, ka mums ir nepieciešams, lai faktiski veikt sadalīšanu divos dubultspēlē.
Un atkal, jo Swift ir ļoti stingri drukāti,
mums ir skaidri noteikti visi priekšmeti līdz dubultspēlē Pirms mēs faktiski
veikt šo darbību.
>> Tātad, lai mums veikt dubultā sadalījumu,
tas nav pietiekami, lai tikai viens Šo posteņu būt dubultā.
Abas no tām ir jābūt dubultā Lai ātra
lai pārliecinātos, ka tas ir tas, ko mēs vēlamies darīt.
Tātad, mēs tam skaidri typecast summa, ko mēs esam aprēķināts iepriekš
un skaits pakāpes līdz dubultspēlē, un tad veikt šo darbību un veikalu
ka šajā jaunajā mainīgo, vai drīzāk Šī jaunā konstante sauc vidēji,
kas būs kāda veida, jūs varat iedomāties?
Double, jā.
Tātad, šajā gadījumā, mēs nav norādīt to
jo to var secināt no darbība, ko datu vidējā veids
būs.
Un Swift parasti ir diezgan laba Par to var secināt veidus.
>> Vai vēlaties redzēt šo palaist, vai es varu doties tālāk?
Es gribu, lai saglabātu turpinās.
Visus jautājumus par kādu no šo?
Liels.
>> Tagad mēs esam gatavojas sākt, lai nokļūtu labie stuff-- definēšana funkcijas,
un pāris citu veidu, kas ir unikāls Swift, ka jums ir ne
redzams citās valodās līdz šim punktam,
bet tās ir sastopamas citi valodas, kas jūs varētu atrast vēlāk.
Tātad, pirmkārt, ja jūs vēlaties lai noteiktu funkciju,
jūs definētu to ar bailīgs vārdu funkcija, un tad funkcija nosaukums,
un tad iekavās argumenti ka jūs vēlaties, ka funkcija pieņemt.
Šie argumenti ir arī specify-- generally--
jānorāda arī datu veidu, kas tie ir, ja tos var izsecināt.
Un mēs redzam, ka maz caveat tikai mazliet.
>> Tātad, šajā gadījumā mums ir funkcija sauc printGradeCount.
Mēs ejam, lai pieņemt variable-- vai drīzāk šajā gadījumā,
constant-- sauc gradebook.
Un tas būs no tips masīvs integers.
Tagad tur ir kaut kas tas ir patiešām svarīgi šeit
ka es gribu, lai jūs saprastu,.
Tas ir, ka pēc noklusējuma, šie argumenti kas dod ieguldījumu šīs funkcijas tiek
definētas ar netiešu let atslēgvārdu, kas nozīmē, ka es nevaru mainīt šo
gradebook mainīgais šeit.
Un ka veida jēga, jo jūs iet dati.
Un jūs, iespējams, nevēlaties to jānomaina no saskaņā ar jums.
Tas ir iespējams skaidri minēt ka tas ir mainīgs lielums, liekot
VAR atslēgvārds šeit.
Bet tas ir gotcha ka mēs esam pamanījuši cilvēki ir darījuši pagātnē
ir tas, ka viņi pieņēma, ka tas notiek būt mainīgs, kad, patiesībā, to
ir nemainīgs.
>> Visi pa labi, tā šeit tad, šajā gadījumā, mēs nenorādot nekādus atgriešanās veidu.
Mēs jums parādīsim, kā to izdarīt ka tikai brīdi.
Bet paziņo, ka šeit mēs esam tikai vienkāršs, ja stāvoklī.
Ja gradebook ir tukšs, kas šajā gadījumā
ir tikai īpašums šī skaitlim masīvs, tad mēs izdrukāt kaut ko.
Pretējā gadījumā mēs darām kaut ko citu.
>> Diezgan vienkārši līdz šim es domāju.
Bet mani apturēt, ja jums ir kādi jautājumi.
>> Tagad šī funkcija, vidējais, arī ņem daži argumenti, vai drīzāk viens arguments,
kas ir gradebook, un šis laiks gatavojas atgriezties dubultu veidu.
Jo tas ir skaitļošanas vidējā un tas ir
gatavojas faktiski atgriezties ka aprēķinātā vidējā uz izsaucēja līnijas.
>> Šajā gadījumā mēs norādīt atgriešanās veidu pēc bultiņu.
Un tas varētu justies veida dīvaini sākumā.
Jūs esat pieraduši lai nosakot peļņu
ierakstiet pirms nosaukuma funkciju.
Bet, ja jūs domājat par šo izteiksmē matemātikā,
kā tad, kad jums ir matemātika kas definētu funkciju,
Jums ir funkcija ar dažiem ieejas, un tā ražo produkciju.
Un tas ir tieši tas Tas ir paredzēts, lai atdarinātu.
Un tur ir pāris citās valodās kas ir līdzīga sintakse, kā arī,
bet, iespējams, ka neviens jūs esat redzējuši CS50.
Bet tomēr nevajag jaukt ar to.
Bulta nozīmē to, kas notiek nosūta atpakaļ šajā gadījumā.
Labi, tā kā mēs nokļūsim lai aprēķinātu šo vidējo?
Nu, ja gradebook ir tukšs, arī tad mēs esam
gatavojas atgriezties 0, kas varbūt saprātīgs veids, lai ārstētu to.
Es nezinu, pieņemsim nākt atpakaļ, ka mazliet.
Tas var reāli būt saprātīgs veids
lai aprēķinātu vidēji ja mums ir tukša gradebook.
>> Tad mēs vienkārši veikt mūsu summēšanas.
Ievērojiet, ka šeit mēs faktiski ir aizstājēju versiju
cilpa, kas ļauj mums atkārtot pār katru posteni masīva
un novietot katru elementu savos mainīgo.
Norādot uz pakāpē gradebook, ko mēs sakām
ir tas, ka mēs ejam, lai netieši izveidot jaunu konstanti sauc
pakāpe, kas gatavojas pārstāvēt katrs unikāls postenis gradebook
katru reizi, ka par cilpa vairākkārt uzsvērts.
Tātad pirmo reizi, ka tas ir palaist, grade būs
ir pirmais postenis gradebook.
Otro reizi tas būšu Otrais punkts, tā tālāk un tā tālāk
līdz gradebook ir izsmēlusi sevi no elementiem.
Tad mēs varēsim summa, kas grade mūsu summēts mainīgo
un atgriezties mūsu vidējais kā mēs esam redzējuši iepriekš.
OK, kādi jautājumi?
Jā?
Mērķauditorija: Man ir divi jautājumi.
Numur viens, hipotētiski, var palaižot skaitlim par šo vienu?
Vai nav jābūt dubultā, ir tas, ka ir pareizi?
DAN AMRMENDARIZ: Vai jūs varat atkārtot šo jautājumu?
Mērķauditorija: Es varu darīt vesels skaitlis kā vidējo?
DAN AMRMENDARIZ: Vai jūs varat darīt skaitlim kā vidēji?
Tātad atgriezties vesels skaitlis vidējais nevis dubultā?
>> Mērķauditorija: Return-- tevi ir, ka tieši tagad zemāk.
DAN AMRMENDARIZ: Tepat, atgriezties 0,0?
Mērķauditorija: Jā, vienkārši atgriezties 0.
Tātad tas būs vai nu 80 vai 85, bet ne 85.2.
>> DAN AMRMENDARIZ: Tātad šajā gadījumā, tāpēc tur ir pāris dažādos veidos
atbildēt, ka.
Ļaujiet man atbildēt tos kārtībā.
Tātad, ja es tikai veikt šo deklarāciju 0, 0 ir vesels skaitlis vērtība.
Un tā, ka būs izraisīt tips kļūda šajā lietā
jo tas ir gaida dubultā bet pēc tam atgriežas vesels skaitlis.
Ja es gribu, lai atgrieztos vesels skaitlis, es varu.
Es varu noteikt atgriešanās veidu int, atgriezties 0 šeit,
un neveic dubultu sadalījumu.
Bet tad mēs būtu darot skaitlim sadalījumu.
Un tā mēs tad nevarētu iegūt Vidējais ka mēs, iespējams, varētu sagaidīt.
Bet jā, mēs varam mainīt veidi šādā veidā.
>> Mērķauditorija: Un, otrkārt, jūs ir viens Double uz augšu.
Bet lejā, kad jūs do atgriezties Double Double,
tas jau automātiski atgriežoties Double formātā.
Kāpēc jums joprojām ir nepieciešams definēt ar bultiņu uz augšu ar dubultu?
>> DAN AMRMENDARIZ: So gadījumā, tā ir daļa
no the-- tik atkārtot jautājumu, jo tas netieši no atgriešanās
veidi šeit, kāda veida tas patiesībā ir, mums ir nepieciešams, lai būtu skaidri ar Swift
par to, ko mēs gribam atgriezīsies no šīs funkcijas
lai tad, kad tā pilda tips pārbaudi, tā var pārliecināties,
ka tas, ko mēs esam patiesībā rakstīts lejā faktiski atbilst to.
Tātad, tas ir sava veida kā čeka ar sevi veida situācijas.
Bet tur are--
>> Mērķauditorija: [dzirdams] arrow?
>> DAN AMRMENDARIZ: Ir gadījumi, kad mēs varam norādīt, ka mēs varam netieši
iestatīt atgriešanās veidu.
Bet šajā gadījumā, man nav domāju, ka varētu strādāt.
Tur ir daži citi sintakse ka mēs redzēsim vēlāk.
>> Labi, tāpēc šī avota kods ir mazliet atšķirīgs
jo šis parses argumentus no funkcija, ko mēs esam zvana.
Ļaujiet man parādīs, kā tā darbojas pirms mēs faktiski pāriet uz
lai dažas interesantas lietas kas notiek Swift.
>> Tātad šajā gadījumā, ja es vienkārši palaist šo kods, ievērosiet, ka tas, ko tā dara
is-- bet, tā veida dod man dīvaini kļūda.
Man vajag, lai nodot to pāris skaitļu kā komandrindas argumentu.
Tātad, pieņemsim redzēt, 150 un 80, un hit Enter lai uzzinātu, kas tas patiesībā dara.
Tas ir pieņemot katra šīs vērtības kā veseli skaitļi.
Tas ievadot tos gradebook.
Un tad tas ir veic ka vidējais aprēķins
un izvadi, ka mēs varētu gaidīt.
>> Bet acīmredzot tur ir kaut kas notiek ar šo noraidīts kaut ko
kaut kā veselam skaitlim.
Kā jūs varētu atgādināt no brīža, kad mēs bijām nodarbojas ar komandrindas argumentus
C un citās valodās, ļoti pirmais 0-th prece šajā komandrindas argumentu
saraksts ir nosaukums komandu ka mēs faktiski izpildīts.
Tātad šajā gadījumā, es esmu tikai looping pār visiem komandrindas argumentus.
Bet es to nedaru jebkādu iedomātā pārbaudiet, izlaist, ka pirmo.
Es esmu tikai tieši vai es esmu netieši pārbaudi, kas no šiem tipiem
ir veseli skaitļi pirms es tiešām veikt šo aprēķinu.
>> Un tas ir būtiski kas notiek šeit.
Par katru argumentu Process argumenti,
Es esmu gatavojas veikt kādu pārbaudi.
Un šajā gadījumā, es esmu, mēģināt vispirms konvertēt
ka arguments par skaitlim ar veicot skaidru typecast,
jo tas ir, par ieejas, virkne un faktiski nav vesels skaitlis.
>> Bet tas ir sava veida dīvaini sintaksi, ja pieņemsim grade vienāds Int (arguments).
Kas patiesībā notiek šeit ir ārkārtīgi
svarīgi, lai jūsu izmantojot SWIFT.
Tas ir, izmantojot to, kas ir sauc izvēles veids.
>> Tātad šī funkcija, Int (arguments), atgriež ne tikai skaitli, bet atgriežas
ko sauc izvēles skaitlis.
Un tā tas ir sava veida tipa virsū tipa.
Jūs varat kārtot iedomāties to kā tas atgriežas kā paketi.
Un, atverot ka paketi, tas nu
ir vesels skaitlis, kas ir rezultāts, vai tas ir absolūti neko to visu.
Un tas ir noderīgs kā kļūdu pārbaudi mehānisms, jo šajā gadījumā
mēs varam uzzināt, bija tas tipu konvertēšanas veiksmīgs?
Ja tas bija, tad tas ir faktiski nāksies vesels skaitlis iekšpusē.
Pretējā gadījumā tas notiek, ir dažas vērtība, ka mēs saucam nulle, kas
tiek uzrādīts nav skaitlim vispār.
Tas ir patiešām pārstāvis neko.
>> Un tā tas, ja būvniecība ļauj mums iztīt šo paketi,
ka obligāts saistoši.
Un, ja mēs varam iztīt ka paketes un atrast skaitli iekšā,
tad ko mēs sakām šeit ir tas, ka mēs pēc tam
pieļauj, ka vērtība, kas tiktu iekļauts šī konstante sauc pakāpes.
Un šī daļa, ja paziņojums, augšējā daļa, ja paziņojums
darbosies, jo tas Izņemiet bija veiksmīga.
>> Ja tas tikai tā notiek, ka tur bija kļūda, iespējams,
Šajā skaidri tipa pārveidi no virknes līdz veselam skaitlim, varbūt
tas ir vērtība ABC piemēram.
Un tas tiešām nav dodas pārvērst līdz veselam skaitlim.
Tad tas atgriezīsies nulle, kas nav vesels skaitlis.
Un tas, ja apgalvojums labi, tad neizdodas.
grade nebūs, jo tas nav vesels skaitlis saturu.
Un tas darbosies šis cits bloku vietā.
Jā?
>> AUDITORIJA: Nil ir N-I-L?
DAN AMRMENDARIZ: nulle ir N-I-L, jā.
>> Tāpēc tas ir iespējams, viens no vissmagāk lietas par SWIFT,
jo īpaši, ja tu esi nezāles uz iOS app
un jūs faktiski cenšas darīt kādu attīstību tur.
Tas būs kliegt pie jums par izvēles.
Tas būs lūdzot jums jautājuma zīmes un izsaukuma zīmes.
Bet tad, kad jūs skaitlis out-- ja jums veltīt kādu laiku, lai norādītas
kas notiek ar papildu veidiem, jūs ietaupīsiet sev daudz galvassāpju
kā jūs mēģināt uzrakstīt app Swift.
>> Tas patiesībā ir ļoti spēcīgs līdzeklis.
Un jums vienkārši ir ņem manu vārdu par to tagad.
Bet mēs redzēsim šo būvniecību un daži citi tas patīk
dažās no otras avota kodu, kas mēs jums parādīsim tikai mazliet.
>> Vai ir kādi sākotnējie jautājumi šeit?
Tāpēc svarīgi takeaway ir tāds, ka izvēles veids ir sava veida metatype.
Tā nu ir vērtība, un, ja tas tā ir, tad tas
varbūt ir, ka vērtību, kas saistīta ar to, vai arī tam nav nekādas vērtības whatsoever,
un to pārstāv nulli.
Šīs pārējais ir iespējams kā jūs varētu gaidīt.
>> Tātad pieņemsim perona līdz grūtības atkal.
Un šoreiz, pieņemsim to apskatīt dažus citi datu veidi, kas faktiski pastāv.
Viens no tiem ir vārdnīcas, kas ir ļoti līdzīgs Python vārdnīcām.
Tas ir nedaudz līdzīgs hash tabulu C. Tā būtībā ir kartēšana taustiņiem
kur atslēgas var būt stīgas.
Un, kad jūs meklēt šos taustiņus, šie taustiņi būs vērtība.
Tātad, tas nav gluži masīvs, bet vietā, ciešāk saistīta
uz hash karti vai hash tabulu.
>> Let 's redzēt, kā tas ir paredzēts strādāt pirms mēs faktiski
iedziļināties pirmkodu pati.
Ja es vienkārši palaist šo, nekas īsti notiek.
Tas stāsta man, ka es esmu gaidījis daži parametri šāda veida.
Tāpēc es esmu gatavojas sniegt tas dažas problēma noteikti vārdi,
tā pset0, varbūt es saņēmu 100.
Un pset1, es saņēmu 5.
Un tad uz eksāmenu, es bija tiešām labi un ieguva 30.
Un Ups, es hit atstarpi šeit.
>> Kad es hit Enter, jūs varat redzēt tā veic kādu aprēķinu.
Tajā teikts gradebook ir trīs pakāpes, pset1, pset0, eksāmens.
Un gradebook ir šo īpašo vidēji.
Tātad atkal, mēs strādājam ar šo gradebook ideju,
bet mēs ejam, lai turpinātu atkārtojot ar sarežģītību mūsu funkciju.
>> Tātad pie sākuma, mēs esam tikai notiek, lai izveidotu funkciju, kas
ir atbildīga par drukāšanu izmantošanu.
Un tur ir tas iziet funkcija, kas tikko
ar varu atmest pieteikumu.
Tas nav kaut kas jūs izmantosiet iOS app.
Tas ir tikai, šajā gadījumā, ar komandrindas argumentu.
Tālāk mēs sāksim virzās uz Xcode.
Bet tas ir īpašs ar komandu line style programma Swift.
>> Pieņemsim to apskatīt dažas no interesantas lietas šeit.
Let 's redzēt, tikai pāris interesantas lietas pieminēt varbūt
ir tas, ka manā funkciju drukāšanas skaitu pakāpēm,
jūs varētu atgādināt, ka man bija, ka sarakstu no items-- pset1, pset0 un eksāmenu.
Jūs faktiski var ātri un viegli izdarīt
, ņemot gradebook, kas ir vārdnīca, kas ir atslēgas un vērtības.
Atrast visi no atslēgas ir caur Dot atslēgas metode šeit,
un pēc tam izmantot šo joinWithSeparator, kas pēc tam veikt visas atslēgas
ka mums bija drukāti, pset1-- vai sorry, pset0, pset1, un exam--
un saķēdēt tos kopā izmantojot komatu un atstarpi
izveidot vienu garu virkni.
Tas pievienoties operācija ir tikai fenomenāli noderīga dažādos kontekstiem.
Un tā tas ir šajā joinWithSeparator.
>> Un šī ir viena lieta, kas ir mainīts no Swift 1. līdz Swift 2.
Tur izmanto, lai būtu Python style-- ja esat
iepazinušies ar Python-- Python style pievienoties metodi stīgām.
Bet kas vairs nav gadījums Swift 2.
Jūs vēlaties izmantot šo, ja vēlaties saķēdēt masīvu sīkumi
kopā ar virkni.
>> Tāpēc varbūt tad mūsu diskusija par vidēji pirms,
tas padara mazliet lielāka jēga mums noteikt vidējo funkciju
būt iespējamu divkāršu drīzāk nekā tikai skaidri Double.
Jo mums bija, ka neparasts stāvoklis, kad,
Ko darīt, ja gradebook faktiski nav vērtības, tajā?
Kas būtu vidējā peļņa?
>> Nu varbūt C jūs būtu darījis kaut ko
tāpat sniedza Sentinel vērtība, piemēram, 0.0, vai varbūt negatīvs skaitlis,
vai kaut ko vienkārši pārstāv faktu ka tur bija dažas kļūdas stāvoklis
un jūs, iespējams, nav faktiski ir spēja aprēķināt šo vidējo.
Nu skaistums, kuros paredzēts izvēles veids būtu to darīt.
Un es esmu tagad saka visus šos vārdus, bet tas faktiski neizmanto optionals.
Bet mēs redzam, ka tikai minutes kur mēs varam noteikt vidējo
būt obligāta datu tips, lai ja tas tiešām atgriež dažus datus, tad
mēs atgriezīsimies, ka dati.
Pretējā gadījumā mēs atgriezīsimies nulle, sakot, ka šis
nav jēgpilna aprēķinu.
>> Pieņemsim pāriet uz kaut ko citu.
Tātad no šejienes, mēs esam meklē Visi šie piemēri komandrindas.
Bet tiešām, ko jūs gatavojas kas nodarbojas ar ir Xcode.
Un viens no nice lietas par Xcode ir, un īpaši Swift,
ir tas, ka mums ir šis lieta, ko sauc par rotaļlaukums.
Un Playground ir nemaz iOS app.
Bet tas ļauj eksperimentēt ar Swift ļoti viegli veidā.
Jūs varat ierakstīt visu savu kodu.
Tas ir labi sintakse izcelti šeit.
Kad jūs izveidot jaunu failu, tā lūgs jūs, ja jūs vēlaties, lai izveidotu rotaļlaukums.
Bet jauka lieta par Playground ir tas, ka par tiesībām uz sava loga,
tas faktiski parādīs, izeja no jūsu kodu.
Tātad, ja es ritiniet uz leju, mēs varam redzēt, ko izejas dažādu koda rindiņas
patiesībā notiek, ir.
>> Tātad šajā gadījumā, mēs ejam, lai mainīt virzienu tikai mazliet
un runāt par kaut ko, kas ir patiešām svarīgi, lai šajā augsta līmeņa veidā
ka Swift darbojas, un to ir šī ideja slēgšanu.
Un jūs droši vien esat redzējuši šo mazliet JavaScript.
Attiecībā uz tiem no jums, kas ir CS50, slēgšana
ir ļoti populāri, ļoti labs veids, kā to izdarīt augsta līmeņa lietas modernajās valodās.
Bet tas ir arī sava veida grūti wrap galvu ap pirmo reizi.
Tātad, ja jūs meklējat pie šo Pirmo reizi, tas ir OK.
Paskatieties pirmkodu un redzēt ja jūs varat izdomāt to ārā mājās.
>> Tātad šajā gadījumā, pieņemsim, ka mēs vēlas izveidot daudz eksponentiem
ar kādu fiksētu vērtību.
Tātad šajā gadījumā es varu izveidot funkciju.
Es esmu gatavojas, lai izsauktu to jauda 2, kuras vienīgais mērķis dzīvē
ir veikt dažas ievadi un dubultā tas, un atgriešanās šo vērtību.
Ievērojiet, ka šeit es esmu pieņemot vienu datu veidu.
Tas būs mainīgs sauc x.
Tas ir tipa Double.
Un es esmu gatavojas atgriezties dubultā šeit.
Un es esmu tikai gatavojas darīt ļoti, atklāti sakot, diezgan
naivs veids dubultot šo vērtību.
Un es tev parādīšu, kāpēc šo noder tikai sekundi.
>> Ievērojiet, ka šeit mums ir šo diapazonu vēlreiz. kaut 1, dot
dot dot, 2, kas nozīmē, ka šī cilpa darbosies divas reizes.
Bet tas nozīmē fiktīvu mainīgo.
Tas nozīmē, ka es neesmu īsti gatavojas izmantos šo mainīgo jebkur
iekšā šīs cilpas.
Es tikai gribu šo līniju kodu, lai palaistu divreiz,
bez nepieciešamības zināt vērtība šajā diapazonā.
>> Tātad šajā gadījumā es skrienu rezultātu reizes x divreiz, kas būtībā
nozīmē, ka es esmu squaring šo vērtību.
Un tas notiek ar strādājam kā mēs varētu gaidīt.
Power of 2, iet vērtību 2.0 dod mums izejas jaudu 4.
3.2 strādā priekš 10.24.
>> Tagad mēs varam darīt līdzīgu lieta jaudu 3.
Bet tagad mainīt tikai diapazonu.
Par fiktīvu mainīgais 1 pa 3, reizināt 3 reizes,
un darīt to pašu.
>> Tātad tas varētu justies mazliet izdomāts.
Bet tur ir svarīgs lieta šeit, kas
ir tas, ka skatoties uz šiem divas funkcijas, tur ir
tikai viena lieta, kas ir atšķirīgs, kas ir šī vērtība ir diapazonā.
Viss pārējais par šiem diviem funkcijas, no 3 spēks un jauda 2,
ir, faktiski, ir identiski, jo tie strādā tādā pašā veidā.
>> Tātad šajā brīdī, nedaudz trauksmes zvans būtu iet off.
Cerams, ka tas, ko tu saki, jūs zināt, tas jūtas mazliet
piemēram, dublēšanos.
Varbūt tur ir tā, ka es būtu varētu rezumēju tas viss
un nodrošināt funkciju vai izveidot funkciju, kas
dara tieši to, ko es gribu, bez nepieciešamības ierakstiet to ārā skaidri.
Un tas ir tas, ko vara no slēgšanas ļauj mums darīt.
Tātad, pieņemsim to apskatīt šo.
Un es pavadīt pāris minūtes par šo, jo tas
ir diezgan svarīgi, lai Swift.
Mēs to visu laiku.
Mēs ejam, lai definētu funkciju.
Tas notiek, lai varētu saukt powerOf.
Tas būs īslaicīgi samierināties ar parametrs sauc y tipa Int.
Bet ieskatieties atgriešanās veidam.
Atgriešanās veids ir, iekavas, Double Double bultiņa.
Kas nozīmē, ka šo funkciju, Šī funkcija powerOf,
atgriežas funkciju.
Tas ir pieņemot dubultā un atgriežas dubultā.
Tā, ka var likties veida crazy, bet pieņemsim ritināt uz leju, mazliet
un skatīties, lai redzētu, kas notiek.
Mēs esam iekšā šo funkciju powerOf.
Mēs esam radot jaunu funkciju sauc exponentiator,
bet tas nav svarīgi, kas tas ir.
>> Ievērojiet, ka šis ir ievades vērtība x.
Un tas ir, ņemot dubultā un atgriežas dubultā.
Un tas ir tas pats kods, kas mēs redzējām iepriekš, izņemot to, ka vērtības 2
vai vērtība 3, kas augšējā robeža šajā diapazonā,
ir aizstāta ar šī vērtība y, kas
bija sākotnējā parametrs Mūsu powerOf funkciju.
Un šajā brīdī, mēs atgriezties exponentiator.
Mēs esam atgriešanās funkciju.
>> Tas ir veids, kā maz prātā putu.
Bet pieņemsim iedomāties, kas notiek kad es aicinu šo funkciju powerOf
un iet uz to kāda vērtība, piemēram, 2.
Ko tas nozīmē, ka Man tagad ir vērtība
2 y, kas nozīmē, ka šīs vērtības y šajā exponentiator funkcijas
būs tas, ka vērtība 2.
Bet es esmu atpakaļ šis exponentiator funkcija.
>> Tātad paziņojums ko Swift saka, ka es ir izveidota šajā gadījumā.
let kvadrāts ir definīcija, tas ir funkcija, kas pieņem dubultā
un atgriež dubultā.
Esmu izveidojis funkcija kas kvadrātu kaut
izmantojot šo mehānismu tieši šeit.
Un tiešām, kas notiek, ir ka tas ir atgriežas šo funkciju
exponentiator, bet šī vērtība y ir iesaiņota iekšpusē no tā.
Un tāpēc tagad katru reizi, kad es izmantot šo mainīgs vai šī konstante sauc
kvadrātveida, tas tā notiek uzvesties kā funkcija.
Un tā es pēc tam var zvanīt šo mainīgo tāpat kā es sauktu par funkciju,
un iet uz to numuru, piemēram, šajā gadījumā 3.
Un es tad kvadrātveida šo vērtību.
Tātad 3 brusas pēc tam kļūt 9, jo mēs varam redzēt šeit.
>> Tiešām traks, bet tas tagad ļauj man iespēju
izveidot citas powerOf funkcijas.
Tāpat kā es varu teikt, OK, arī tagad es gribu lai izveidotu jaunu funkciju, powerOf (3),
un uzglabāt kas stājas konstante sauc kubs.
Un tagad kubs ir būs atsevišķa funkcija, kas būs pēc tam
aizņemt kādu vērtību kā ieejas un kubs ka vērtību, kā mēs varam redzēt apakšējā rindā
šeit.
kubs 2 gatavojas rezultātā 8.
>> Cerams, ka diezgan veikls sīkumi.
Jūs nekad neesmu redzējis šo pirms.
Es aicinu jūs ieskatīties slēgšanu un izpētīt šo mazliet vairāk.
Tas ir patiešām spēcīgs stuff mēs redzam daudz JavaScript un dažās citās valodās.
Tas ir patiešām svarīgi izprast API kā arī
ka mēs sāksim tikai sekundē.
Jā?
>> Mērķauditorija: Kad jūs powerOf (2), iekavās, un pēc tam
cits iekavas, cits input-- jūs būtībā aizstājot laukumā.
DAN AMRMENDARIZ: Tā izskatās pašā pēdējā rindā šeit.
Tas faktiski ir pilnīgi iespējams darīt, Ķēžu kā jūs ierosināts.
Tātad powerOf (5) nozīmē to, ka mēs ejam lai būtu exponentiator no 5 līdz šeit.
Tātad tas būtībā gribam būt pats kā 4 līdz piekto varas,
jo mēs esam izveidojuši exponentiating darbojas uz piekto jaudu,
un mēs iet uz kas darbotos vērtību 4.
Un mēs šo vērtību ka mēs sagaidām, 1024.
Mērķauditorija: Un tas nav nosaukt, tāpēc tas ir vieglāk
lasīt, laukumu neatkarīgi.
>> DAN AMRMENDARIZ: Pareizi, tieši tā.
Tātad, pirms es vienkārši ielieciet to uz pastāvīgs šeit tik
ka tā ir veikusi to viegli lietot šo nosaukumu.
Jā?
>> Mērķauditorija: Šajā kontekstā powerOf, tā ir daļa
programmēšanas valoda pretstatā tam, kā jūs
domā par powerOf in [dzirdams]?
DAN AMRMENDARIZ: So Šajā gadījumā, powerOf
ir vienkārši nosaukums no funkcija, kas es noteikti šeit.
Tātad, tas nav raksturīgi ar pašu valodu,
bet tā vietā, tas ir tikai funkcija, kas ir
šis nosaukums, jo es arī tā šo nosaukumu.
Jebkuri citi jautājumi?
Viss kārtībā.
>> Tagad tas ir lieliski.
Bet jūs neesat gatavojas redzēt Slēgšanas funkciju daudz kas
Ir, piemēram, tas, kur jums noteikt, iekšā Vienas funkcijas, citu funkciju.
Un jūs varat darīt to.
Bet tas ir sava veida nav patiešām nepieciešams, vai ne?
Tāpat kāpēc es definēt šo funkcija sauc exponentiator
un pēc tam uzreiz atpakaļ.
Kāpēc es nevaru vienkārši uzreiz atgriezt šo funkciju?
>> Un patiesībā, tas ir tieši Ideja koncepciju sauc
anonīmi funkcijas, kur anonīmie funkcijas nav reāli
ir nosaukums, jo viņi nav nepieciešams, lai būtu viens.
Un tā šajā gadījumā, 7. B, mēs varam atrast tieši to.
Tas viss ir tas pats kods, dara tieši to pašu,
bet tagad mēs esam nomainījuši nedaudz tik ka šis powerOf funkcija nekavējoties
atgriež funkcija.
Ievērojiet, ka pēc atgriešanās, tur ir atvērts figūriekava.
Tas ir gaidījis šo ieguldījumu Double.
Tas ir gaidījis, ka produkcija Double.
Un tad ir atslēgvārds atdala pašu kodu.
Tātad šī ir anonīma funkcija.
Tas nav reāli ir vārds, turpretim pirms tā tika saukta exponentiator.
Bet kā mēs redzējām, tikai tiešām neatsaucās uz exponentiator
ārpus šīs funkcijas.
Tātad tas nav jautājums.
Tātad šis anonīma funkcija ir tā sauktais, jo tas ir anonīms,
bet tas joprojām tiek izmantots saistībā ar šo kodu.
>> Nākamajos pāris Ones Esmu gatavojas turpināt cerams
pūš jūsu prātā mazliet.
Mēs varam vienkāršot tas pat vairāk.
Jo kā bija astutely norādīts iepriekš,
varbūt mēs tiešām zinām, ko secināt no šo kodu, ko
produkcija šo kodu būs.
Un patiesībā, šajā anonīma funkciju, mēs varam faktiski secināt, kāda veida datus.
>> Tātad šajā vienā, mēs vairs nepieciešams skaidri definēt
datu veidu, kas ir to ieejas un izejas no šīs funkcijas
uz pāris iemeslu dēļ.
Viens ir tas, ka mēs esam definēts, augšā prototips ietverošā funkciju,
kāda veida dati šajā anonīmo funkcija būtu ieejas un izejas.
Un no otras puses, mēs var secināt no kodu
uz leju šeit, ka mēs pieņemam ieguldījums, kas ir tipa Double
un atgriežas dubultā.
>> Ievērojiet, ka šeit mums nav skaidri definēts nosaukumus argumentiem
ka šī funkcija ir pieņemt.
Un tā mēs redzam, mēs varam atsaukties uz tos parametrus, izmantojot $ 0, $ 1,
tā tālāk, un tā tālāk, atkarībā no tā, Par šo parametru skaits izmantots
Šajā funkciju.
>> Tas ir kaut kas, ka jūs dodaties redzēt daudz tas ir atvērts figūriekava
definīcija kam seko $ 0, un tad daži darbība,
un pēc tam slēgtā figūriekava.
Tas ir anonīma funkcija kas veic šo darbību.
Tā ir šo parametru, kur tas ir veids ir izsecināt.
Tas pirmais parametrs ir $ 0.
Un daži darbība ir notiek, ka $ 0.
>> Mērķauditorija: Tātad dolāra zīmi nozīmē parametrs būtībā,
un 0 nozīmē pirmā?
DAN ARMENDARIZ: Tas ir pareizi.
Tātad dolāra zīmi būtībā nozīmē parametrs, un 0 nozīmē pirmo.
Bet tas darbojas īpaši tas gadījums, kad man nav nosaukts
argumenti manā anonīmu funkciju.
>> Mērķauditorija: Vai Perl vai kaut kas ir šis dolāra zīmi, dolārs 0 tur?
DAN ARMENDARIZ: Vai kas, es atvainojos?
Mērķauditorija: Vai Perl ir Tas dolāru 0, dolārs 1--
DAN ARMENDARIZ: es neesmu pārāk pazīstams ar Perl,
bet PHP ko definē mainīgos pamatojoties uz dolāra zīmes.
Un tur var būt dažas valodas ka ir iespējas, piemēram, šis.
Patiesībā, Swift aizņemas funkcijas, piemēram, tas daudz
no daudz citām valodām.
Mēs redzam mājieni Python tajā.
Šī tipa definīcija šķiet, nāk no OCaml.
Un mums ir tikai veselu ķekars sīkumi no daudz dažādās valodās.
Tas ir viens no jauks lietas par Swift
ir tas, ka tas aizņem daudz labākā idejas no ķekars valodās
un shoehorns tos visus kopā vienā super valodā.
Patiesībā, ja jūs varētu man turpināt pūš savu prātu,
tāpēc mēs esam bijuši dara visu.
Mēs varam varbūt vienkāršot šo mazliet bit, saprotot, ka, protams,
Swift ir exponentiating funkcija uzcelta.
Ja es importēt Darwin, kas ir tikai bibliotēka, kas
piedāvā šo funkciju sauc Pow, tagad Es varu vienkāršot savu spēku funkcijas
būt šādi.
Tas būs atpakaļ šis anonīma funkcija.
>> Bet apskatīt, cik vienkārši tas ir tagad.
Šī ir anonīma funkcija, kas ir pieņemot kādu datu veidu,
un tas būs viens arguments īpaši,
Minēts 0 $, kas ir tipa Double.
Tas ir gatavojas atgriezties tipa Double.
Bet atgriešanās paziņojums tagad ir netiešs.
>> Un tā tas ir precīzs stils, kas ir ļoti, ļoti izplatīta Swift,
visā vietā.
Mēs ejam, lai redzētu šo visu laiku Swift.
Tāpēc es esmu parādot visus to tu, jo šo sintaksi.
Tas ir ļoti bieži lai redzētu, kas nozīmē, ka
ir anonīma funkcija kas ir veic
daži operācija uz šiem argumentiem.
Un tur ir netiešs atgriešanās.
Tātad tas ir pilnīgi tas pats mums to pateikt, tieši šeit.
>> Jo šī cirtaini kronšteins ir funkcija,
mēs esam veikt šo darbību uz pirmo argumentu.
Mēs ejam, lai atgrieztos, ka.
Bet šis ārējais atgriešanās ir atgriežoties ka visu funkciju,
ka viss anonīma funkcija ka mēs esam tikko izveidots.
Jebkuri citi jautājumi?
Labi, es nezinu, ja Jums puiši ir gatavi par šo,
bet mēs varam iet vēl crazier ar Swift.
Esat gatavi?
OK, tas ir lieliski.
>> Tagad mums tiešām ir iespēja to, kas ātri, jo, kā modulāra
un cik protokols pamatā tas ir, definēt mūsu pašu freaking operatoriem.
Piemēram, šajā gadījumā, mēs nebija operatoram exponentiation-- labi,
veikšanai pilnvaras kaut ko.
Bet es varu, jo Swift, noteikt jaunu Operators, kas dara tieši to.
Tātad šajā gadījumā tur ķekars sintaksi šeit.
Un es tev ļauj jums apskatīt to mājās, ja paskatās šo.
Bet mēs definējot šo infikss operators, **, kas tam ļauj mums,
nosakot, ko tas funkcija ** faktiski
tas, pieņemt kreiso roku pusē un labajā pusē,
un pēc tam atgriezties eksponents ka kreisajā pusē, lai labajā pusē.
>> Un tagad tik pēkšņi I ir radījuši jaunu skaitītāju.
Tā 2 ** 3 ir 2, uz trešo jaudu.
[Prātā putu SOUND] Tas, ko pašai būtu jums būt, piemēram,
OK, skrūves C. es eju Swift visu ceļu.
Tas ir lieliski.
Tas ir diezgan fantastisks.
>> Lai gan šis ir lielisks piemērs.
Bet es nekad reiz ārpus no šajā piemērā faktiski
definē savu operatoru.
Bet tomēr, tas rāda no jaudas Swift daudz
un kāpēc tas ir faktiski tiešām ļoti foršs.
OK, jā?
Mērķauditorija: Ja jūs esat definējot savu operatoru,
kā jūs zināt, jums nav nejauši mēģinātu izveidot operatoram, kas ir
kaut kur C, piemēram, paslēpts kaut kur Swift,
tāpat neskaidra viens, ka jūs nevar būt redzējis.
>> DAN ARMENDARIZ: Tātad, ja jūs cenšaties definēt savu operatoru,
pastāv risks, definējot viens pār esošu operatoru.
Ka tērēta detalizācijas līmenī šī Es nedomāju, ka mums ir laiks, lai dotos pāri.
Bet tas ir risks.
Un tas ir patiesībā ļoti iemesls, kāpēc Es neizmantoja caret simbolu, kas
kad mēs esam rakstīt out spēku, mēs parasti izmantot 4 maz caret 5 vai kaut ko
piemēram, ka, tikai tad, kad mēs esam Gchatting draugiem vai neatkarīgi.
Bet šajā gadījumā, kas faktiski būtu izraisījis sadursmi.
Un tāpēc es jāizvairās to tikai tāpēc, ka Man gadījās zinu šajā gadījumā
ka tas varētu izraisīt šo sadursmi.
>> Viss kārtībā.
Tagad diemžēl, par pēdējās septiņas minūtes,
Man ir, lai saglabātu pūš jūsu domas mazliet.
Tātad, ļaujiet man parādīs, dažas citas lietas, kā arī.
>> Mēs esam parādīts jums šo ideju par ņemot šos anonīmos funkcijas,
šie slēgšana, kas ļauj jums veida caurlaide funkcijas apkārt.
Jūs varat atgriezties tos.
Jūs varat manipulēt ar viņiem.
Jūs varat darīt visu veidu trakas lietas.
>> Bet viena cita lieta, kas notiek, ir noderīgi
ir spēja, pretstatā atgriežoties šo funkciju
in funkciju, nodot funkciju kā parametrs uz citu funkciju.
Jūs varētu domāt, labi, kāpēc uz Zemes es gribētu darīt kaut ko līdzīgu, ka?
>> Nu, pieņemsim, ka es gribu izmantot šo operatoru, ka es
strādāja tik grūti izveidot un piemērot to ķekars dažādiem numuriem
masīvā.
Tātad šajā gadījumā man ir masīvs integers-- 1, 4, 7, 2, 5, 10, 56.
Un es gribu dubultot tos visus.
Tā, ka mēs būtu parasti to darīt, ir vienkārši uzrakstīt
vienkāršs cilpa, kas uzsvērts, pār viņiem visiem
un veikt kaut kādas veida kvadrātveida operācija pār tiem,
ievadot šos jaunos vērtības uz jaunu mainīgs, vai drīzāk, jaunu masīvs šeit.
Un vērtība produkcijas Rezultāts ir, tad visi šie bloki,
vai drīzāk visiem tiem elementi tagad brusas.
>> Un mēs varētu darīt to pašu lieta cubing to,
bet nedaudz trauksmes zvans vajadzētu iet off
sakot, ka varbūt tur ir daži tā, ka mēs būtu
varētu vienkāršot šo mazliet.
Un patiesībā ir.
Ko darīt, ja mēs varētu radīt funkcija, kas ļauj mums
pieņemt, kā plēsoņa, funkcija?
Tātad šajā gadījumā, ņem apskatīt šos argumentus.
Mēs ejam, lai pieņemt sarakstu dubultspēlē.
Un tad mēs ejam pieņemt funkciju
lielumâ sauc f kas notiek veikt dubultu un atpakaļ dubultā.
Un visa produkcija no visu šo funkciju
sauc mapper gatavojas atgriezt masīvu sauc dubultā.
>> Ko tas tad ļaujiet man darīt, ir atkārtot pār šajā sarakstā
un darīt to pašu, bet tagad piemērot šo funkciju katram
no atsevišķajām vērtībām šajā sarakstā.
Tāpēc man nav tiešām zināt, ko f ir.
Tas nav jautājums man.
Bet tik ilgi, cik tas nepieciešams, dubultā, veic kādu darbību par to,
un pēc tam atgriež Double, es tad būtu
spēj kartēt šo funkciju pāri katru elements sarakstā.
>> Un šāda veida programmu ir sauktās augstākās kārtības funkcijām,
kur mēs iet funkcijas apkārt kā parametros
un dara lietas ar funkcijām.
Tas ir sava veida, piemēram, ņemot visiem šiem idejas, ka mēs esam iemācījušies CS50
un ņemot tos šķirot no uz nākamo līmeni.
Un tas ir viss CS51 stils sīkumi.
Un tā mēs iet dziļumā vairāk klasēs, piemēram, ka.
>> Bet tas ir arī svarīgi šeit, jo mēs
redzēt daudz funkciju ka tiek izmantoti Swift
kas būtībā nav tas, kur mēs esam
daži skaitļi, daži masīvs numuru.
Mēs ejam, lai iet, ka masīvs mūsu Mapper.
Un mēs arī gatavojamies nodot kādu funkciju, kas
mēs esam jau noteikts šeit.
Tas būs kvadrātveida.
Un mēs ejam, lai pēc tam kvadrātveida visiem šiem numuriem
un uzglabāt, ka šajā sakarā šeit.
>> Tātad šajā gadījumā mēs esam definēta mūsu pašu funkciju sauc Mapper.
Bet tas precīzs lieta ir, Patiesībā, iebūvēts Swift.
Ir dažādi funkcijas sauc karte.
Tur ir karte funkcija, tur ir samazināt funkciju,
un tur ir filtra funkcija, kas būtībā piemēro funkcijas
uz katru elementa uzskaitīt tos mainīt kaut kādā veidā.
>> Mērķauditorija: Tātad, jo jums ir pārveidot datus citā formātā
caur function--
DAN ARMENDARIZ: Right.
Jā, tā funkcija ka mēs esam pieņemot
pārveido datus kaut kādā veidā.
Šajā gadījumā, mēs bija vai nu squaring to, vai mēs cubing to,
vai tiešām mēs varētu veikt neviena darbība uz to visu.
>> Bet ļaujiet man parādīs, tad kā šis gatavojas izskatās praksē.
Un atkal, es skrienu mazliet laika. tāpēc es neesmu
gatavojas, lai varētu iet pa visu pirmkoda šeit detalizēti.
Bet es aicinu jūs to darīt.
Mēs post to, cik drīz vien iespējams, pēc šo runāt.
>> Bet, ja jūs to apskatīt to, pieņemsim, ka mums ir numuru sarakstu,
masīvs skaitu šajā mainīgās sauktie skaitļi.
Tad mēs gribam, lai veiktu šo filtrs operācija uz šiem numuriem.
Tātad filtrs ir augstāks pasūtījums funkcija, kas
pieņem masīvu un arī funkcija.
Un par katru elementu, kas masīvs, tā veic šo funkciju.
>> Ja tas atgriež taisnība, tā saglabā šo posteni.
Ja šī funkcija atgriež false, tas met prom šo posteni.
Un tad tas atgriež sarakstu ka tiek pēc tam veido visi
no šiem posteņiem, kas ir filtrēti.
>> Tātad vēl vārdiem, tas ir pati ideja, tad gradebook.
Mēs varētu būt dažādas pakāpes uz šo vērtību sauc numuriem.
Varētu būt 100 un 70, un 40, tā tālāk, un tā tālāk.
Ko šis filtrs nav, ir paziņojums ka tas, ka sintaktisko cukurs
par anonīmu funkciju.
Šī ir anonīma funkcija sakot ka parametrs, kas es esmu, pieņemot
būs, ja to ir lielāks par 70,
tad tas atgriezīsies taisnība, kas nozīmē, ka ka prece tiks saglabāti šo filtru.
Tātad pieņemsim būt mazliet konkrētākas par šo.
Ja man ir šis masīvs numuru un tā sastāv no 100, 70, un 40,
Es veikt šo filtru darbība uz katru no tiem.
Tāpēc, ka pirmais ir šī vērtība ir 100.
100 ir lielāks par vai vienāds 70 ir taisnība, kas
nozīmē, ka 100 tiek turēti Šī jaunā kopiju masīva.
70 arī iet.
Bet 40 nav.
Tātad, kas ir atgriezti passingCount ir masīvs elementu 100 līdz 70--
100, komats, 70.
Tie bija tikai divi priekšmeti, kas tika turēti.
Un tā iemesls es ātri devās cauri daudz no šiem augstas, lai veida
lietas, jo tas ir tas, ka kopējā lieta, ka jūs redzēsiet Swift diezgan
bieži, ir veikt kādu darbību Izmantojot šo anonīma funkcija sintaksi.
>> Tur ir daži cool stuff.
Slēdži ir patiešām spēcīgs Swift, Es domāju tāpat kā traks, traks spēcīgs.
Jūs varat izmantot slēdzi, un jūs faktiski var piemērot tos
diapazoniem, kas ir sava veida crazy, un darīt iedomātā sīkumi, piemēram, ka.
>> Bet pēdējos pāris minūtēm, Es gribu izlaist uz priekšu diezgan tālu
un parādīs konkrētu piemēru, kā mēs varam radīt iOS app, izmantojot SWIFT.
Tātad, ja jūs darāt izdarītu, jums ir veikt
a look at-- par Apple dokumentācija, tās
ir daudz patiešām labas konsultācijas lai izveidotu savu pirmo pieteikumu.
Un es aicinu jūs to darīt ka tāpēc, ka viņi tevi
cauri visiem soļiem ko tieši noklikšķiniet uz izveidot iOS pieteikumu.
>> Bet šeit mēs esam šo iOS app.
Un tas ir diezgan vienkāršs app tiešām.
Ja es palaist šo, ļaujiet man parādīt jums, kā tas izskatās.
Viss tas būtībā tas ir tas atvelk no interneta JSON failu
ka man ir saglabāti uz servera.
Un tas JSON fails definē attēlus, kas ļauj
man tad ciklu cauri, par manu app, attēlus no mana web serveri.
>> Tāpēc man ir šeit getNextImage.
Tas slodzes attēlu no interneta, un pēc tam parāda to uz ekrāna.
>> Tātad tas ir diezgan vienkārši.
Bet mērķis šeit ir, lai parādītu jums, kā mēs varam apvienot lietas
no pēdējo pāris nedēļu laikā CS50 uz faktiskā iOS pieteikumu.
Citiem vārdiem sakot, iespējams, viens no lietas, ko jūs vēlaties darīt
ir ir iOS lietojumprogramma, kas var pull datus no interneta
un parādīt lietotājam kādu informāciju.
Tas ir pilnīgi punkts Šīs pirmkodu šeit.
>> Tātad tur ir daudz ko teikt par kā to izdarīt faktisko iOS attīstību.
Ir daudz traks sintakse ka mēs neesam redzējuši diezgan vēl
piemēram, klasē, ko klases patiesībā ir.
Mēs varam lielā mērā ignorēt ka pagaidām.
>> Bet paziņo, ka mēs esam iekļauti ietvaros šī dažādas lietas
ka mēs esam jau redzējuši, piemēram, funkcijas, kas ir īpašas nosaukumus.
Un, kad mēs dodam tiem funkcijas pareizos vārdus
ka ir sagaidāms ar iOS, patiesībā tas jūtas mazliet maģisks.
Bet, kad jūs izveidot iOS lietojumprogramma, tur
ir īpaša funkcija vārdi, kas tiek sauktas par tālruni pati
kā pieteikums ir iekraušanas, lai mēģinātu , lai izveidotu procesu, kas faktiski
iet savu pieteikumu.
Tātad vēlreiz, tur ir daudz lietas, kas man ir spīdums pār šeit, lai par mums
runāt par to konkrēti.
Bet es aicinu jūs apskatīt varbūt otrs iOS seminārs, bet arī daži
no konsultācijas tiešsaistē, kas darīt daudz labāks darbs aprakstot
konkrēto informāciju.
>> Bet mēs varam redzēt pāris lietas, kas ir interesanti no kodu šeit.
Ievērojiet, ka mums ir, ja pārskatos.
Starp citu, viens svarīgs lieta par to, ja paziņojumiem
ir tas, ka iekavas ap Būla izteiksme ir obligāta.
Bet cirtaini bikšturi, nav obligāta, nav svarīgi, cik maz vai daudz koda rindiņas
jums ir, ja paziņojums.
Jūs nevarat būt, ja pārskatu bez cirtaini lencēm SWIFT.
>> Un tas ir labi, sava veida dumjš.
Bet tur ir vēsturiski iemesli, kas.
Tas ir paredzēts, lai saglabātu jūs no sevis.
Tāpat kā šī, piemēram, jūs nevarat novērstu cirtaini bikšturi ap ka
ja paziņojums.
Tie ir faktiski nepieciešama.
Tāpēc es aicinu jūs apskatīt šo.
Bet tur ir vēl viens būvēt, ka es gribu
lai parādītu jums par Swift ka ir jauns Swift 2.0 salīdzinot
uz vecākām versijām Swift, kurā ir šādi.
Paskatīsimies kurienes man to šeit?
>> Tātad šo funkciju sauc fetchJSON, šī funkcija
ir atbildīga par velkot šo JSON failu no URL, kas tikai tā notiek,
kas darbojas uz manu CS50 IDE.
Es tikko sāku Apache, manu JSON failu tur,
un es esmu spējīgs, tad pull ka dati no interneta, izmantojot
Šī funkcija un šo URL, kas tiek nodrošināta ar telefonu.
Tas ir ar nosacījumu par vienu bibliotēka, kas jūs izmantojat, kad
jūs darāt daži iOS app attīstību.
>> Ievērojiet, šeit, ka šis neparastais sintakses būvēt sauc aizsargu.
Un tiešām tas viss ir Swift ir veids, kā pārbaudīt
ka dažas lietas ir izpildīti pirms jums
turpināt ar pārējo funkciju.
Lai es varētu būt, izmantojot Šī izvēles veidu,
Es varētu būt atradis URL, rādīt šo NSURL funkciju
un uzglabāšanu, kas stājas URL konstante, un pēc tam pārbaudot
lai redzētu, vai URL bija nulle, jo tas gatavojas atgriezties izvēles veidu.
Un, ja tas bija nulle, tad es būtu izdrukāt kļūdu un pēc tam atgriezties.
>> Bet tā vietā, ko aizsargs ļauj mums jādara, ir tas, ka ļoti lieta,
bet nodrošina to, ka tas ir faktiski lieta, ka url
ir pareizi noteikusi NSURL.
Un, ja tā ir, tad tas Lēcieni pār to, un tas
ļaus jums turpināt url ticis pienācīgi definētas.
Bet, ja tas ir gadījumā, kas url nav pienācīgi definēts,
ja šī funkcija atgriež kļūdu vai kādu citu negaidīti lieta
faktiski notiek, šo aizsargu konstrukciju ļauj mums tad izejas šī kļūda
un atgriezties nekavējoties.
Jā?
>> Mērķauditorija: Tātad, tas ir sava veida līdzīgu IF tad cits?
DAN ARMENDARIZ: Tas ir sava veida piemēram, IF, tad cits, jā,
izņemot to, ka tas url ir, tad noteikts par visu zem šī.
Ja tas iet šo aizsargu, tad to faktiski tiks piepildīta ar datiem
un izmantojami atlikušie pirmkods savu funkciju.
Tāpēc man ir aizdomas, ka jūs gatavojas sākat redzēt šo aizsargu, kā arī.
Un ir norūpējusies par to.
>> Tik vienkārši apskatot pāris citu lietas, šīs tiesības šeit ir tas, ko,
Vai jūs domājat, tikai, pamatojoties uz to, ko mēs runājām par agrāk?
>> Mērķauditorija: Domāju, ka tas rādīsim sarakstā?
>> DAN ARMENDARIZ: Tātad tas ir tuvu.
Šī ir funkcija, kas mums ir definēt.
Un mēs ievadījusi šo funkciju kā arguments, lai šo funkciju šeit.
>> Mērķauditorija: [dzirdams], ja nav nulle.
Tātad, tas ir sarakstā, vai ne?
>> DAN ARMENDARIZ: Ja kļūda nav nulle, tā ka is-- tāpēc man ir, lai ritinātu.
Nu, pieņemsim redzēt, es nevaru īsti ritiniet pa labi šeit.
kļūda ir arguments, kas tiek nodots šim anonīmu funkciju.
Šī ir anonīma funkcija.
Tas nav nosaukuma.
Bet mēs pieņemam šīs trīs argumenti, dati, reakcija, un kļūda.
Un tas ir gatavojas atgriezties spēkā neesošu, tāpēc tas nav gatavojas atgriezties neko.
Un tas ir saturs Minētās funkcijas.
Un tad mums ir pieeja iekšpusē, kas funkcija, lai katrs no šiem argumentus.
>> Tātad, tas ir viesulis ekskursija valodas.
Bet es ceru, ka ar to, cerams, kā jūs lietojat
apskatīt dažus no konsultācijas specifiski iOS attīstību ar Swift,
it īpaši, ja jums iet uz Apple attīstītājs web page--
viņiem ir daudz tiešām labi konsultācijas, lai iegūtu Jums sākusies.
Bet cerams, ka tieši šī stunda runāt par sintaksi pati ir devusi
jums pietiekami, lai sāktu ar to.
>> Mēs publicēsim visu šī avota kods uz semināra mājas lapā
cik drīz vien iespējams, un arī slaidiem tāpēc jums ir lūgums visiem tiem.
Bet lai jums veicas ar saviem projektiem.
Un paldies jums visiem ļoti daudz nāk.
>> [Aplausi]