1 00:00:00,000 --> 00:00:11,270 2 00:00:11,270 --> 00:00:14,340 >> DANIEL Armendariz: Buna ziua, toată lumea, Bine ati venit la dezvoltarea app iOS 3 00:00:14,340 --> 00:00:15,020 cu rapidă. 4 00:00:15,020 --> 00:00:15,870 Sunt Dan Armendariz. 5 00:00:15,870 --> 00:00:18,920 Sunt precepter de calculator știință aici la Școala 6 00:00:18,920 --> 00:00:21,200 de Inginerie si Stiinte Aplicate. 7 00:00:21,200 --> 00:00:24,310 Și rapid este, de fapt un fel o limbă foarte elegant. 8 00:00:24,310 --> 00:00:27,190 Și am niște planuri pentru ziua de azi. 9 00:00:27,190 --> 00:00:31,430 Deci, pe următoarea oră sau așa vom să se uite la el însuși dezvoltare app iOS 10 00:00:31,430 --> 00:00:36,640 folosind Xcode și crearea de fapt, unele foarte de bază, aplicatii foarte simple. 11 00:00:36,640 --> 00:00:40,070 Și se uită la modul în care ați ia de fapt aceste cereri, 12 00:00:40,070 --> 00:00:42,887 și să construiască, și de fapt le-a pus pe un dispozitiv iOS. 13 00:00:42,887 --> 00:00:44,970 Unele din lucrurile pe care noi nu vom uita la 14 00:00:44,970 --> 00:00:47,540 va include lucruri cum ar fi luând de fapt o cerere 15 00:00:47,540 --> 00:00:48,940 și-l pune pe App Store. 16 00:00:48,940 --> 00:00:52,930 Există o mulțime de tutoriale online, care te va ajuta cu acest aspect de ea. 17 00:00:52,930 --> 00:00:56,230 Dar și pentru că în calitate de parte din CS50, veți obține 18 00:00:56,230 --> 00:00:59,780 să se alăture dezvoltării Apple a echipă, echipa de dezvoltare app CS50 lui. 19 00:00:59,780 --> 00:01:02,790 Dacă nu ați făcut asta încă și vă sunt afiliate cu CS50, 20 00:01:02,790 --> 00:01:04,810 Eu nu recomandăm să face acest lucru pentru că 21 00:01:04,810 --> 00:01:08,820 este modul în care ești capabil de a crea unele programe în Xcode, 22 00:01:08,820 --> 00:01:11,890 construi ei, și de fapt a pus le pe unele dintre dispozitivele dvs. iOS 23 00:01:11,890 --> 00:01:14,087 dacă aveți de fapt un dispozitiv iOS fizic. 24 00:01:14,087 --> 00:01:16,670 Dacă nu aveți un iOS fizic dispozitiv care este mai mult decât bine. 25 00:01:16,670 --> 00:01:19,810 Puteți dezvolta efectiv pentru iOS. 26 00:01:19,810 --> 00:01:22,390 Și Xcode are o simulator care vă permite 27 00:01:22,390 --> 00:01:26,570 pentru a vedea cererea dumneavoastră în acțiune pe computer. 28 00:01:26,570 --> 00:01:30,440 Dar un fel de este un lucru curat pentru a juca de fapt și de a interacționa 29 00:01:30,440 --> 00:01:34,235 cu cererea dumneavoastră pe un dispozitiv actuale. 30 00:01:34,235 --> 00:01:37,360 Deci, există o serie de cerințe pentru de fapt, nu toate de această evoluție. 31 00:01:37,360 --> 00:01:39,151 Una dintre ele este că trebuie să aveți un Mac. 32 00:01:39,151 --> 00:01:44,770 Trebuie să fie difuzate 10.9.4 sau mai târziu în scopul de a face dezvoltare rapidă cu. 33 00:01:44,770 --> 00:01:47,770 >> Puteți folosi un anterioară Versiunea de a dezvolta 34 00:01:47,770 --> 00:01:50,810 cu Objective C pentru iOS și Mac. 35 00:01:50,810 --> 00:01:53,990 Dar eu recomand, și o mulțime de exemple pe care le vom vedea astăzi, 36 00:01:53,990 --> 00:01:55,700 utilizați 10,10 Yosemite. 37 00:01:55,700 --> 00:02:00,910 Deci, dacă nu ai încă modernizate, este o scuză bună pentru a face acest lucru. 38 00:02:00,910 --> 00:02:05,480 Acum, Xcode 6.1 este cea mai recentă versiune a mediul de dezvoltare integrat 39 00:02:05,480 --> 00:02:08,979 care Apple a prevede gratuit care puteți descărca de pe App Store. 40 00:02:08,979 --> 00:02:11,220 Și eu recomandăm să rula, de asemenea cea mai recentă versiune. 41 00:02:11,220 --> 00:02:14,700 >> Dacă se întâmplă să fie difuzate o mai devreme versiune, Xcode 5 și de mai jos doar 42 00:02:14,700 --> 00:02:16,741 pur și simplu nu acceptă nici un fel rapid. 43 00:02:16,741 --> 00:02:19,490 Și versiunile beta ale șase, care au fost eliberate peste vara, 44 00:02:19,490 --> 00:02:21,770 do sprijini rapid, dar nu e a fost un număr enorm 45 00:02:21,770 --> 00:02:25,220 modificărilor în limba, destul de astfel încât codul pe care ești 46 00:02:25,220 --> 00:02:28,320 O să se uite la și pe care le s-ar putea găsi pe internet 47 00:02:28,320 --> 00:02:33,294 nu va compila de fapt în mod corespunzător în aceste versiuni anterioare ale Xcode. 48 00:02:33,294 --> 00:02:35,460 Deci, din nou, dacă nu faci încă au un cont de dezvoltator, 49 00:02:35,460 --> 00:02:38,560 Vă recomandăm să mergi la developer.apple.com. 50 00:02:38,560 --> 00:02:42,240 Înregistrează-te, creați un cont de dezvoltator, și să se alăture echipei de dezvoltare app CS50. 51 00:02:42,240 --> 00:02:45,530 Acest lucru va oferi la tine o oportunitate pentru a compila aplicații 52 00:02:45,530 --> 00:02:47,840 și le-a pus pe dispozitiv. 53 00:02:47,840 --> 00:02:49,222 OK, deci să începem. 54 00:02:49,222 --> 00:02:50,930 Primul lucru vom face este 55 00:02:50,930 --> 00:02:55,140 pentru a crea de fapt o foarte proiect simplu în Xcode 56 00:02:55,140 --> 00:02:59,530 care vă va permite să face o cerere. 57 00:02:59,530 --> 00:03:03,170 >> Deci, dacă nu aveți încă Xcode deschis, mergeți mai departe și deschideți-l 58 00:03:03,170 --> 00:03:04,270 și de a crea un nou proiect. 59 00:03:04,270 --> 00:03:06,570 Un ecran special splash se va deschide și vă va oferi 60 00:03:06,570 --> 00:03:08,800 unele opțiuni cu privire la ceea ce este că vrei să faci. 61 00:03:08,800 --> 00:03:12,170 Doar spun că doriți să creați un nou proiect, o nouă cerere. 62 00:03:12,170 --> 00:03:15,650 Această fereastră se va deschide, tu presupunând utilizați Xcode 6.1. 63 00:03:15,650 --> 00:03:17,650 Chiar acum, și pentru Durata acestui seminar, 64 00:03:17,650 --> 00:03:19,990 vom folosi vezi aplicații unice, doar 65 00:03:19,990 --> 00:03:22,590 un fel de cerere de bază pentru a obține picioarele ude. 66 00:03:22,590 --> 00:03:25,200 Și puteți ramifica pe cont propriu de acolo. 67 00:03:25,200 --> 00:03:27,660 >> Faceți clic pe Următorul în acest moment. 68 00:03:27,660 --> 00:03:30,796 Acum, aici există o serie de lucruri care v-ar dori să intre. 69 00:03:30,796 --> 00:03:32,670 Denumirea produsului este Numele proiectului dumneavoastra. 70 00:03:32,670 --> 00:03:34,859 În acest caz, eu sunt doar O să-l sun Seminar1 71 00:03:34,859 --> 00:03:36,150 pentru că este primul nostru exemplu. 72 00:03:36,150 --> 00:03:38,290 Numele Organizarea, în acest caz este doar numele meu. 73 00:03:38,290 --> 00:03:41,760 Puteți schimba desigur pentru propriul nume, sau a CS50. 74 00:03:41,760 --> 00:03:46,160 Identificator Organizare, dacă se întâmplă să aibă un site web doar să ia 75 00:03:46,160 --> 00:03:49,940 numele de domeniu în inversa, com.yourname. 76 00:03:49,940 --> 00:03:54,200 și apoi numele produsului ar trebui să apară în mod automat 77 00:03:54,200 --> 00:03:55,820 apoi ca identificatorul pachet. 78 00:03:55,820 --> 00:03:59,200 >> Evident, limba pe care suntem gând să fie utilizând pentru ziua de azi este rapidă. 79 00:03:59,200 --> 00:04:02,590 Puteți, desigur, utilizați Objective C pentru asta, dar azi va fi rapid. 80 00:04:02,590 --> 00:04:04,920 Și vom spune acum Dispozitive universal, așa 81 00:04:04,920 --> 00:04:06,900 că funcționează pe ambele iPad și iPhone. 82 00:04:06,900 --> 00:04:10,040 Și vom pleca de bază date neverificate pentru a păstra 83 00:04:10,040 --> 00:04:12,830 proiectul relativ simplu pentru moment. 84 00:04:12,830 --> 00:04:14,430 Deci, haideți să mergem mai departe și faceți clic pe Următorul. 85 00:04:14,430 --> 00:04:16,471 Și o să mă întrebi în cazul în care vreau să-l salveze. 86 00:04:16,471 --> 00:04:19,250 Voi salva doar pentru desktop-ul meu de acum. 87 00:04:19,250 --> 00:04:22,267 >> Bine, asa ca acum aceasta este ceea ce se va se întâmplă atunci când Xcode de fapt deschis. 88 00:04:22,267 --> 00:04:24,100 Și observați că foarte primul lucru ce vezi 89 00:04:24,100 --> 00:04:28,770 este acest semn de exclamare că spune ca nu identitate semnare găsit. 90 00:04:28,770 --> 00:04:31,520 Am făcut intenționat acest pe calculatorul meu si eu sunt 91 00:04:31,520 --> 00:04:34,220 în speranța că am de gând să putea să-l repara de fapt, 92 00:04:34,220 --> 00:04:37,860 pentru că vreau să văd cum acest va lucra de fapt, pe cont propriu mașină. 93 00:04:37,860 --> 00:04:40,400 >> Du-te și faceți clic pe problema fix. 94 00:04:40,400 --> 00:04:45,400 Acesta vă va întreba dacă aveți o Contul de mere dezvoltator existent. 95 00:04:45,400 --> 00:04:48,330 Aceasta este în cazul în care îmbinarea CS50 echipa de dezvoltare app 96 00:04:48,330 --> 00:04:51,240 este important, astfel încât să nu au un cont aplicație numai, 97 00:04:51,240 --> 00:04:53,690 dar aveți, de asemenea capacitatea de a semna aplicații 98 00:04:53,690 --> 00:04:56,420 și le-a pus pe dispozitiv iOS. 99 00:04:56,420 --> 00:04:58,957 Acest lucru este click not-- problema fix nu este necesară 100 00:04:58,957 --> 00:05:01,040 dacă sunteți doar de gând să construi și de a dezvolta la nivel local, 101 00:05:01,040 --> 00:05:03,520 în întregime în simulator iOS. 102 00:05:03,520 --> 00:05:05,820 >> Dar pentru acum am de gând să dezvolte și să le pună 103 00:05:05,820 --> 00:05:08,160 pe iPad meu, care va fi capabil de a difuza, de asemenea. 104 00:05:08,160 --> 00:05:10,770 Așa că vreau să adăugați efectiv acest lucru. 105 00:05:10,770 --> 00:05:13,670 Și o să întreb mă pentru ID-ul meu de mere. 106 00:05:13,670 --> 00:05:15,700 Deci va fi aceasta. 107 00:05:15,700 --> 00:05:18,940 Și am să-i aducă meu parolă, care este de peste aici. 108 00:05:18,940 --> 00:05:27,760 Deci, da-mi doar o secundă pentru a găsi că, și copie că, și lipiți-l aici. 109 00:05:27,760 --> 00:05:28,580 >> Faceți clic pe Adăugați. 110 00:05:28,580 --> 00:05:31,095 O să-mi care echipa Vreau să se alăture. 111 00:05:31,095 --> 00:05:33,240 Am de gând să fac școală de inginerie. 112 00:05:33,240 --> 00:05:35,680 Faceți clic pe Alăturați-vă. 113 00:05:35,680 --> 00:05:37,780 Ne pare rău, asta e cea greșită. 114 00:05:37,780 --> 00:05:40,730 Hai să facem asta. 115 00:05:40,730 --> 00:05:42,060 Sperăm că se va lucra. 116 00:05:42,060 --> 00:05:44,220 Asta încă nu funcționează. 117 00:05:44,220 --> 00:05:46,610 Suntem pe punctul de a cele bune aici. 118 00:05:46,610 --> 00:05:48,260 OK, aceasta ar trebui să funcționeze. 119 00:05:48,260 --> 00:05:50,816 Acum, închide. 120 00:05:50,816 --> 00:05:54,450 Acum, hai să facem școală de inginerie, faceți clic pe alegeți. 121 00:05:54,450 --> 00:06:00,190 >> Și acum sperăm după o câteva secunde can-- OK, 122 00:06:00,190 --> 00:06:02,550 Voi revoca și cerere. 123 00:06:02,550 --> 00:06:05,410 Oh, omule, asta va să nu funcționeze. 124 00:06:05,410 --> 00:06:08,890 OK, voi încerca un altul. 125 00:06:08,890 --> 00:06:11,167 Hai să facem asta aici. 126 00:06:11,167 --> 00:06:17,020 127 00:06:17,020 --> 00:06:19,310 Demo-uri live mă lipsa. 128 00:06:19,310 --> 00:06:22,540 S-ar putea să revină la doar construirea în întregime la nivel local, 129 00:06:22,540 --> 00:06:25,050 dar care ar fi în regulă în acest caz. 130 00:06:25,050 --> 00:06:28,560 >> Deci, aici, în timp ce aceasta este de fapt de lucru, ceea ce vom face este doar 131 00:06:28,560 --> 00:06:31,190 a crea un foarte simplu Suntem pe punctul de aplicare Lume. 132 00:06:31,190 --> 00:06:32,340 Deci, aceasta este Xcode. 133 00:06:32,340 --> 00:06:37,300 Și dacă nu l-au văzut încă, ea poate fi un pic intimidant la început. 134 00:06:37,300 --> 00:06:41,430 Există o mulțime de geamuri, există o mulțime de doodads în diverse domenii. 135 00:06:41,430 --> 00:06:44,300 Dar dau seama că nu există într-adevăr mai multe componente principale 136 00:06:44,300 --> 00:06:46,580 la acest mediu de dezvoltare. 137 00:06:46,580 --> 00:06:51,090 În partea stângă departe sunt toate fișierele care sunt aplicabile Program 138 00:06:51,090 --> 00:06:52,997 sau pentru proiectul dumneavoastra. 139 00:06:52,997 --> 00:06:55,080 Vom clic în jurul pe unele dintre ele și vom 140 00:06:55,080 --> 00:06:57,660 subliniază cel mai mult cele importante în timp. 141 00:06:57,660 --> 00:06:59,650 La extrema dreaptă, am au un set de atribute. 142 00:06:59,650 --> 00:07:02,920 Și toate aceste atribute, acolo sunt diferite foi de geam pentru atributele. 143 00:07:02,920 --> 00:07:06,770 Panourile se va schimba in functie de contextul conținutul principal, care 144 00:07:06,770 --> 00:07:08,290 se întâmplă să fie în centru. 145 00:07:08,290 --> 00:07:11,740 Acum mijloc poate arăta de fapt ai o varietate de lucruri, de exemplu 146 00:07:11,740 --> 00:07:13,290 codul în sine. 147 00:07:13,290 --> 00:07:17,070 Sau s-ar putea have-- de fapt, atunci când faceți clic pe rezumat care 148 00:07:17,070 --> 00:07:21,270 este, de altfel, doar o grafică Reprezentarea de utilizator ta 149 00:07:21,270 --> 00:07:25,350 interfață pentru application-- ta apoi atributele panoul 150 00:07:25,350 --> 00:07:27,334 pe foarte departe dreaptă se va schimba de fapt. 151 00:07:27,334 --> 00:07:29,750 Acum există o pereche de altă lucruri pe care vreau să subliniez. 152 00:07:29,750 --> 00:07:33,360 Puteți explora un fel de în jurul valorii de în mediul pe cont propriu. 153 00:07:33,360 --> 00:07:35,730 Dar unul dintre lucrurile care a fost foarte util 154 00:07:35,730 --> 00:07:38,470 este acest buton aici, dreapta sus al ferestrei. 155 00:07:38,470 --> 00:07:41,230 E un buton care Se pare ca pe FAR 156 00:07:41,230 --> 00:07:46,090 a lăsat are un paragraf urmată de două cercuri și sortare 157 00:07:46,090 --> 00:07:49,540 de două săgeți îndreptat departe unul de altul. 158 00:07:49,540 --> 00:07:52,640 Dacă schimbați între editor standard de, care 159 00:07:52,640 --> 00:07:55,560 este cea stângă, cea care este selectată în mod implicit, 160 00:07:55,560 --> 00:08:01,040 și cele două cercuri suprapuse fiecare parte, ceea ce veți obține de fapt 161 00:08:01,040 --> 00:08:02,210 sunt o vedere dublă panou. 162 00:08:02,210 --> 00:08:04,240 >> Și acest lucru este de fapt Va fi util pentru noi 163 00:08:04,240 --> 00:08:07,330 atunci când avem nevoie pentru a lega articole în UI la codul. 164 00:08:07,330 --> 00:08:09,330 Și vom vorbi mai multe despre că într-o clipă. 165 00:08:09,330 --> 00:08:12,050 Dar dau seama că dacă te mai multe geamuri de acest gen, 166 00:08:12,050 --> 00:08:15,830 vă puteți simplifica vizualizarea doar un pic făcând clic pe spate 167 00:08:15,830 --> 00:08:20,680 pe un singur editorul. 168 00:08:20,680 --> 00:08:21,580 Până acum, bine. 169 00:08:21,580 --> 00:08:24,560 Deci, practic avem codul de pe stânga, atributele pe dreapta, 170 00:08:24,560 --> 00:08:28,260 și orice este lucrăm aici chiar în centrul orașului. 171 00:08:28,260 --> 00:08:30,390 >> Deci, aici am dat click pe rezumat principal. 172 00:08:30,390 --> 00:08:33,350 Și rezumat, din nou, este un mod în Xcode 173 00:08:33,350 --> 00:08:38,110 pe care le puteți crea de fapt utilizator ta interfață folosind doar drag and drop 174 00:08:38,110 --> 00:08:39,130 Tehnici. 175 00:08:39,130 --> 00:08:41,190 Și astfel pentru foarte noastră prima aplicare acest 176 00:08:41,190 --> 00:08:42,720 este exact ceea ce vom face. 177 00:08:42,720 --> 00:08:45,950 Vom merge în jos la porțiune dreapta foarte mult mai mici 178 00:08:45,950 --> 00:08:49,900 a ecranului, care conține o varietate de elemente de utilizator 179 00:08:49,900 --> 00:08:53,270 pe care le puteți apoi faceți clic și glisați pentru a crea interfața de utilizator. 180 00:08:53,270 --> 00:08:55,550 >> Acum, toate acestea elemente sunt numite vizualizări 181 00:08:55,550 --> 00:08:57,370 pentru că acestea furnizează un fel de vedere. 182 00:08:57,370 --> 00:09:00,190 Există o vizualizare imagine, pentru exemplu, pentru a arăta de fapt 183 00:09:00,190 --> 00:09:01,740 o imagine pe interfața cu utilizatorul. 184 00:09:01,740 --> 00:09:04,310 Există o vedere tabel pentru de fapt arată un tabel. 185 00:09:04,310 --> 00:09:05,190 Deci, pe și așa mai departe. 186 00:09:05,190 --> 00:09:08,250 Exista o mare varietate de opinii care le puteți selecta aici. 187 00:09:08,250 --> 00:09:11,100 Deci, doar pentru acum mergem pentru a căuta o etichetă. 188 00:09:11,100 --> 00:09:13,550 Puteți derula doar prin toate listele care e acolo. 189 00:09:13,550 --> 00:09:15,460 Dar nu e de căutare bar în partea de jos 190 00:09:15,460 --> 00:09:19,460 care face mai ușor de identificat vizualizari specifice pe care le de fapt 191 00:09:19,460 --> 00:09:22,020 vrea să trageți în interfața de utilizator. 192 00:09:22,020 --> 00:09:23,560 >> S-au găsit eticheta mea. 193 00:09:23,560 --> 00:09:28,430 Am de gând să-l trage aici, direct pe cererea mea de probă. 194 00:09:28,430 --> 00:09:30,130 Chiar acolo, în mijlocul arată bine. 195 00:09:30,130 --> 00:09:33,180 Și am de gând să tastați "Hello World!" 196 00:09:33,180 --> 00:09:33,810 Hit Enter. 197 00:09:33,810 --> 00:09:34,877 Acum am o etichetă. 198 00:09:34,877 --> 00:09:36,960 Ea nu arata ca e centrat destul de corect. 199 00:09:36,960 --> 00:09:38,500 Deci, eu pot încerca să re-centru-l. 200 00:09:38,500 --> 00:09:42,100 Din fericire oferă acestea ghiduri pentru a face lucrurile mult mai ușor. 201 00:09:42,100 --> 00:09:44,130 Am de gând să încerc să-l compilați. 202 00:09:44,130 --> 00:09:46,570 Sperăm că aceasta va funcționa de fapt aici. 203 00:09:46,570 --> 00:09:52,870 Și dacă nu, într-o clipă acesta va apărea, de fapt, pe iPad mea. 204 00:09:52,870 --> 00:09:54,360 E chiar aici. 205 00:09:54,360 --> 00:09:55,060 Nu este. 206 00:09:55,060 --> 00:09:56,590 >> OK, deci asta este. 207 00:09:56,590 --> 00:09:57,160 Am terminat. 208 00:09:57,160 --> 00:09:58,868 Ne-am creat foarte noastră primul aplicare. 209 00:09:58,868 --> 00:10:01,330 Acum, evident, acest lucru nu face nimic. 210 00:10:01,330 --> 00:10:02,280 E doar o etichetă. 211 00:10:02,280 --> 00:10:07,350 Nu e nici o legătură între interfața utilizator și codul. 212 00:10:07,350 --> 00:10:10,130 Deci, dacă am vrut de fapt pentru a crea această conexiune, 213 00:10:10,130 --> 00:10:14,790 dacă de fapt am vrut sa avem un fel comunicării între elementele 214 00:10:14,790 --> 00:10:17,540 că există, pe de Cinema și codul care 215 00:10:17,540 --> 00:10:19,810 ne permite să controleze aceste elemente, atunci 216 00:10:19,810 --> 00:10:23,570 avem nevoie de fapt de uita-te la codul în sine. 217 00:10:23,570 --> 00:10:27,000 >> Deci, asta este ceea ce se numește ViewController.swift. 218 00:10:27,000 --> 00:10:30,080 Și pentru, în special pentru dvs. primele câteva programe, 219 00:10:30,080 --> 00:10:33,120 acest lucru va fi un fel de cea mai mare parte a codului pe care le enter-- 220 00:10:33,120 --> 00:10:35,980 va fi în acest document aici. 221 00:10:35,980 --> 00:10:38,390 Există o mulțime de lucruri care este aici pana acum, nu? 222 00:10:38,390 --> 00:10:42,660 E UI import clasă kit, trece peste, [? funk,?] toate aceste diferite lucruri. 223 00:10:42,660 --> 00:10:45,820 Și nu e destul de clar ce este că toate acestea înseamnă. 224 00:10:45,820 --> 00:10:48,570 Așa că haideți să facem un pas înapoi departe de Xcode pentru un pic 225 00:10:48,570 --> 00:10:52,420 si uita-te la limba în sine, rapid. 226 00:10:52,420 --> 00:10:56,370 >> Deci, cu rapid, a fost în proiectare și dezvoltare 227 00:10:56,370 --> 00:10:58,645 de la Apple pentru aproximativ patru ani la înțelegerea mea. 228 00:10:58,645 --> 00:11:01,270 Și există o serie de caracteristici cu privire la aceasta, care sunt foarte elegant. 229 00:11:01,270 --> 00:11:03,910 În primul rând, este compilat limbă, la fel ca C. 230 00:11:03,910 --> 00:11:06,120 Deci, va trebui mai întâi să compila o și apoi rulați-l 231 00:11:06,120 --> 00:11:09,580 înainte de a putea efectiv executa codul care rezultă. 232 00:11:09,580 --> 00:11:14,250 Dar există, spre deosebire de C, un interactiv solicita pe care le puteți rula de fapt 233 00:11:14,250 --> 00:11:16,680 și tastați comenzi arbitrare în. 234 00:11:16,680 --> 00:11:20,280 Și foarte mult ca o consolă JavaScript, care s-ar putea să fie familiarizat cu acum, 235 00:11:20,280 --> 00:11:24,506 de fapt va evalua cele comenzi și să ofere pentru a vă ieșire. 236 00:11:24,506 --> 00:11:26,380 Și le-am luat chiar că la nivelul următor 237 00:11:26,380 --> 00:11:29,100 și le-am creat ceva numitele locuri de joacă în Xcode 238 00:11:29,100 --> 00:11:31,720 care vă permit să de lucru vizual cu cod. 239 00:11:31,720 --> 00:11:34,910 Și vom vedea de fapt câteva exemple de faptul că, în doar un pic. 240 00:11:34,910 --> 00:11:41,680 Este bazat pe C. C sta la baza aceasta, deoarece toate compilatoare 241 00:11:41,680 --> 00:11:46,820 a crea cod din C și a crea codul obiect din ea. 242 00:11:46,820 --> 00:11:49,240 Dar chiar acțiuni relativ mic sintaxă. 243 00:11:49,240 --> 00:11:50,721 Se va arăta destul de diferit. 244 00:11:50,721 --> 00:11:51,970 Vor fi unele asemănări. 245 00:11:51,970 --> 00:11:54,140 Dar nu vor fi destul de câteva diferențe 246 00:11:54,140 --> 00:11:57,200 în comparație cu, să zicem, JavaScript sau PHP. 247 00:11:57,200 --> 00:11:59,070 Și vom litera acestea într-o clipă. 248 00:11:59,070 --> 00:12:01,420 >> Acum, unul dintre cele mai mari lucruri despre rapid asta e frumos 249 00:12:01,420 --> 00:12:05,650 este că, mai ales în comparație la C, este menit să fie în siguranță. 250 00:12:05,650 --> 00:12:08,100 Totul în el este menit să fi foarte puternic tastat. 251 00:12:08,100 --> 00:12:10,780 De fapt, e aproape enervant la început, atunci când primul 252 00:12:10,780 --> 00:12:15,610 începe să lucreze cu rapid, doar cât de mult impune tipuri de pretutindeni. 253 00:12:15,610 --> 00:12:17,860 Orice lucru care este un șir trebuie să rămână un șir. 254 00:12:17,860 --> 00:12:22,100 Este foarte dificil pentru a sorta de convertit ea sau constrânge în altă formă. 255 00:12:22,100 --> 00:12:23,800 >> Și din nou, vom afișa exemple în acest sens. 256 00:12:23,800 --> 00:12:26,830 Dar în cele din urmă seama că acest lucru este menit pentru a vă proteja, 257 00:12:26,830 --> 00:12:32,010 și de tine vreau să spun codul, de la crashing într-un fel oribil când 258 00:12:32,010 --> 00:12:34,330 Ai un fel de tip nepotrivite. 259 00:12:34,330 --> 00:12:36,040 Și din nou, lucra cu el. 260 00:12:36,040 --> 00:12:40,210 Pentru că va fi frustrant la început în timp ce încerca să dau seama de ce anume 261 00:12:40,210 --> 00:12:43,070 vei primi acest neobișnuit error ocupă cu tipuri. 262 00:12:43,070 --> 00:12:45,350 Dar va fi în valoare de ea în cele din urmă. 263 00:12:45,350 --> 00:12:47,267 >> Ea se referă la automat de management al memoriei, 264 00:12:47,267 --> 00:12:49,100 deci nu mai face tu trebuie să se ocupe cu lucruri 265 00:12:49,100 --> 00:12:51,400 ca malloc și gratuit și toate aceste felul de lucruri. 266 00:12:51,400 --> 00:12:53,066 Și este, de asemenea, proiectat pentru generalități. 267 00:12:53,066 --> 00:12:58,360 Astfel, în timp ce putem folosi un Xcode la crea iOS aplicații și aplicații Mac, 268 00:12:58,360 --> 00:13:00,380 putem, de asemenea, pur și simplu utiliza ca un limbaj de scripting. 269 00:13:00,380 --> 00:13:03,660 Și astfel încât să putem folosi un fel de loc de PHP sau în locul 270 00:13:03,660 --> 00:13:07,800 de Python de efectiv analiza și proces rapid 271 00:13:07,800 --> 00:13:09,800 unele date pe care le avem pe calculatorul nostru. 272 00:13:09,800 --> 00:13:13,290 >> Ea are o mare varietate de moderne caracteristici, optionalele, mutabilitate, 273 00:13:13,290 --> 00:13:17,900 generice, de închidere, și o mulțime de acest lucruri pe care poate sau nu poate recunoaște. 274 00:13:17,900 --> 00:13:22,810 Și e doar un fel de nefericit parte din limbajul pe care unele dintre acestea 275 00:13:22,810 --> 00:13:26,700 un fel de elemente futuriste, moderne, care sunt conținute în elementele sunt 276 00:13:26,700 --> 00:13:34,520 astfel adânc înrădăcinată că, de fapt voi Trebuie să te învețe CS50.5 un pic. 277 00:13:34,520 --> 00:13:37,305 >> Trebuie să învățăm un pic mai mult despre unele dintre caracteristicile în ordine 278 00:13:37,305 --> 00:13:40,180 pentru a înțelege cu adevărat ce se întâmplă pe și pentru ca poti sa te uiti la cod 279 00:13:40,180 --> 00:13:42,450 și nu se simt total pierdut. 280 00:13:42,450 --> 00:13:44,820 Și veți vedea ce vreau sa spun prin faptul că, în doar un minut. 281 00:13:44,820 --> 00:13:47,830 OK, deci let's-- destul de aceasta fel de chestii teoretice. 282 00:13:47,830 --> 00:13:52,450 Să ne uităm la noastre de fapt, Primul program de rapid. 283 00:13:52,450 --> 00:13:53,590 Este o linie de cod. 284 00:13:53,590 --> 00:13:57,690 Linia 14 chiar aici, ea spune imprimare l n salut CS50. 285 00:13:57,690 --> 00:14:01,160 >> Deci, există o serie de lucruri pe care e foarte diferit despre acest raport 286 00:14:01,160 --> 00:14:04,140 la lucruri care v-ar putea obișnuit de la C, de exemplu. 287 00:14:04,140 --> 00:14:08,390 Una dintre ele este că nu există nici o intmain, nu e nici o includ secțiune, 288 00:14:08,390 --> 00:14:10,790 există nimic de chestiile astea suplimentar. 289 00:14:10,790 --> 00:14:13,790 Include, ca etalon I / O, cum ar fi bibliotecile 290 00:14:13,790 --> 00:14:16,580 care oferă de fapt caracteristici standard ale limbajului, 291 00:14:16,580 --> 00:14:19,180 sunt incluse în mod automat ca parte din biblioteca standard SWIFT 292 00:14:19,180 --> 00:14:20,680 și care sunt importate automat. 293 00:14:20,680 --> 00:14:23,740 Nu trebuie să faci care import manual. 294 00:14:23,740 --> 00:14:27,360 >> Intmain nu există pentru că principalul punct de intrare pentru codul de 295 00:14:27,360 --> 00:14:29,470 este, de fapt la început a codului. 296 00:14:29,470 --> 00:14:32,000 Deci, orice cod care aveți pornind de la început 297 00:14:32,000 --> 00:14:34,940 vor fi de fapt executate la început. 298 00:14:34,940 --> 00:14:36,520 Deci, acest simplifică într-adevăr foarte mult. 299 00:14:36,520 --> 00:14:38,470 Observați de asemenea, că nu există nici o virgulă. 300 00:14:38,470 --> 00:14:41,040 Nu sunt semne punct și virgulă în această limbă. 301 00:14:41,040 --> 00:14:43,261 Ai pus o declarație pe o linie individuală 302 00:14:43,261 --> 00:14:45,510 și apoi următoarea linie reprezintă altă declarație. 303 00:14:45,510 --> 00:14:47,420 Dacă doriți să puneți Declarații mulitiple on-line, 304 00:14:47,420 --> 00:14:49,086 atunci va trebui separați prin punct și virgulă. 305 00:14:49,086 --> 00:14:50,940 Dar pentru cea mai mare parte, pentru stil bun, suntem 306 00:14:50,940 --> 00:14:56,530 nu vom vedea semne punct și virgulă pentru În sensul declarațiilor de separare 307 00:14:56,530 --> 00:14:58,420 în rapidă. 308 00:14:58,420 --> 00:14:59,820 Deci, cum face acest lucru de fapt? 309 00:14:59,820 --> 00:15:04,080 Ei bine, foarte mult ca C noi de fapt, trebuie să compilați asta. 310 00:15:04,080 --> 00:15:10,640 Și astfel încât să putem face asta prin utilizarea c rapidă și apoi 1.swift. 311 00:15:10,640 --> 00:15:13,850 Și apoi, după un cuplu minute aceasta va compila 312 00:15:13,850 --> 00:15:16,340 și apoi pot rula element una. 313 00:15:16,340 --> 00:15:19,691 Și mai mult decât va spune doar "Bună ziua CS50." 314 00:15:19,691 --> 00:15:20,690 Awesome, deci nu vom merge. 315 00:15:20,690 --> 00:15:22,273 E primul nostru program de lume salut. 316 00:15:22,273 --> 00:15:24,790 Să trecem la numărul doi. 317 00:15:24,790 --> 00:15:30,450 >> Acum, în astea-- acest lucru sa schimbat ușor, pentru că în timp ce în mod normal 318 00:15:30,450 --> 00:15:34,720 do-- în fapt mereu ai de compila o aplicație rapidă înainte 319 00:15:34,720 --> 00:15:37,180 executați de fapt o it-- de caracteristicile mare 320 00:15:37,180 --> 00:15:40,230 pe care am făcut aluzie la mai înainte a fost că rapidă poate fi utilizat efectiv în fel 321 00:15:40,230 --> 00:15:43,390 unui mod pseudo-interpretativă, acolo este de fapt ca un interpret. 322 00:15:43,390 --> 00:15:46,690 Dar ce va face este acolo este, de fapt, o aplicație rapidă 323 00:15:46,690 --> 00:15:47,520 pe care le poate rula. 324 00:15:47,520 --> 00:15:51,050 >> Deci, de exemplu, dacă tastați doar rapid aici, ce se va întâmpla 325 00:15:51,050 --> 00:15:52,330 este că veți primi un prompt. 326 00:15:52,330 --> 00:15:59,040 Și aveți posibilitatea să tastați rapid ta cod, imprimați salut, și rulați-l. 327 00:15:59,040 --> 00:16:01,867 Și va print-- de fapt bine, aceasta nu sa imprimat în acest caz 328 00:16:01,867 --> 00:16:04,450 pentru că imprimat centrat afară, care nu este vizibil aici. 329 00:16:04,450 --> 00:16:06,660 Dar este, de fapt capabil să funcționeze. 330 00:16:06,660 --> 00:16:09,580 Și astfel, în acest caz, eu sunt doar va folosi acest lucru ca un script. 331 00:16:09,580 --> 00:16:11,259 Și eu pot rula de fapt, acest cod acolo. 332 00:16:11,259 --> 00:16:13,800 Deci, modul în care am rulat de fapt aceasta va fi puțin diferit, 333 00:16:13,800 --> 00:16:15,710 dar veți vedea că, în doar o clipă. 334 00:16:15,710 --> 00:16:18,890 Acum, în acest caz, ceea ce vom să faci este să definească mai întâi o variabilă. 335 00:16:18,890 --> 00:16:22,160 Deci, acesta este modul în care definim o variabilă în rapid, 336 00:16:22,160 --> 00:16:25,900 este vom folosi cuvântul cheie sa, a urmat prin numele variabilei, 337 00:16:25,900 --> 00:16:29,280 iar apoi oferim ceva inițializare de date opțional. 338 00:16:29,280 --> 00:16:34,660 Deci, acest caz vom definirea o constantă numită nume, 339 00:16:34,660 --> 00:16:37,775 și vom folosi faptul că, în producția de linia noastra de imprimare 340 00:16:37,775 --> 00:16:39,590 la foarte de jos, salut numele. 341 00:16:39,590 --> 00:16:43,260 >> Acum, observați că mai degrabă decât folosind% s, putem îngloba numele acestei 342 00:16:43,260 --> 00:16:49,960 variabil în / () și să poată înlănțui în conținutul acestui 343 00:16:49,960 --> 00:16:51,790 șir în acest șir. 344 00:16:51,790 --> 00:16:56,510 Acum, spre deosebire de C, string este o Real real în rapid. 345 00:16:56,510 --> 00:16:59,240 Și așa stă alături int și alături de 346 00:16:59,240 --> 00:17:02,220 dublu foarte ușor și, bineînțeles, comparat 347 00:17:02,220 --> 00:17:05,450 la unele dintre celelalte limbi care le-am văzut. 348 00:17:05,450 --> 00:17:07,980 Deci, acest lucru ar funcționa efectiv la fel ca și v-ați aștepta. 349 00:17:07,980 --> 00:17:10,540 >> Eu pot rula 2.swift. 350 00:17:10,540 --> 00:17:14,390 Și vedem că numele meu este de fapt îmbinate în "Hello Dan." 351 00:17:14,390 --> 00:17:16,050 OK, minunat. 352 00:17:16,050 --> 00:17:17,485 Mutarea la numărul trei. 353 00:17:17,485 --> 00:17:19,359 Acum că a fost un pic de o minciună albă pe care am 354 00:17:19,359 --> 00:17:23,369 a spus că modul în care ne declarăm variabile a fost să utilizeze cuvântul cheie lit.. 355 00:17:23,369 --> 00:17:27,640 În multe ori ca tine, eventual se poate face doriți să utilizați lase, pentru că ceea ce face ca 356 00:17:27,640 --> 00:17:29,280 este definește o constantă. 357 00:17:29,280 --> 00:17:33,010 Și asta spune rapid că se poate optimiza viteza de aplicare dumneavoastră 358 00:17:33,010 --> 00:17:36,230 pentru că știe că variabilă nu se va schimba. 359 00:17:36,230 --> 00:17:38,760 >> Deci, să evalueze cu atenție când ai de gând să utilizeze 360 00:17:38,760 --> 00:17:41,382 o variabilă pentru scopul modificarea acesteia. 361 00:17:41,382 --> 00:17:43,340 Și când ai de gând să a crea o variabila doar 362 00:17:43,340 --> 00:17:47,010 să dețină unele date și care este nu de fapt de gând să se schimbe. 363 00:17:47,010 --> 00:17:50,150 Deci, acest concept de imutabilitatea, nu este de fapt de gând să se schimbe, 364 00:17:50,150 --> 00:17:53,740 este unul important, chiar ca de jos ca definirea variabilelor. 365 00:17:53,740 --> 00:17:56,870 Deci, aici ne-am definit un nume, lasa numele, iar în acest caz 366 00:17:56,870 --> 00:18:02,120 este o constantă, care este de tip șir, și este egală cu Dan. 367 00:18:02,120 --> 00:18:05,580 >> Astfel, în timp ce în starețului versiune, ea infers-- și cu "o" 368 00:18:05,580 --> 00:18:08,220 Adică rapid swift-- deduce tipul de date 369 00:18:08,220 --> 00:18:10,850 că am intrat în variabila. 370 00:18:10,850 --> 00:18:12,930 În acest caz, putem fi explicit. 371 00:18:12,930 --> 00:18:17,590 Așa că haideți să atunci numele acestei variabilă este numele, apoi un colon. 372 00:18:17,590 --> 00:18:21,350 Și după colon face noi specifica tipul de date. 373 00:18:21,350 --> 00:18:24,694 Deci, nu mai este numele int sau Numele șir sau ceva de genul asta. 374 00:18:24,694 --> 00:18:26,860 Dar, în loc lăsa etichetă, suntem definirea sau nu 375 00:18:26,860 --> 00:18:29,090 e constant sau variabil, urmat de numele, 376 00:18:29,090 --> 00:18:31,870 urmată de tipul de opțional. 377 00:18:31,870 --> 00:18:34,730 >> Deci, în acest caz, suntem definirea acest nume este un șir. 378 00:18:34,730 --> 00:18:35,790 Ne spun este Dan. 379 00:18:35,790 --> 00:18:39,270 Și acum am o altă variabilă, în acest caz se numește etichetă. 380 00:18:39,270 --> 00:18:42,090 Dar observați că este prefix cu cuvântul cheie var. 381 00:18:42,090 --> 00:18:44,430 Mijloacele var cuvinte cheie că această variabilă poate 382 00:18:44,430 --> 00:18:48,720 fi schimbat la un moment ulterior în timp, undeva în codul 383 00:18:48,720 --> 00:18:52,480 putem de fapt și schimba nu ne va da orice eroare special. 384 00:18:52,480 --> 00:18:56,760 >> Putem face concatenarea standard de Operatorul aici folosind simbolul plus 385 00:18:56,760 --> 00:19:00,130 pentru a adăuga de fapt nostru nume în acest șir. 386 00:19:00,130 --> 00:19:02,921 Și atunci putem imprima așa cum am văzut în urmă doar o clipă. 387 00:19:02,921 --> 00:19:04,920 Acum, să spunem că doriți să creați o variabilă 388 00:19:04,920 --> 00:19:06,586 dar nu vrei să-l inițializa încă. 389 00:19:06,586 --> 00:19:08,590 Nu vrei încă să pune orice date în cadrul acestuia. 390 00:19:08,590 --> 00:19:11,760 Ei bine, trebuie să-i spuneți rapidă ce tipul de date 391 00:19:11,760 --> 00:19:16,430 va fi înainte de a putea de fapt definesc în mod corespunzător. 392 00:19:16,430 --> 00:19:20,360 >> Deci, în acest caz, când ne-am definit o variabilă numită grad trebuie să fie 393 00:19:20,360 --> 00:19:24,450 explicit despre tipul său, pentru că nu se poate deduce doar cauți 394 00:19:24,450 --> 00:19:27,300 la datele inițializată pe care le furnizați la acesta. 395 00:19:27,300 --> 00:19:30,050 Ea ne va da o eroare dacă Tip doar calitate var, de exemplu, 396 00:19:30,050 --> 00:19:31,830 deoarece nu are nici un tip de aceea. 397 00:19:31,830 --> 00:19:33,353 Deci, calitate = 100. 398 00:19:33,353 --> 00:19:35,790 Așa că 100 este un număr întreg, ea se potrivește foarte bine în acel. 399 00:19:35,790 --> 00:19:36,998 Aceasta va continua să funcționeze. 400 00:19:36,998 --> 00:19:40,350 401 00:19:40,350 --> 00:19:43,022 Putem vedea cum atunci am poate înlănțui acest lucru în. 402 00:19:43,022 --> 00:19:44,730 Acum, s-ar putea fi ispitit, dacă tu de fapt 403 00:19:44,730 --> 00:19:48,610 a vrut să înlănțui Grad într-un alt șir de text, 404 00:19:48,610 --> 00:19:52,560 într-un alt șir, care v-ar tocmai folosesc același operator de concatenarea. 405 00:19:52,560 --> 00:19:54,630 Și care ar fi în mod normal adevărat. 406 00:19:54,630 --> 00:20:00,540 Dar rapidă nu vă va permite să schimba implicit tipul de date. 407 00:20:00,540 --> 00:20:03,440 Deci, în acest caz, aceasta linie, 25, va eșua 408 00:20:03,440 --> 00:20:06,650 deoarece clasa este o întreg și nu un șir. 409 00:20:06,650 --> 00:20:08,760 Și există o nepotrivire set de tipuri. 410 00:20:08,760 --> 00:20:11,780 Deci, va trebui să fie explicit, atunci când doriți să schimbați aceste date, 411 00:20:11,780 --> 00:20:14,080 atunci când doriți să constrânge această date într-un tip diferit 412 00:20:14,080 --> 00:20:17,250 și spune, OK, eu doresc să ia acest grad, care este un număr întreg, 413 00:20:17,250 --> 00:20:19,050 și-l transforma într-un șir. 414 00:20:19,050 --> 00:20:23,970 >> Așa că am să ia o capitală s String toate tipurile, veți observa, sunt capitalizate, 415 00:20:23,970 --> 00:20:26,280 Int, cu două paturi, String, așa mai departe și așa mai departe. 416 00:20:26,280 --> 00:20:28,930 Toate acestea sunt capitalizate doar pentru a face lucrurile mai ușoare. 417 00:20:28,930 --> 00:20:32,240 Și vom spune valorifica String trece în clasa a-l. 418 00:20:32,240 --> 00:20:35,020 Și va crea o șir din care întreg. 419 00:20:35,020 --> 00:20:37,970 Și atunci putem înlănțui cele două foarte frumos. 420 00:20:37,970 --> 00:20:40,500 Orice întrebări cu privire la aceste lucruri până acum? 421 00:20:40,500 --> 00:20:43,770 Bine, hai să ara prin pe locul patru. 422 00:20:43,770 --> 00:20:47,870 >> Acum, hai sa vorbim despre unele mai avansate structuri, cum ar fi tablouri si bucle. 423 00:20:47,870 --> 00:20:54,920 Și, spre deosebire de C, tablouri în rapidă nu sunt reprezentate de indicii. 424 00:20:54,920 --> 00:20:58,730 Trimiteri in rapid, deși ele există, numite 425 00:20:58,730 --> 00:21:02,840 cum ar fi indicii nesigure sau unele tip similar ca aceasta, 426 00:21:02,840 --> 00:21:04,950 ei nu sunt expuși la tine în mod normal. 427 00:21:04,950 --> 00:21:07,300 Deci, acesta devine foarte dificil pentru tine de a manipula 428 00:21:07,300 --> 00:21:10,020 memoria direct de pe computer. 429 00:21:10,020 --> 00:21:11,670 >> Deci, matrice sunt doar un tip de date. 430 00:21:11,670 --> 00:21:16,830 Și ei referire folosirea acestui gen notație de standard suport pătrat 431 00:21:16,830 --> 00:21:18,280 care le-ați văzut înainte. 432 00:21:18,280 --> 00:21:21,130 Dar atunci când doriți de fapt să defini un tip de o variabilă 433 00:21:21,130 --> 00:21:24,330 ca o matrice de unele tip special, atunci 434 00:21:24,330 --> 00:21:27,150 pune acest tip între paranteze drepte. 435 00:21:27,150 --> 00:21:30,260 Deci, ce vreau să spun aici este că Creez o variabilă numită 436 00:21:30,260 --> 00:21:33,930 gradele de tip int matrice. 437 00:21:33,930 --> 00:21:37,380 Și eu setarea care egală cu unele date inițializată, care, în acest caz 438 00:21:37,380 --> 00:21:42,960 este de 100, 0, 90, 85, care este doar o colecție de note arbitrare aici. 439 00:21:42,960 --> 00:21:46,480 Acum, în acest caz aș putea, amintiți-vă, scoateți tip, 440 00:21:46,480 --> 00:21:49,580 și ar putea să-l deduce pe baza datelor inițializate. 441 00:21:49,580 --> 00:21:51,990 Dar dacă am scos acest lucru și Am nevoie să-l setați mai târziu, 442 00:21:51,990 --> 00:21:56,840 atunci mi-ar fi să vă asigurați că că am tipul de acolo. 443 00:21:56,840 --> 00:21:58,750 Bine, să mergem de-a lungul. 444 00:21:58,750 --> 00:22:03,010 Așa că am can-- tablouri furnizați la noi de o gamă largă 445 00:22:03,010 --> 00:22:07,130 metodelor prin care notație punct la tine sunt, probabil, acum familiarizat cu. 446 00:22:07,130 --> 00:22:10,360 Deci grades.count, de exemplu, ne spune exact numărul 447 00:22:10,360 --> 00:22:13,680 de elemente care sunt conținute în această matrice. 448 00:22:13,680 --> 00:22:17,260 >> Dacă doriți să adăugați additional-- acum observa că aceasta este o var 449 00:22:17,260 --> 00:22:20,140 și not-- aceasta este o variabilă și nu o constantă, care 450 00:22:20,140 --> 00:22:24,410 înseamnă că pot schimba conținutul din această matrice, pot adăuga obiecte la acesta. 451 00:22:24,410 --> 00:22:28,870 Dar eu nu pot spune doar clasele și apoi în paranteze drepte 452 00:22:28,870 --> 00:22:33,280 patru, pentru că va fi o din eroare limitelor în acest caz. 453 00:22:33,280 --> 00:22:36,190 Dacă vreau să efectiv schimbare dimensiunea acestei matrice, 454 00:22:36,190 --> 00:22:41,140 Trebuie să folosesc metoda punct append la adăuga ceva pe la sfârșitul lui ea. 455 00:22:41,140 --> 00:22:46,900 Eu pot, cu toate acestea, schimbarea Indicii individuali. 456 00:22:46,900 --> 00:22:48,920 >> Așa că am putea folosi clasele și paranteze pătrate apoi 457 00:22:48,920 --> 00:22:52,480 la zero pentru a manipula acest prim indice și așa mai departe, ca și cum v-ați aștepta în mod normal. 458 00:22:52,480 --> 00:22:56,530 Și eu pot face la fel de efectiv primi datele de la care, de asemenea. 459 00:22:56,530 --> 00:23:00,420 Acum există, de asemenea un fel de metodă fantezie de a face acest lucru, clasele plus egali 460 00:23:00,420 --> 00:23:02,525 și apoi un alt indice, care va append-- 461 00:23:02,525 --> 00:23:04,400 sau nu un alt index-- dar o altă listă care 462 00:23:04,400 --> 00:23:07,340 va adăuga această listă la partea din spate a note. 463 00:23:07,340 --> 00:23:09,780 Și notele vor apoi conține toate astea. 464 00:23:09,780 --> 00:23:13,850 Dar asta e un fel de lucru suplimentar că Eu doar vă arată pentru distracție. 465 00:23:13,850 --> 00:23:14,910 >> Acum există o buclă pentru. 466 00:23:14,910 --> 00:23:18,970 Și aceasta este începutul de unde lucrurile încep să se schimbe un pic. 467 00:23:18,970 --> 00:23:22,920 Observați cum acest lucru pentru bucla este diferit de la bucle în C. 468 00:23:22,920 --> 00:23:26,470 Acum, voi nota că pentru bucle în Swift poate 469 00:23:26,470 --> 00:23:30,650 face să arate ca pentru bucle în C, dar există o mulțime de construcții mai utile 470 00:23:30,650 --> 00:23:37,840 că elimine în mod esențial necesitatea să aibă, pentru var i este egal cu 0 și virgulă i 471 00:23:37,840 --> 00:23:40,340 este mai mic de o anumită lungime, așa mai departe și așa mai departe, nu? 472 00:23:40,340 --> 00:23:42,940 Și acest construct este doar una dintre ele. 473 00:23:42,940 --> 00:23:49,030 >> Pentru index, indice este nou variabilă, în acest caz, în interval. 474 00:23:49,030 --> 00:23:52,730 Și ce vreau să spun este că există o gamă de la 0 tot drumul până la 475 00:23:52,730 --> 00:23:55,870 dar nu include grades.count. 476 00:23:55,870 --> 00:23:58,470 Deci, acest punct dot mai puțin decât semn reprezintă 477 00:23:58,470 --> 00:24:05,040 o serie de valori de la zero tot drumul până la grades.count minus 1. 478 00:24:05,040 --> 00:24:07,070 Există o separat Operatorul care există, 479 00:24:07,070 --> 00:24:13,320 care este punct punct punct, care ar înseamnă că vreau gama de la zero 480 00:24:13,320 --> 00:24:16,310 pentru clasele conta inclusiv. 481 00:24:16,310 --> 00:24:19,130 >> Dar, în acest caz, deoarece acestea matrice sunt indicele de la zero, am desigur 482 00:24:19,130 --> 00:24:23,290 Nu vreau să merg la Numărul maxim de grade. 483 00:24:23,290 --> 00:24:26,390 Pot rezuma notele, așa cum s-ar putea se așteaptă, și ieșire toate chestiile astea. 484 00:24:26,390 --> 00:24:29,620 OK, se deplasează pe. 485 00:24:29,620 --> 00:24:32,270 Acum, hai sa vorbim despre funcții. 486 00:24:32,270 --> 00:24:35,465 În scopul de a defini o funcție utilizați cuvântul cheie funk. 487 00:24:35,465 --> 00:24:38,090 Și, din nou, în Swift trebuie să fi foarte atent cu tipurile. 488 00:24:38,090 --> 00:24:41,530 Ai oferi să-l parametrii prin definirea, de exemplu, 489 00:24:41,530 --> 00:24:45,440 numele parametrului și apoi în colin, tipul de date 490 00:24:45,440 --> 00:24:47,690 care vă așteptați ca parametru pentru a accepta. 491 00:24:47,690 --> 00:24:50,700 >> Deci, în acest caz, avem o funcție numită numărului de calitate a imprimării. 492 00:24:50,700 --> 00:24:54,630 Acesta acceptă o variabilă numită cartea de note, sau mai degrabă un parametru numit cartea de note. 493 00:24:54,630 --> 00:24:59,267 Și noi așteptăm că cartea de note a fi o serie de numere întregi. 494 00:24:59,267 --> 00:25:01,350 În cazul în care cartea de note este gol, vom imprima un singur lucru. 495 00:25:01,350 --> 00:25:06,090 În caz contrar, vom imprima numărul din clasele că acest fapt are. 496 00:25:06,090 --> 00:25:09,470 >> Acum, dacă vrem să se întoarcă anumită valoare, atunci calea 497 00:25:09,470 --> 00:25:14,595 că vom modifica această definiție este pentru a folosi de fapt, acest sageata cuvânt cheie, 498 00:25:14,595 --> 00:25:16,870 sau de a folosi acest sageata semnificant. 499 00:25:16,870 --> 00:25:19,440 Deci, aici vom defini o funcție numită medie. 500 00:25:19,440 --> 00:25:21,940 Vom accepta o listă de numere. 501 00:25:21,940 --> 00:25:25,430 Și vom returna un dublu, care va sperăm 502 00:25:25,430 --> 00:25:31,270 fie media a acestui tablou. 503 00:25:31,270 --> 00:25:34,570 Și pentru a face acest lucru, în ordine pentru a calcula de fapt această medie, 504 00:25:34,570 --> 00:25:38,651 vom lua o sumă și vom de rezuma curs la toate obiectele 505 00:25:38,651 --> 00:25:39,400 în această matrice. 506 00:25:39,400 --> 00:25:41,480 >> Observați că există un nou Stilul de buclă de aici. 507 00:25:41,480 --> 00:25:45,450 Nu trebuie să fie explicit despre iterarea peste fiecare element 508 00:25:45,450 --> 00:25:48,280 dar putem spune în schimb pentru grad și Gradebook, Semnificatie 509 00:25:48,280 --> 00:25:50,930 că pentru fiecare element pe care o avem în acest sens, 510 00:25:50,930 --> 00:25:53,482 prevăd că în această element variabilă numită grad. 511 00:25:53,482 --> 00:25:54,940 Și vreau să fac ceva cu ea. 512 00:25:54,940 --> 00:26:00,350 Așa că am de gând să rezuma toate aceste date și de fapt a reveni dublu divizia. 513 00:26:00,350 --> 00:26:04,436 >> Acum, observați din nou aici se găsește Conceptul de diviziune întreg în Swift. 514 00:26:04,436 --> 00:26:06,810 Dacă doriți să dubleze diviziune pentru că vrei zecimale, 515 00:26:06,810 --> 00:26:09,460 atunci trebuie să fie explicite, nu doar despre o parte, 516 00:26:09,460 --> 00:26:14,030 deoarece nu te va permite pentru a constrânge date pe fiecare parte a acestei, 517 00:26:14,030 --> 00:26:17,030 trebuie să de fapt curs ambele părți în dublu 518 00:26:17,030 --> 00:26:19,440 astfel că ești foarte explicit despre a face sigur 519 00:26:19,440 --> 00:26:23,370 că faci diviziune dublu. 520 00:26:23,370 --> 00:26:26,150 >> Să mergem mai departe. 521 00:26:26,150 --> 00:26:31,150 Deci, dacă am de fapt vreau să accept-- astfel încât în ​​acest exemplu particular, 522 00:26:31,150 --> 00:26:34,260 acest lucru este încă o comandă aplicație bazată pe linie. 523 00:26:34,260 --> 00:26:37,920 Și suntem incepand de a vedea unele din limitările limbajului tineri 524 00:26:37,920 --> 00:26:41,850 în faptul că, deși putem acces la argumentele prin utilizarea 525 00:26:41,850 --> 00:26:44,940 acest process.arguments, e curată încă nu neapărat 526 00:26:44,940 --> 00:26:46,200 lucru pe care l-am văzut vreodată. 527 00:26:46,200 --> 00:26:49,142 Dar, practic eu vă încurajez la fel de uite la acest cod 528 00:26:49,142 --> 00:26:51,100 și să încerce să dau seama exact ceea ce se întâmplă. 529 00:26:51,100 --> 00:26:55,030 >> În esență, ceea ce se întâmplă este că luăm o listă de argumente 530 00:26:55,030 --> 00:26:57,610 și au fost constrângere-le în întregi, iar apoi suntem 531 00:26:57,610 --> 00:27:03,620 va folosi ca pe un mod de a imprima din media tuturor notelor noastre. 532 00:27:03,620 --> 00:27:06,150 533 00:27:06,150 --> 00:27:07,350 Mutarea pe. 534 00:27:07,350 --> 00:27:11,190 Acum există un alt tip de data-- un alt tip de date, mai degrabă decât tablouri 535 00:27:11,190 --> 00:27:14,940 numite dicționare, care sunt foarte similar cu hash tabele sau hărți de dispersie 536 00:27:14,940 --> 00:27:18,560 și sunt similare, de asemenea, să Matrice asociative PHP. 537 00:27:18,560 --> 00:27:20,770 Deci, ei au noțiunea de chei și valori. 538 00:27:20,770 --> 00:27:23,780 >> Și acestea sunt definite, de asemenea, cu această notație suport pătrat, 539 00:27:23,780 --> 00:27:26,750 dar diferența este că dicționare au 540 00:27:26,750 --> 00:27:29,370 interiorul suportul pătrat, un colon. 541 00:27:29,370 --> 00:27:33,850 Și colon separă datele tip care este cheia și valoarea. 542 00:27:33,850 --> 00:27:38,540 Deci, în acest caz, am de gând să creeze un dicționar de a accepta anumite clase. 543 00:27:38,540 --> 00:27:44,200 Și va fi de tip string: int, 544 00:27:44,200 --> 00:27:46,940 ceea ce înseamnă că toate chei vor fi siruri de caractere, 545 00:27:46,940 --> 00:27:53,080 și toate valorile celor chei vor fi numere întregi. 546 00:27:53,080 --> 00:27:55,780 >> Ce înseamnă acest lucru este că eu pot apoi referire la datele specifice 547 00:27:55,780 --> 00:28:00,490 că vreau folosind aceste chei, mai degrabă decât cu ajutorul indicilor numerice cum am 548 00:28:00,490 --> 00:28:04,350 ar avea pentru o gama standard. 549 00:28:04,350 --> 00:28:06,470 Acum, să vedem, nu e un lucru important 550 00:28:06,470 --> 00:28:10,790 că eu, de asemenea, doresc să menționez despre această secvență special de cod. 551 00:28:10,790 --> 00:28:12,910 Și asta este că nu există un alt tip de date, 552 00:28:12,910 --> 00:28:15,580 sau mai degrabă există această Ideea de date, care este 553 00:28:15,580 --> 00:28:18,340 conținute în Swift numit optionale. 554 00:28:18,340 --> 00:28:21,270 >> Și ce înseamnă opționalelor este că recunoaște faptul 555 00:28:21,270 --> 00:28:27,500 care uneori nu o să obține datele pe care le aștepta de fapt. 556 00:28:27,500 --> 00:28:31,400 Și ce vreau să spun prin asta este-- hai aruncăm o privire la această secvență de cod 557 00:28:31,400 --> 00:28:38,910 care reiterează peste tot a argumente care au fost trecute la acest cod 558 00:28:38,910 --> 00:28:43,460 și încearcă să le converti, încearcă să împartă într-o varietate de siruri de caractere, 559 00:28:43,460 --> 00:28:47,310 pentru că acceptă o foarte anumit tip de argument. 560 00:28:47,310 --> 00:28:51,530 Și apoi se va încerca să constrângă siruri de caractere care reprezintă numere 561 00:28:51,530 --> 00:28:55,460 în numere întregi care sunt gradele, care pot apoi calcula. 562 00:28:55,460 --> 00:28:58,230 >> Deci, practic am de gând să folosi această funcție divizat că 563 00:28:58,230 --> 00:29:00,080 există în Biblioteca standard de Swift. 564 00:29:00,080 --> 00:29:03,720 Am de gând să treacă în ea șir pe care vreau să împartă. 565 00:29:03,720 --> 00:29:06,980 Și apoi în folosirea acestui fel de sintaxă înfricoșat, care 566 00:29:06,980 --> 00:29:09,670 Nu știu dacă vom ajunge la, dar poate, ne-am 567 00:29:09,670 --> 00:29:14,320 va specifica de fapt precis caracter care ne-o dorim să împartă la. 568 00:29:14,320 --> 00:29:16,030 Deci, ce are acest fapt arata ca? 569 00:29:16,030 --> 00:29:18,740 Să aruncăm o privire la execută de fapt acest cod. 570 00:29:18,740 --> 00:29:22,000 >> Deci, de exemplu, sa spunem am un test și am 50 de ani pe care. 571 00:29:22,000 --> 00:29:23,960 Și am o PSETs și Am o sută pe care. 572 00:29:23,960 --> 00:29:29,180 Și eu got-- există o altă test și am primit un 40 pe care. 573 00:29:29,180 --> 00:29:33,520 Am lovit Enter, și în cele din urmă ceea ce se va întâmpla este că ceea ce face 574 00:29:33,520 --> 00:29:37,730 este de a lua acești parametri, despicare siruri de caractere de la aceste două puncte, 575 00:29:37,730 --> 00:29:41,390 recunoscând că nu există două elemente în fiecare, 576 00:29:41,390 --> 00:29:43,700 și este, în esență, urmarirea fiecare. 577 00:29:43,700 --> 00:29:49,226 >> Deci, am în dicționarul mea un test, a cărui Valoarea este reprezentată de numărul 50, 578 00:29:49,226 --> 00:29:54,290 Am un PSET care are o valoare de 100, și un singur test care are o valoare de 40. 579 00:29:54,290 --> 00:29:57,400 Apoi, mai târziu în codul I de fapt medie toate aceste valori 580 00:29:57,400 --> 00:30:01,160 și lista toate cheile care în dicționarul special. 581 00:30:01,160 --> 00:30:03,217 Dar acest lucru este important astfel încât să puteți observa 582 00:30:03,217 --> 00:30:06,050 ceea ce se întâmplă, este că ceea ce noi vrei sa faci este de a lua acest șir 583 00:30:06,050 --> 00:30:11,450 și aceasta împărțit la acest personaj, pe care o putem face din nou cu acest divizat 584 00:30:11,450 --> 00:30:15,690 Funcția folosirea acestui tip de sintaxă interesant care există aici. 585 00:30:15,690 --> 00:30:17,880 >> Doar pentru acum presupun că e în regulă. 586 00:30:17,880 --> 00:30:19,980 Ne vom uita mai mult la acest în doar puțin timp. 587 00:30:19,980 --> 00:30:23,230 Dar acum există o interesantă aspect pe care noi de fapt 588 00:30:23,230 --> 00:30:27,250 doriți să încercați pentru a converti acest string într-un număr întreg. 589 00:30:27,250 --> 00:30:29,720 Dar în alte limbi ceea ce s-ar putea întâmpla este 590 00:30:29,720 --> 00:30:33,440 care ne-ar încerca, probabil, să o facă și nici primi înapoi 591 00:30:33,440 --> 00:30:36,185 un fel de santinelă Valoarea ca unul negativ 592 00:30:36,185 --> 00:30:39,420 sau poate un nul sau ceva de genul asta. 593 00:30:39,420 --> 00:30:41,070 Sau poate ar provocat doar o eroare. 594 00:30:41,070 --> 00:30:42,820 Și ne-ar trebui să apoi să prinzi această eroare 595 00:30:42,820 --> 00:30:44,820 și apoi încercați să faceți ceva bazat pe faptul 596 00:30:44,820 --> 00:30:48,280 că această conversie la un număr întreg nu a reușit. 597 00:30:48,280 --> 00:30:50,460 Asta în cazul în care această idee de optionale vine în. 598 00:30:50,460 --> 00:30:56,120 Puteți crea de fapt un tip de date care este un semn de întrebare int, de exemplu. 599 00:30:56,120 --> 00:30:59,140 600 00:30:59,140 --> 00:31:01,910 Asta înseamnă că acest număr întreg este, de fapt, opțional. 601 00:31:01,910 --> 00:31:05,980 Și ce se va întâmpla este că acesta poate conține un număr întreg, sau nu pot. 602 00:31:05,980 --> 00:31:10,650 Se poate, de fapt, să fie acest alt idee, numit în întregime nill. 603 00:31:10,650 --> 00:31:14,900 În ceea ce înseamnă că nu există nici un fel de în această valoare. 604 00:31:14,900 --> 00:31:16,810 Nu e chiar de zero, nu e doar nici o valoare. 605 00:31:16,810 --> 00:31:18,790 Nu e absolut nici o valoare reprezentate. 606 00:31:18,790 --> 00:31:21,650 >> Și asta este ceea ce face această linie 71. 607 00:31:21,650 --> 00:31:25,990 Este că se spune că eu doriți să încercați să setați o valoare, 608 00:31:25,990 --> 00:31:31,790 o variabilă numită grad, egală cu conversie a acestui șir într-un int. 609 00:31:31,790 --> 00:31:34,010 Așa că am luat acest șir, acest primele componente, 610 00:31:34,010 --> 00:31:37,680 sau mai degrabă a doua componente, deoarece aceasta 611 00:31:37,680 --> 00:31:40,770 este zero, indexat, din acest șir care le-am împărțit. 612 00:31:40,770 --> 00:31:42,930 Și vreau să convertească care la un număr întreg. 613 00:31:42,930 --> 00:31:46,730 Dar aceasta nu poate proceda întotdeauna în mod normal, pentru că imagina 614 00:31:46,730 --> 00:31:50,710 ce s-ar întâmpla dacă, mai degrabă decât de tip un număr, tip I, desigur, ca asdf. 615 00:31:50,710 --> 00:31:51,534 >> O să eșueze. 616 00:31:51,534 --> 00:31:54,200 Nu este de fapt va fi capabil de a converti care la un număr întreg 617 00:31:54,200 --> 00:31:55,510 cum mi-ar aștepta. 618 00:31:55,510 --> 00:31:58,660 Deci, mai degrabă decât a lovi cu piciorul off un fel de eroare, 619 00:31:58,660 --> 00:32:01,210 avem această idee a unui opțional. 620 00:32:01,210 --> 00:32:04,240 Și asta înseamnă că utilizarea acest semn de întrebare pot să spun, 621 00:32:04,240 --> 00:32:09,100 OK, este posibil ca eu pot lua acest lucru, transformată într-un int, 622 00:32:09,100 --> 00:32:12,630 și a pus într-o variabilă, care va fi, de asemenea, un int. 623 00:32:12,630 --> 00:32:15,420 Dacă este așa, atunci înseamnă că acest lucru a fost de succes 624 00:32:15,420 --> 00:32:18,720 și această primă porțiune de blocul poate continua. 625 00:32:18,720 --> 00:32:21,040 >> În caz contrar, ea nu a reușit. 626 00:32:21,040 --> 00:32:25,840 Nu există nici o valoare în grade-- sau mai degrabă nu există nici o valoare în vigoare, 627 00:32:25,840 --> 00:32:30,220 și eu de fapt, să încerce să descurca stare de eroare. 628 00:32:30,220 --> 00:32:33,340 Veti vedea acest semn de întrebare tot timpul 629 00:32:33,340 --> 00:32:35,990 în Swift și în exemplul codul pentru Swift. 630 00:32:35,990 --> 00:32:40,980 Și, de fapt operatorul nill, acest tip de semn de întrebare, partea optionalele, 631 00:32:40,980 --> 00:32:45,057 va fi probabil una dintre cele mai dificile lucruri 632 00:32:45,057 --> 00:32:47,640 la fel de încheia cap în jurul valorii de în timp ce lucrează efectiv cu el. 633 00:32:47,640 --> 00:32:48,490 >> S-ar putea face sens acum. 634 00:32:48,490 --> 00:32:50,760 Și, de fapt, când am fost scrierea de cod proba pentru acest lucru, 635 00:32:50,760 --> 00:32:52,780 cu siguranță am înțeles ce se întâmplă, 636 00:32:52,780 --> 00:32:55,570 dar încă mă prins de surpriză fiecare atât de des 637 00:32:55,570 --> 00:32:58,370 când voi găsi că unele date a fost de fapt 638 00:32:58,370 --> 00:33:04,024 o versiune zero, o versiune opțională din datele pe care mă așteptam. 639 00:33:04,024 --> 00:33:06,190 Deci, doar dau seama că, dacă au o versiune opțional 640 00:33:06,190 --> 00:33:09,360 trebuie să despacheta că datele din această casetă. 641 00:33:09,360 --> 00:33:15,870 >> Deci e un fel de Eu-- imagina, dacă au o cutie și conține ceva. 642 00:33:15,870 --> 00:33:18,490 Și ce trebuie să faci este de a pune întrebarea, 643 00:33:18,490 --> 00:33:22,800 este posibil ca această casetă de fapt conține datele pe care caut? 644 00:33:22,800 --> 00:33:28,180 Dacă este așa, apoi trageți asta de date și pune-l în această variabilă existent. 645 00:33:28,180 --> 00:33:32,080 Dacă nu, atunci am doar să nu ia în considerare conținutul acestei casete 646 00:33:32,080 --> 00:33:34,310 totul deoarece literalmente conține nimic. 647 00:33:34,310 --> 00:33:36,880 648 00:33:36,880 --> 00:33:40,400 >> Orice întrebări cu privire la acest? 649 00:33:40,400 --> 00:33:44,430 OK, hai să se îndepărteze de această fel de lucru linie de comandă pe baza 650 00:33:44,430 --> 00:33:47,610 și începe căutarea de la o parte din tehnologia 651 00:33:47,610 --> 00:33:53,060 care Xcode prevede la noi în formă de terenuri de joacă. 652 00:33:53,060 --> 00:33:56,669 Deci, există o mulțime de Capacitatea aici cu Swift. 653 00:33:56,669 --> 00:33:59,210 Și dacă deschide Xcode și vă întreabă ce vrei să faci, 654 00:33:59,210 --> 00:34:01,340 puteți deschide terenul de joacă și chiar joacă în jurul 655 00:34:01,340 --> 00:34:06,200 cu o mulțime de diferite structuri și aspecte ale limbajului 656 00:34:06,200 --> 00:34:11,800 înainte de a începe chiar atinge iOS SDK sau Mac SDK. 657 00:34:11,800 --> 00:34:15,670 >> Deci acest caz, să zicem că am have-- Am un exemplu relativ contrived 658 00:34:15,670 --> 00:34:18,460 aici, dar să poarte cu mine ca am un fel a lucra prin acest exemplu. 659 00:34:18,460 --> 00:34:22,639 Să spunem că avem de a face un lot de exponenți cu o valoare fixă, 660 00:34:22,639 --> 00:34:26,397 așa cum știm că vom avea nevoie de la face o mulțime de competențe patrati, de exemplu. 661 00:34:26,397 --> 00:34:28,980 Deci, vom lua o anumită valoare x, vom să-l pătrat, 662 00:34:28,980 --> 00:34:30,540 vom lua o anumită valoare y și vom să-l pătrat. 663 00:34:30,540 --> 00:34:31,780 Deci, pe și așa mai departe. 664 00:34:31,780 --> 00:34:35,549 >> Acum am putea de fapt crea doar o putere de 2 funcție pentru asta, nu? 665 00:34:35,549 --> 00:34:37,090 Deci, am crea o putere de 2 funcții. 666 00:34:37,090 --> 00:34:38,600 Vom accepta o dublă. 667 00:34:38,600 --> 00:34:41,489 Vom output-- sau vom reveni un tip dublu. 668 00:34:41,489 --> 00:34:46,159 Vom lua acest rezultat și apoi de două ori pentru 669 00:34:46,159 --> 00:34:52,040 ceea ce de fapt ia rezultatele, care a fost inițializată la valoarea de unu, 670 00:34:52,040 --> 00:34:53,090 și se înmulțește cu x. 671 00:34:53,090 --> 00:34:56,540 Deci, în esență, avem x ori x aici. 672 00:34:56,540 --> 00:35:01,860 >> Și așa, atunci eu pot, atunci, cum am putea așteaptă, să ia acest, putere alerga de 2, 673 00:35:01,860 --> 00:35:03,680 furnizează o serie de date, îmi place 2.0. 674 00:35:03,680 --> 00:35:05,756 Și vom ajunge pentru a vedea rezultatele de aici 4.0. 675 00:35:05,756 --> 00:35:09,200 Run putere de 2 la 3.2 și noi ajunge pentru a vedea rezultatul nostru, 10,24. 676 00:35:09,200 --> 00:35:10,840 Până în prezent atât de bine, nu? 677 00:35:10,840 --> 00:35:12,070 Acum ne gândim, ei bine, OK. 678 00:35:12,070 --> 00:35:15,530 Acum, de fapt am nevoie de face o mulțime de putere de 3. 679 00:35:15,530 --> 00:35:19,180 Așa că voi copy paste toate acestea cod, schimba numele funcției de la 680 00:35:19,180 --> 00:35:24,440 putere de 2 la putere din 3, și totul va fi la fel, cu excepția această valoare 681 00:35:24,440 --> 00:35:26,740 aici, acest interval, 1 ... 2. 682 00:35:26,740 --> 00:35:29,590 >> Deci, mai degrabă decât să repete această buclă de două ori, 683 00:35:29,590 --> 00:35:31,880 Vreau să repet această buclă trei ori. 684 00:35:31,880 --> 00:35:36,330 Așa că am schimba doar că valoarea de la 1 la 3-- sau mai degrabă la 2 la 3. 685 00:35:36,330 --> 00:35:39,230 Deci, din nou, același cod, asta e singura schimbare. 686 00:35:39,230 --> 00:35:40,080 Acum, acest asemenea, funcționează. 687 00:35:40,080 --> 00:35:43,860 Puterea de 3 prevăzut în unele valoare de 2. 688 00:35:43,860 --> 00:35:44,420 Ne 8. 689 00:35:44,420 --> 00:35:45,370 Deci, 2 cubed. 690 00:35:45,370 --> 00:35:48,060 Și 3.2 cubed este 32.768. 691 00:35:48,060 --> 00:35:50,597 Și până în prezent atât de bine, nu? 692 00:35:50,597 --> 00:35:52,930 Dar sperăm că acest este un pic bit de un steag rosu pentru tine 693 00:35:52,930 --> 00:35:55,530 în care avem acum unele dublarea cod 694 00:35:55,530 --> 00:35:58,800 cu excepția unor foarte minore schimba de la una la alta. 695 00:35:58,800 --> 00:36:02,170 Deci, există un fel că am putea fi în măsură să simplifice 696 00:36:02,170 --> 00:36:06,080 această problemă, în cazul în care putem efectiv, la momentul execuției, dau seama unii, 697 00:36:06,080 --> 00:36:11,320 furnizați la noi o funcție care are tocmai puterea de care ne-o dorim. 698 00:36:11,320 --> 00:36:13,960 >> Și există această idee de închidere, care este foarte, foarte 699 00:36:13,960 --> 00:36:18,180 important în contextul Swift, și în multe alte limbi, de asemenea. 700 00:36:18,180 --> 00:36:21,580 Dar, probabil, veți vedea a folosit cu atât mai mult în Swift 701 00:36:21,580 --> 00:36:23,650 pentru că este încorporat în limba 702 00:36:23,650 --> 00:36:28,280 decât va fi, în alte de asemenea, limbile moderne. 703 00:36:28,280 --> 00:36:31,140 Deci ideea unei închidere este aceasta, este că noi 704 00:36:31,140 --> 00:36:35,430 poate avea o funcție care are menirea de a fie o funcție generică, o putere generic 705 00:36:35,430 --> 00:36:36,860 funcției. 706 00:36:36,860 --> 00:36:41,010 >> Și această funcție este de gând să accepte acest exponent că suntem de fapt 707 00:36:41,010 --> 00:36:42,990 doriți să creați. 708 00:36:42,990 --> 00:36:46,550 Deci, de exemplu, foarte primul exemplu, ne-am dorit o putere de 2. 709 00:36:46,550 --> 00:36:50,050 Deci, ne-ar oferi putere de și apoi în paranteze 2. 710 00:36:50,050 --> 00:36:52,490 Și acum observați ce acest fapt se întoarce. 711 00:36:52,490 --> 00:36:57,680 Aceasta are o intrare a unui grund numita y care este un număr întreg, 712 00:36:57,680 --> 00:37:03,090 și returnează acest nebun cautati lucru în paranteze parentheses-- 713 00:37:03,090 --> 00:37:06,230 dublu și apoi săgeată dublă. 714 00:37:06,230 --> 00:37:10,270 >> Ce înseamnă acest lucru este că eu sunt O să se întoarcă o funcție. 715 00:37:10,270 --> 00:37:13,510 Nu mă întorc un alt tip de date, sunt 716 00:37:13,510 --> 00:37:16,350 de fapt, revenind o funcție care are acest parametru, care 717 00:37:16,350 --> 00:37:22,680 acceptă o dublă ca intrare și generează un dublu ca valoare întoarcere. 718 00:37:22,680 --> 00:37:29,750 Și, ca urmare, pentru că acum am sunat putere de, asociate în unele valoare pentru y, 719 00:37:29,750 --> 00:37:32,280 și am creat acest alt Notă function-- că nu există 720 00:37:32,280 --> 00:37:35,980 o altă funcție care este creat în interiorul a astea-- ceea ce fac 721 00:37:35,980 --> 00:37:37,830 este Pot schimba atunci această valoare, să rețină 722 00:37:37,830 --> 00:37:41,010 Valoarea că am schimbat 2-3, acum fac asta y. 723 00:37:41,010 --> 00:37:42,500 >> Și aceasta persistă. 724 00:37:42,500 --> 00:37:48,530 Deci, de fiecare dată când eu numesc putere de, în esență, ceea ce se întâmplă 725 00:37:48,530 --> 00:37:51,030 este că voi fi întors o funcție. 726 00:37:51,030 --> 00:37:54,310 Observați că aici am definit o nouă variabilă numită pătrat. 727 00:37:54,310 --> 00:37:59,340 Am stabilit o egal la putere de, cu condiția ca această valoare de 2 la puterea de. 728 00:37:59,340 --> 00:38:02,030 Și ce acesta sa întors este funcția. 729 00:38:02,030 --> 00:38:05,970 Deci pătrat, variabila pătrat, este acum de funcții tip 730 00:38:05,970 --> 00:38:11,390 care are astea-- Oops, derulați în sus un mic bit-- că are această semnătură, 731 00:38:11,390 --> 00:38:15,560 accepta un dublu și ieșire o dublă. 732 00:38:15,560 --> 00:38:17,330 >> Deci, acum ce am făcut este Am în esență, 733 00:38:17,330 --> 00:38:22,890 a creat un pătrat funcție numită că acceptă orice valoare si va pătrat. 734 00:38:22,890 --> 00:38:24,960 Putem vedea ce se întâmplă aici. 735 00:38:24,960 --> 00:38:29,960 Piața 3 de exemplu, înseamnă am de gând să ia valoarea 3 și pătrat l. 736 00:38:29,960 --> 00:38:32,010 Deci, cum face exact acest lucru? 737 00:38:32,010 --> 00:38:37,800 Când trec putere de 2-- atunci când am trece 2 în această putere de funcții, 738 00:38:37,800 --> 00:38:44,430 această variabilă y este populata cu acea valoare de 2. 739 00:38:44,430 --> 00:38:46,340 Și care este un fel de loc în memorie. 740 00:38:46,340 --> 00:38:49,430 Asta e ca și cum a avut loc la de stat undeva în calculator, 741 00:38:49,430 --> 00:38:51,980 nu ne pasă cu adevărat cât de sau în cazul în care în acest moment. 742 00:38:51,980 --> 00:38:54,692 >> Dar mă voi întoarce această funcție numit exponentiate. 743 00:38:54,692 --> 00:38:57,400 Și din nou, nu contează cu adevărat ceea ce această funcție este numit, 744 00:38:57,400 --> 00:39:01,730 putem într-adevăr numi ceva, că acceptă o dublă și returnează un dublu, 745 00:39:01,730 --> 00:39:05,640 dar utilizează această valoare y interiorul acestuia. 746 00:39:05,640 --> 00:39:09,290 Deci, chiar dacă este această funcție, această funcție exponentiater asta e 747 00:39:09,290 --> 00:39:13,600 a fost întors pentru a-mi variabilă care am sunat pătrat, 748 00:39:13,600 --> 00:39:17,980 le-a conținut în ea această noțiune a ceea ce a fost y. 749 00:39:17,980 --> 00:39:19,070 Și își amintește că. 750 00:39:19,070 --> 00:39:24,810 >> Deci, de fiecare dată eu numesc această funcție care este numit acum pătrat, foloseste asta. 751 00:39:24,810 --> 00:39:27,990 Dar aceasta înseamnă, de asemenea, că pot a crea o altă variabilă folosind 752 00:39:27,990 --> 00:39:29,120 o putere diferită de. 753 00:39:29,120 --> 00:39:33,240 Deci, eu pot crea o variabilă cub, pentru exemplu, furnizează o putere de 3. 754 00:39:33,240 --> 00:39:37,230 Acum, cub va avea de fapt, unele valoare și cub că și returnați-l. 755 00:39:37,230 --> 00:39:39,570 Deci, putem vedea că mă o valoare 8 din asta. 756 00:39:39,570 --> 00:39:42,720 >> Dar ca valoarea y nu are schimbat pentru că sunt 757 00:39:42,720 --> 00:39:44,980 a avut loc la fel de variabile independente. 758 00:39:44,980 --> 00:39:47,480 Acestea sunt un fel de loc în Spatii independenți din memorie. 759 00:39:47,480 --> 00:39:51,290 Deci, cub va avea mereu x la puterea a 3. 760 00:39:51,290 --> 00:39:55,380 Și pătrat va avea mereu x la puterea a 2, care 761 00:39:55,380 --> 00:39:58,470 înseamnă că pătrat va mereu Numerele pătrați, așa cum am aștepta. 762 00:39:58,470 --> 00:40:01,794 Și cub va tocata mereu numere, cum ma astept. 763 00:40:01,794 --> 00:40:04,960 Acest lucru înseamnă, de asemenea că, uneori, puteți obține un fel de sintaxă funky caută 764 00:40:04,960 --> 00:40:09,030 în cazul în care aveți puterea de a de la foarte partea de jos a ecranului aici, putere de 5. 765 00:40:09,030 --> 00:40:11,410 Și trece în rezultatul. 766 00:40:11,410 --> 00:40:14,670 Ai apela această funcție e a fost returnat cu numarul 4. 767 00:40:14,670 --> 00:40:17,440 Și ce, în esență, acest este 4 la a cincea putere, 768 00:40:17,440 --> 00:40:20,830 putem vedea rezultatele aici. 769 00:40:20,830 --> 00:40:23,690 Cu mine până acum? 770 00:40:23,690 --> 00:40:26,620 >> Deci, această idee este numit un închidere, pentru că ceea ce suntem de fapt facem 771 00:40:26,620 --> 00:40:30,610 este ne încapsulare unele date into-- fel 772 00:40:30,610 --> 00:40:33,050 a anexând acestor date într-o funcție și suntem 773 00:40:33,050 --> 00:40:36,240 posibilitatea de a reutiliza această funcție. 774 00:40:36,240 --> 00:40:41,480 Acum, această sintaxă, deși poate de fapt să fie simplificate o sumă mare. 775 00:40:41,480 --> 00:40:45,005 Și există o mulțime de posibilitate în Swift pentru acest simplificare. 776 00:40:45,005 --> 00:40:47,780 Și asta e ce fel de cele ulterioare de fapt se uite la. 777 00:40:47,780 --> 00:40:51,400 Deci, în 7b de exemplu, ia aceeași cod exact. 778 00:40:51,400 --> 00:40:54,360 >> Dar acum, mai degrabă decât defini de fapt o funcție 779 00:40:54,360 --> 00:40:57,910 în interiorul acestei competențe de funcționează și dau un nume, 780 00:40:57,910 --> 00:41:00,150 și apoi să se întoarcă numele de această funcție, ceea ce 781 00:41:00,150 --> 00:41:02,357 apoi este utilizat ca parte a acest închidere, în schimb suntem 782 00:41:02,357 --> 00:41:03,440 doar de gând să-l simplifica. 783 00:41:03,440 --> 00:41:06,580 Nu avem nevoie de această funcție să fie numit. 784 00:41:06,580 --> 00:41:09,760 Deci, acesta este conceptul de Funcția anonim unde putem atunci 785 00:41:09,760 --> 00:41:15,180 acceptă ca intrare, în paranteze aici, x variabila care este de tip dublu. 786 00:41:15,180 --> 00:41:17,250 >> Vom reveni tip dublu. 787 00:41:17,250 --> 00:41:19,830 Și apoi cuvântul cheie, n, este la începutul acestei funcții. 788 00:41:19,830 --> 00:41:22,180 Deci observa că toate acestea este în acolade 789 00:41:22,180 --> 00:41:25,310 și suntem definirea unui anonim funcționează aici. 790 00:41:25,310 --> 00:41:29,910 Doar un mod mai simplu de definirea exact același lucru. 791 00:41:29,910 --> 00:41:30,810 OK? 792 00:41:30,810 --> 00:41:36,740 Dar stai, de fapt ne permite Swift pentru a merge mai departe și de a simplifica și mai mult, 793 00:41:36,740 --> 00:41:40,180 pentru că într-adevăr nu avem grijă că acest parametru este 794 00:41:40,180 --> 00:41:41,700 numit vreun anumit lucru. 795 00:41:41,700 --> 00:41:48,090 Acesta poate fi într-adevăr numit nimic și putem folosi, totuși, că în primul rând parametru. 796 00:41:48,090 --> 00:41:53,800 >> Deci, în fapt, nu există acest special tip de date în funcții anonime, 797 00:41:53,800 --> 00:41:57,710 există acest nume special de variabile în funcții anonime 798 00:41:57,710 --> 00:42:00,280 care încep cu semn dolar și reprezintă 799 00:42:00,280 --> 00:42:03,785 numerele parametrilor, la zero indexate, pentru această funcție. 800 00:42:03,785 --> 00:42:05,410 Deci, există o serie de lucruri se întâmplă. 801 00:42:05,410 --> 00:42:08,550 Aici am de gând să se întoarcă, și apoi o acoladă reprezentând o funcție, 802 00:42:08,550 --> 00:42:09,050 dreapta? 803 00:42:09,050 --> 00:42:13,920 >> Observați că eu nu am definit Tipuri de parametru sau tipul de întoarcere. 804 00:42:13,920 --> 00:42:16,460 Acesta poate fi de fapt dedusă din cauza semnăturii 805 00:42:16,460 --> 00:42:18,360 din această funcție originale. 806 00:42:18,360 --> 00:42:20,500 Deci, putem elimina care ca o posibilitate. 807 00:42:20,500 --> 00:42:25,120 Dar, de asemenea pot folosi semnul dolar la zero la reprezintă acest prim parametru care este 808 00:42:25,120 --> 00:42:28,200 a trecut în această funcție anonim. 809 00:42:28,200 --> 00:42:31,630 Deci, simplificarea și mai mult. 810 00:42:31,630 --> 00:42:32,750 OK? 811 00:42:32,750 --> 00:42:33,820 Până acum, bine? 812 00:42:33,820 --> 00:42:36,980 >> Acum e acest type-- faci amintiți-vă acest dolar semn de zero 813 00:42:36,980 --> 00:42:40,130 că am văzut în această acoladă că am văzut doar un pic în timp ce 814 00:42:40,130 --> 00:42:43,870 în urmă în această Swift șase exemplu? 815 00:42:43,870 --> 00:42:46,560 A fost chiar aici. 816 00:42:46,560 --> 00:42:48,430 Observați că este exact ceea ce căutăm la, 817 00:42:48,430 --> 00:42:51,580 este că am trecut în această funcție pe părți 818 00:42:51,580 --> 00:42:55,140 o funcție anonim care verifică primul parametru 819 00:42:55,140 --> 00:42:57,830 pentru a vedea dacă acesta este egal cu simbolul colon. 820 00:42:57,830 --> 00:42:59,830 Și asta e exact ceea ce este se întâmplă, este că toate 821 00:42:59,830 --> 00:43:02,320 suntem doing-- revenirea cuvânt cheie este implicat 822 00:43:02,320 --> 00:43:05,800 în acest case-- suntem revenind această valoare în cazul în care vom comparat 823 00:43:05,800 --> 00:43:10,020 Primul parametru împotriva acest personaj colon. 824 00:43:10,020 --> 00:43:11,730 Și astfel acest tip de demystifies acest lucru. 825 00:43:11,730 --> 00:43:17,210 Și o să vedeți acest construct o mulțime în sintaxă Swift, astfel încât face să păstreze 826 00:43:17,210 --> 00:43:19,400 în minte atunci când sunteți a lua o privire la asta. 827 00:43:19,400 --> 00:43:21,970 Acum putem obține de pe șine un pic 828 00:43:21,970 --> 00:43:25,460 și du-te într-adevăr de lux care arată chiar unele mai multe dintre putere Swift. 829 00:43:25,460 --> 00:43:27,950 S-ar putea vedea chiar unele dintre acestea în codurile de probă. 830 00:43:27,950 --> 00:43:29,790 Deci, de aceea am de gând pentru a arăta asta. 831 00:43:29,790 --> 00:43:37,260 >> Practic ceea ce putem face este ca, în primul rând de toate, a fost un fel de inutile pentru mine 832 00:43:37,260 --> 00:43:41,710 să pună în aplicare toate aceste putere de Codul pentru că dacă importați Darwin 833 00:43:41,710 --> 00:43:46,490 bibliotecă, acesta include de fapt o funcție numit pow care face acest lucru pentru tine. 834 00:43:46,490 --> 00:43:50,570 Deci, putem simplifica și mai mult și au funcția noastră de putere până acum doar 835 00:43:50,570 --> 00:43:54,890 fi un minunat unul linie în cazul în care ne-am reveni această funcție anonim care 836 00:43:54,890 --> 00:44:00,780 acceptă dolar semn 0 ca sa de bază și y ca exponent sale. 837 00:44:00,780 --> 00:44:02,582 >> Dar putem obține într-adevăr, într-adevăr fantezie când ne-am 838 00:44:02,582 --> 00:44:04,790 dau seama că Swift are o mulțime de putere sub capota. 839 00:44:04,790 --> 00:44:07,010 O mulțime de operatori care am fost a face cu, 840 00:44:07,010 --> 00:44:11,270 plus semne și simboluri divizare și toate aceste lucruri pe care le în mod normal 841 00:44:11,270 --> 00:44:15,620 operează cu cu tipuri de date într-un limbaj de programare, 842 00:44:15,620 --> 00:44:17,600 sunt de fapt extensibile în Swift. 843 00:44:17,600 --> 00:44:21,460 Deci, despre ce înseamnă, în care ne poate defini propriile noastre operatori. 844 00:44:21,460 --> 00:44:26,020 >> Deci, acum m-am săturat de dactilografiere în tot acest pow și apoi o paranteze și apoi 845 00:44:26,020 --> 00:44:26,520 bază. 846 00:44:26,520 --> 00:44:27,520 Nu vreau să fac asta. 847 00:44:27,520 --> 00:44:30,190 Eu de fapt, doresc să aibă un Operatorul care îmi permite să fac asta. 848 00:44:30,190 --> 00:44:34,510 Deci, eu pot spune Swift că vreau pentru a crea un operator, stele 849 00:44:34,510 --> 00:44:39,472 star-- de modul în care am nu pot folosi carate pentru că carate este un operator care 850 00:44:39,472 --> 00:44:40,680 face cu totul altceva. 851 00:44:40,680 --> 00:44:42,720 Așa că nu vreau să sortați de se ciocnesc cu asta. 852 00:44:42,720 --> 00:44:45,750 Și așa ceea ce vedeți într-o varietate de limbi, inclusiv Python, 853 00:44:45,750 --> 00:44:48,810 este ca operator de star pentru a reprezenta exponenții. 854 00:44:48,810 --> 00:44:50,730 >> Deci, asta e singurul motiv de ce am făcut asta. 855 00:44:50,730 --> 00:44:53,067 Și va fi un operator infix tip. 856 00:44:53,067 --> 00:44:54,900 Și am să furnizeze să-l câteva informații 857 00:44:54,900 --> 00:44:58,386 despre prioritatea acestui Operatorul asa ca e asociativ stângă. 858 00:44:58,386 --> 00:45:00,260 E ca și cum relativ mare prioritate în raport 859 00:45:00,260 --> 00:45:02,432 la însumare sau multiplicare. 860 00:45:02,432 --> 00:45:04,140 E prioritate mai mare decât toate acestea. 861 00:45:04,140 --> 00:45:04,931 Deci, pe și așa mai departe. 862 00:45:04,931 --> 00:45:07,410 Și atunci am defini funcție care de fapt 863 00:45:07,410 --> 00:45:10,070 dictează ceea ce face acest operator. 864 00:45:10,070 --> 00:45:14,150 Așa presupunând că am un stângă partea mână și partea dreaptă, 865 00:45:14,150 --> 00:45:17,330 care ar fi, probabil, o mai bine nume de variabilă pentru acest lucru. 866 00:45:17,330 --> 00:45:20,690 Stanga si partea dreapta. 867 00:45:20,690 --> 00:45:26,740 Pot lua apoi această putere a stanga la dreapta 868 00:45:26,740 --> 00:45:28,980 și să se întoarcă această valoare. 869 00:45:28,980 --> 00:45:30,370 Deci, acum e foarte dulce. 870 00:45:30,370 --> 00:45:33,790 Tot ce trebuie să faceți este de 2 stele stele 3 și că este de 2 la puterea a treia, 871 00:45:33,790 --> 00:45:35,290 și vom obține o valoare de 8. 872 00:45:35,290 --> 00:45:40,280 2 stele stele 10 este de 2 la Putere al 10-lea, avem 1.024. 873 00:45:40,280 --> 00:45:43,630 >> Deci, acum puterea noastră de funcții, care din nou este diferit, 874 00:45:43,630 --> 00:45:47,030 pentru că ideea din spatele acestui a fost că avem o funcție care 875 00:45:47,030 --> 00:45:50,700 are întotdeauna o anumită valoare și it-- multiplica sau mai degrabă 876 00:45:50,700 --> 00:45:53,240 ia exponentul la aceeași putere. 877 00:45:53,240 --> 00:45:54,300 Deci, acum e si mai simplu. 878 00:45:54,300 --> 00:45:57,070 Deci, acum e doar dolar Înregistrează 0 stele y stele. 879 00:45:57,070 --> 00:46:01,190 Nici măcar nu trebuie să mai folosească pow. 880 00:46:01,190 --> 00:46:03,020 >> OK, cine a pierdut? 881 00:46:03,020 --> 00:46:03,700 Facem bine? 882 00:46:03,700 --> 00:46:05,090 Orice întrebări cu privire la aceste lucruri? 883 00:46:05,090 --> 00:46:05,815 Da? 884 00:46:05,815 --> 00:46:09,500 >> Audiența: Când Tu-- [inaudibil] puterea funk lui y dublu. 885 00:46:09,500 --> 00:46:11,441 Deci, atunci când se întoarce o funcție. 886 00:46:11,441 --> 00:46:13,190 DANIEL Armendariz: Funk putere de y dublu. 887 00:46:13,190 --> 00:46:14,270 Da, nu știu ce numerele y sunt. 888 00:46:14,270 --> 00:46:15,708 Îmi pare rău pentru asta. 889 00:46:15,708 --> 00:46:19,420 >> Audiența: De ce revin o funcție [neauzit] incintă. 890 00:46:19,420 --> 00:46:24,214 Nu este dolar de zero stele y stele [inaudibil] 891 00:46:24,214 --> 00:46:29,710 constată că operatorul cu care revenind dublu [inaudibil] dublu? 892 00:46:29,710 --> 00:46:32,742 >> DANIEL Armendariz: Deci să mi răspunde la întrebarea dumneavoastră 893 00:46:32,742 --> 00:46:35,950 cum am înțeles și poți să-mi spui dacă nu am înțeles întrebarea dumneavoastră. 894 00:46:35,950 --> 00:46:42,850 Deci acest construct, bretele buclat semn dolar la zero stele y stele, 895 00:46:42,850 --> 00:46:44,280 este o funcție. 896 00:46:44,280 --> 00:46:50,080 Și acceptă un parametru care este reprezentată prin acest semn dolar zero. 897 00:46:50,080 --> 00:46:55,830 Cuvântul cheie retur este implicat în acest foarte scurt, funcția de sintaxă anonim. 898 00:46:55,830 --> 00:46:57,870 >> Ceea ce înseamnă că, în esență, ce acest spune 899 00:46:57,870 --> 00:47:01,270 este că eu sunt definirea unui function-- și apoi voi 900 00:47:01,270 --> 00:47:05,320 doar o numesc something-- unde am o anumită valoare y. 901 00:47:05,320 --> 00:47:08,300 I y au, care este dublu. 902 00:47:08,300 --> 00:47:10,750 Și eu întorc o dublă. 903 00:47:10,750 --> 00:47:19,010 Și am în acest retur y-- pare rău, N-ar fi numit acest x y--. 904 00:47:19,010 --> 00:47:20,240 Medicul echipei încearcă, aoleu, aoleu. 905 00:47:20,240 --> 00:47:27,440 X- nope-- y star star. 906 00:47:27,440 --> 00:47:29,720 >> Deci, aceasta este doar o versiune simplificată a acestei. 907 00:47:29,720 --> 00:47:33,990 Și astfel motivul pentru care am dolar semn zero, este faptul că folosirea acestui incintă 908 00:47:33,990 --> 00:47:41,050 înseamnă că nu mai am de tip pow, sau nu mai face 909 00:47:41,050 --> 00:47:45,570 Trebuie să fac ceva ca de 3 stele stele 2. 910 00:47:45,570 --> 00:47:48,530 Pot avea doar un singur funcție numită pătrat 911 00:47:48,530 --> 00:47:50,820 care va avea mereu o anumită valoare ca intrare 912 00:47:50,820 --> 00:47:52,980 și de fapt a reveni pătrat de care. 913 00:47:52,980 --> 00:47:56,460 >> Astfel, întregul scop al închiderii este la doar un fel de chintesența faptului 914 00:47:56,460 --> 00:47:59,920 că mereu vreau să utilizeze ori de câte ori y Eu numesc această funcție în calitate de putere 915 00:47:59,920 --> 00:48:01,710 atunci când se iau acest exponent. 916 00:48:01,710 --> 00:48:04,650 Deci revenind apoi, o funcție care acceptă 917 00:48:04,650 --> 00:48:08,460 o dublă, care este baza, și afișează rezultatul acestei exponent 918 00:48:08,460 --> 00:48:10,740 este cheia aici. 919 00:48:10,740 --> 00:48:12,790 Și asta e diferența majoră. 920 00:48:12,790 --> 00:48:14,430 Nu a fost doar un pic de o înflorire. 921 00:48:14,430 --> 00:48:17,970 >> Acest lucru nu este diferit în comparație cu exemplele anterioare, 922 00:48:17,970 --> 00:48:20,530 dar a fost doar un pic de o putem înflori putem de fapt 923 00:48:20,530 --> 00:48:24,500 a crea un operator în Swift și de fapt face lucruri cu el, 924 00:48:24,500 --> 00:48:26,396 care este un fel de un lucru rece. 925 00:48:26,396 --> 00:48:27,520 V-am răspuns la întrebare? 926 00:48:27,520 --> 00:48:28,390 Dulce. 927 00:48:28,390 --> 00:48:31,350 Orice altceva înainte de a trece mai departe? 928 00:48:31,350 --> 00:48:33,570 OK. 929 00:48:33,570 --> 00:48:36,430 >> Acum, acest tip de imploră Întrebarea este that-- bine OK, 930 00:48:36,430 --> 00:48:40,870 acum avem capacitatea de funcții să fie returnate. 931 00:48:40,870 --> 00:48:48,950 Putem trece, de asemenea, funcționează și ca datele sau ca parametri alte funcții? 932 00:48:48,950 --> 00:48:50,710 Și, de fapt putem. 933 00:48:50,710 --> 00:48:53,480 Deci, haideți să spunem că avem toate din același cod. 934 00:48:53,480 --> 00:48:56,120 Avem variabila pătrat care va pătrat acest cod. 935 00:48:56,120 --> 00:48:59,320 Și avem variabila cub care va cub unele date. 936 00:48:59,320 --> 00:49:02,440 Și noi de fapt, doresc să aplice la o gamă largă de numere. 937 00:49:02,440 --> 00:49:06,870 >> Deci, ceea ce am putea fi tentați să facă, desigur, care este cu siguranță valabil, 938 00:49:06,870 --> 00:49:15,430 este de a repeta peste această listă de numere și se aplică funcțiile mele pătrat și cub 939 00:49:15,430 --> 00:49:22,270 și să obțină două noi liste fi rezultatele că sunt această listă originale pătrat 940 00:49:22,270 --> 00:49:24,970 și tocata, respectiv. 941 00:49:24,970 --> 00:49:26,880 Perfect acceptabil. 942 00:49:26,880 --> 00:49:29,130 Dar ceea ce este lucrul pe care vedem aici este că avem, 943 00:49:29,130 --> 00:49:31,310 din nou, dublarea codul nostru. 944 00:49:31,310 --> 00:49:34,310 Și există, probabil, o oportunitate pentru noi a simplifica această un pic. 945 00:49:34,310 --> 00:49:41,260 Ce dacă a existat o modalitate pentru noi de a de fapt repeta mereu peste unele listă 946 00:49:41,260 --> 00:49:45,450 și doar trece la acest magic funcționează o variabilă care 947 00:49:45,450 --> 00:49:47,350 reprezintă o funcție pe care dorim să se aplice 948 00:49:47,350 --> 00:49:50,336 pentru fiecare element unic în această listă. 949 00:49:50,336 --> 00:49:53,210 Aceasta aduce conceptul de ceea ce se numesc funcții superioare de ordine. 950 00:49:53,210 --> 00:49:57,150 Și asta este, în esență ceea ce această este, este că putem crea o funcție. 951 00:49:57,150 --> 00:50:00,210 >> Și în acest caz se numește Mapper, doar pentru a da un nume, doar 952 00:50:00,210 --> 00:50:02,510 cartografiere peste fiecare element unic într-o listă. 953 00:50:02,510 --> 00:50:06,191 În cazul în care iau o listă și eu iau o funcție. 954 00:50:06,191 --> 00:50:08,440 Și această funcție, desigur, are o anumită semnătură. 955 00:50:08,440 --> 00:50:11,980 Acesta acceptă ca un dublu parametru și se va ieșire este o dublă. 956 00:50:11,980 --> 00:50:14,310 Și toată rezultatul această funcție se întâmplă 957 00:50:14,310 --> 00:50:18,921 a fi o listă nouă, care este de tip dublu. 958 00:50:18,921 --> 00:50:19,420 OK? 959 00:50:19,420 --> 00:50:22,650 >> Și ce am de gând să fac este de a aplica această funcție f 960 00:50:22,650 --> 00:50:24,960 la fiecare element în lista mea. 961 00:50:24,960 --> 00:50:30,280 Și reply-- și destul de returnați nou Lista, ca urmare, care este foarte misto. 962 00:50:30,280 --> 00:50:31,820 Acum pot trece funcții în jurul. 963 00:50:31,820 --> 00:50:35,290 Și această idee de ordin superior funcții este foarte important. 964 00:50:35,290 --> 00:50:39,260 Și acest lucru Mapper este de fapt doar punere în aplicare săracului 965 00:50:39,260 --> 00:50:43,130 de o funcție care este construit în Swift numit hartă. 966 00:50:43,130 --> 00:50:45,690 Și o face tocmai acest lucru, poate chiar un pic mai bine. 967 00:50:45,690 --> 00:50:48,260 >> Acesta este doar un fel de generic, versiune simplificată că 968 00:50:48,260 --> 00:50:51,270 ne permite să vedem Conceptul care se aplică aici. 969 00:50:51,270 --> 00:50:54,630 Acum, uita-te la modul în care am poate aplica de fapt gradină meu 970 00:50:54,630 --> 00:50:57,850 și funcții mele cub la această listă de numere. 971 00:50:57,850 --> 00:50:58,780 Am rulat Mapper mea. 972 00:50:58,780 --> 00:51:00,280 Ofer la o lista mea de numere. 973 00:51:00,280 --> 00:51:02,155 Ofer să-l The The funcție care se întâmplă 974 00:51:02,155 --> 00:51:04,170 să se aplice fiecare dintre aceste indici. 975 00:51:04,170 --> 00:51:07,120 Și va fi ieșire ca un rezultat. 976 00:51:07,120 --> 00:51:11,810 Și voi ajunge să văd că am pătrat și tocata numerele mele ca un rezultat. 977 00:51:11,810 --> 00:51:14,660 >> Și, desigur, mapperul va avea orice fel de funcții anonim. 978 00:51:14,660 --> 00:51:17,640 Putem vedea chiar că am creat o nouă funcție anonim care 979 00:51:17,640 --> 00:51:20,220 doar nevoie de unele parametru și-l împarte cu 2. 980 00:51:20,220 --> 00:51:24,340 Și putem vedea că am, de fapt, împărțit lista mea de 2 loc. 981 00:51:24,340 --> 00:51:25,250 Cool? 982 00:51:25,250 --> 00:51:27,340 Până acum, bine? 983 00:51:27,340 --> 00:51:29,650 Bine, acum hai reveni la această idee. 984 00:51:29,650 --> 00:51:36,160 Să pună în aplicare acest nou în contextul unei gradebook. 985 00:51:36,160 --> 00:51:41,860 >> Și dacă fac asta, putem vedea că pot aplica o mare varietate de aceste options-- 986 00:51:41,860 --> 00:51:44,330 sau o mare varietate de acestea Funcții de ordin superior 987 00:51:44,330 --> 00:51:51,450 pentru a simplifica fapt, capacitatea mea de a face un varietate de lucruri pe listele de numere. 988 00:51:51,450 --> 00:51:53,660 Deci, de exemplu, dacă îmi ia o listă de numere, 989 00:51:53,660 --> 00:51:57,060 una dintre funcțiile de ordin superior că există este numit reduce. 990 00:51:57,060 --> 00:52:00,080 Ce face, mai degrabă reduce decât hartă, este redusă va 991 00:52:00,080 --> 00:52:03,710 ia două elemente în listă, va avea o funcție care 992 00:52:03,710 --> 00:52:07,420 compară cele două elemente ale lista, iar apoi se va 993 00:52:07,420 --> 00:52:09,610 un fel de output-- ieșire din această funcție 994 00:52:09,610 --> 00:52:13,790 va fi un alt element care tu apoi compara cu alții. 995 00:52:13,790 --> 00:52:18,190 >> Deci, ai putea folosi acest fapt pentru a suma numerelor din lista ta. 996 00:52:18,190 --> 00:52:20,640 De exemplu, dacă ați avut o listă de 1, 2, 3, 4, 5, 997 00:52:20,640 --> 00:52:22,940 luați primele elemente, 1 și 2. 998 00:52:22,940 --> 00:52:27,270 Puteți aplica pentru aceasta un plus funcție care ia aceste două elemente 999 00:52:27,270 --> 00:52:30,980 și scuipă unul din aceste elemente, care ar fi valoarea de 3. 1000 00:52:30,980 --> 00:52:35,684 Apoi ne-am lua ca valoarea 3 cu următorul element al listei, suma celor doi, 1001 00:52:35,684 --> 00:52:37,100 și apoi să păstreze merge în jos în listă. 1002 00:52:37,100 --> 00:52:40,410 >> Suntem reducerea lista de o singură valoare. 1003 00:52:40,410 --> 00:52:42,700 Și doar așa se întâmplă că simbolul plus 1004 00:52:42,700 --> 00:52:44,670 este un operator, la fel ca tocmai am văzut. 1005 00:52:44,670 --> 00:52:47,500 Acest operator de fapt o funcție care 1006 00:52:47,500 --> 00:52:53,100 are tocmai această listă pe care le ar dori, mai degrabă aceste proprietăți 1007 00:52:53,100 --> 00:52:54,770 care ne-ar dori. 1008 00:52:54,770 --> 00:52:56,760 Așa că vă încurajez să aruncăm o privire la asta. 1009 00:52:56,760 --> 00:52:59,290 Vreau să sortați de mutare pe de o parte din acest cod 1010 00:52:59,290 --> 00:53:05,330 astfel încât să putem uita de fapt la ceva real, adevărat Swift real, în Xcode, 1011 00:53:05,330 --> 00:53:06,880 în dezvoltarea iOS. 1012 00:53:06,880 --> 00:53:08,630 Dar gasiti acest lucru și a vedea dacă puteți 1013 00:53:08,630 --> 00:53:11,171 analiza prin ceea ce se întâmplă cu unele dintre aceste ordin superior 1014 00:53:11,171 --> 00:53:13,790 funcții, inclusiv filtru, reduce și veți chiar 1015 00:53:13,790 --> 00:53:17,060 a se vedea undeva pe aici harta, de asemenea. 1016 00:53:17,060 --> 00:53:17,910 E chiar aici. 1017 00:53:17,910 --> 00:53:20,410 În cazul în care se va lua o secvență de grade și se va efectiv 1018 00:53:20,410 --> 00:53:24,230 le hartă cu ajutorul comutatorului construcția, care s-ar putea recunoaște de la C, 1019 00:53:24,230 --> 00:53:27,640 dar de fapt este mult mai puternic decât comutatorul constructul 1020 00:53:27,640 --> 00:53:29,810 pe care o avem în C. 1021 00:53:29,810 --> 00:53:31,930 >> Și vom aplica asta fiecare element din listă 1022 00:53:31,930 --> 00:53:34,540 și să ofere de fapt nota scrisoare de fiecare 1023 00:53:34,540 --> 00:53:40,780 dintre aceste clase, folosind toate aceste concepte că tocmai am vorbit despre înainte. 1024 00:53:40,780 --> 00:53:44,760 Acum să evite pentru doar o minut și vorbesc despre struct. 1025 00:53:44,760 --> 00:53:49,680 Și așa structs sunt o așteptare în C pe care le au fost în măsură să definească un nou tip de date. 1026 00:53:49,680 --> 00:53:53,590 Structs exista în cadrul Swift. 1027 00:53:53,590 --> 00:53:58,980 Și așa face o mulțime de alte constructe numite ENUM și clase, care într-adevăr 1028 00:53:58,980 --> 00:54:01,175 ia această idee a unui nivel diferit întreg. 1029 00:54:01,175 --> 00:54:05,300 >> Și de fapt e doar o cale de definirea unui nou tip de date. 1030 00:54:05,300 --> 00:54:11,010 Deci, dacă get-- dacă vii peste clasă sau struct sau ENUM, 1031 00:54:11,010 --> 00:54:13,290 nu te confuz de ea. 1032 00:54:13,290 --> 00:54:16,280 E doar modul de definire unele nou tip special de date. 1033 00:54:16,280 --> 00:54:20,230 Și acest lucru este foarte important atunci când vorbim despre dezvoltare app iOS 1034 00:54:20,230 --> 00:54:24,630 pentru că tot ceea ce există în cadrul aplicației iOS 1035 00:54:24,630 --> 00:54:27,460 este, în esență, un obiect de un fel. 1036 00:54:27,460 --> 00:54:31,980 Și un obiect este de fapt o clasă sau o enumerare sau o struct. 1037 00:54:31,980 --> 00:54:34,760 >> Deci, în acest caz am definirea unui nou tip de date 1038 00:54:34,760 --> 00:54:37,740 că eu sunt de evaluare de asteptare asta e unele proprietăți, inclusiv 1039 00:54:37,740 --> 00:54:41,040 un nume și o secvență de grade. 1040 00:54:41,040 --> 00:54:43,470 Deci, un tip de evaluare că am putea avea în vedere 1041 00:54:43,470 --> 00:54:44,760 ar fi teste, de exemplu. 1042 00:54:44,760 --> 00:54:48,180 Mi-ar dori să aibă un evaluare care a fost un test 1043 00:54:48,180 --> 00:54:51,460 și că a avut o varietate de clase asociate cu faptul că, pentru test este de 1044 00:54:51,460 --> 00:54:52,840 test doi, așa mai departe și așa mai departe. 1045 00:54:52,840 --> 00:54:55,720 >> Sau ar putea să am un alt tip de evaluare pentru seturi de probleme. 1046 00:54:55,720 --> 00:54:56,650 Și eu pot face lucruri. 1047 00:54:56,650 --> 00:54:59,860 Pot avea de fapt funcții în cadrul acestui tip de 1048 00:54:59,860 --> 00:55:02,645 de date, care sunt acum numite metode. 1049 00:55:02,645 --> 00:55:04,520 Deci, dacă vedeți vreodată Metoda cuvânt, într-adevăr 1050 00:55:04,520 --> 00:55:08,190 este doar o funcție care se aplică la o clasă foarte specifice, 1051 00:55:08,190 --> 00:55:10,100 sau a unui tip de date. 1052 00:55:10,100 --> 00:55:12,350 Ea ne permite să modifice datele din cadrul. 1053 00:55:12,350 --> 00:55:15,510 >> Deci, cu alte cuvinte, dacă vreau să adăuga o notă de evaluare mea, 1054 00:55:15,510 --> 00:55:18,630 atunci tot ce trebuie să faci este să adăuga punctajului care a fost de intrare 1055 00:55:18,630 --> 00:55:22,660 la această funcție a proprietatea mea internă. 1056 00:55:22,660 --> 00:55:25,880 Există un alt construct pur aici în Swift, care este acest punct punct punct 1057 00:55:25,880 --> 00:55:31,780 operator de, ceea ce înseamnă că scorurile pot accepta acum orice număr de numere întregi. 1058 00:55:31,780 --> 00:55:33,940 Și înscris va fi o matrice de numere întregi care 1059 00:55:33,940 --> 00:55:39,030 au fost transmise la funcția mea, care înseamnă că eu pot face lucruri de genul acesta. 1060 00:55:39,030 --> 00:55:42,360 >> Pot face adăuga note și oferă doar Numerele arbitrare de întregi în ea 1061 00:55:42,360 --> 00:55:47,420 și să fie de fapt prevăzut un tablou de aceste valori în funcția mea 1062 00:55:47,420 --> 00:55:50,270 sau în metoda mea, așa cum este cazul. 1063 00:55:50,270 --> 00:55:54,040 Acum, acest lucru este important, deoarece totul în Xcode, totul în iOS, 1064 00:55:54,040 --> 00:55:56,250 este de fapt un obiect. 1065 00:55:56,250 --> 00:55:59,630 Deci, ține minte când am bustul Xcode deschis 1066 00:55:59,630 --> 00:56:04,890 și treceți dincolo de iOS Versiunile doi și trei 1067 00:56:04,890 --> 00:56:08,820 și de fapt, merge pe la versiunea patru. 1068 00:56:08,820 --> 00:56:11,940 >> Și din nou, toate acestea vor fi postate pe pagina de seminar. 1069 00:56:11,940 --> 00:56:16,980 iOS patru este un fel de complet cu sufletul la gură punerea în aplicare a unei aplicații foarte de bază. 1070 00:56:16,980 --> 00:56:23,920 Și ce această aplicație nu este încarcă un UI, care arata ca acest lucru. 1071 00:56:23,920 --> 00:56:28,680 Din nou, dacă facem click pe storyboard putem vedea că acest lucru este ceea ce pare. 1072 00:56:28,680 --> 00:56:31,320 Aceasta este interfața. 1073 00:56:31,320 --> 00:56:33,676 Ea are un titlu la foarte sus. 1074 00:56:33,676 --> 00:56:34,800 Am numit-o galerie web. 1075 00:56:34,800 --> 00:56:38,400 >> În mijloc există un element numit de părere imagine UI. 1076 00:56:38,400 --> 00:56:41,340 Și în partea de jos există o Bara de instrumente cu un singur buton care 1077 00:56:41,340 --> 00:56:46,850 are spatii elastice care se permit centru în mijlocul această bară de instrumente. 1078 00:56:46,850 --> 00:56:51,780 Și ce se întâmplă este că atunci când această loturile se descarcă un fișier JSON care este 1079 00:56:51,780 --> 00:56:55,540 conținut pe un server în altă parte, analizează acel fișier JSON, 1080 00:56:55,540 --> 00:56:58,130 și fișierul JSON arata un pic ca aceasta. 1081 00:56:58,130 --> 00:57:02,770 1082 00:57:02,770 --> 00:57:06,230 Fișierul JSON arata ca aceasta. 1083 00:57:06,230 --> 00:57:08,650 Nu este. 1084 00:57:08,650 --> 00:57:11,730 >> Acesta are un nume album și ea are o serie de fotografii. 1085 00:57:11,730 --> 00:57:13,490 Fiecare dintre aceste fotografii au un nume și, de asemenea, 1086 00:57:13,490 --> 00:57:19,460 o adresă URL se care reprezintă Versiunea jpeg de care fotografie individ. 1087 00:57:19,460 --> 00:57:24,780 Deci, ce se întâmplă este că, atunci când acest program loturile, se descarcă fișierul JSON, 1088 00:57:24,780 --> 00:57:30,590 analizează o, pune toate acestea în echivalentul unui tablou în iOS 1089 00:57:30,590 --> 00:57:33,020 dezvoltare app, care este un nsarray. 1090 00:57:33,020 --> 00:57:37,520 Și atunci eu pot încărca apoi aceste date într-o aplicație 1091 00:57:37,520 --> 00:57:41,100 și încărcați-l pe ecranul meu. 1092 00:57:41,100 --> 00:57:44,760 >> Este o imagine care a fost încărcată cu butonul chiar partea de jos. 1093 00:57:44,760 --> 00:57:49,190 Dacă faceți clic pe Obțineți Urmatoarea Imagine, ea atunci trage ca imagine de pe internet 1094 00:57:49,190 --> 00:57:53,370 și înlocuiește acea imagine în ecranul de imagine UI. 1095 00:57:53,370 --> 00:57:57,820 Deci, puteți descărca acest lucru și de fapt gasiti pe computer. 1096 00:57:57,820 --> 00:58:00,940 Și construi și de fapt compila-l pe dispozitiv. 1097 00:58:00,940 --> 00:58:04,710 Dar, în esență, procesul a fost aceasta, creați storyboard-- 1098 00:58:04,710 --> 00:58:08,080 sau mai degrabă nu create-- dar selectați storyboard. 1099 00:58:08,080 --> 00:58:15,030 Și, de fapt we'll-- dacă nu mind-- vom lua doar câteva secunde 1100 00:58:15,030 --> 00:58:18,390 pentru a vă arăta cum de fapt acest lucru a fost făcut. 1101 00:58:18,390 --> 00:58:22,430 1102 00:58:22,430 --> 00:58:27,820 >> Doar astfel încât cum putem de fapt realiza acest lucru se face un pic mai mult 1103 00:58:27,820 --> 00:58:28,360 aparent. 1104 00:58:28,360 --> 00:58:30,651 Vedere cerere unică, eu sunt O să numesc acest seminar 1105 00:58:30,651 --> 00:58:35,330 patru reprezentând acest număr special. 1106 00:58:35,330 --> 00:58:36,335 Salvați-l pe desktop. 1107 00:58:36,335 --> 00:58:39,890 1108 00:58:39,890 --> 00:58:42,110 OK, o să faceți clic pe rezumat. 1109 00:58:42,110 --> 00:58:47,030 Și ce am de gând să fac este de a găsi punctul meu de vedere imaginii, 1110 00:58:47,030 --> 00:58:50,940 glisați-o pe utilizator mea interfață și centru-l. 1111 00:58:50,940 --> 00:58:54,850 Acum doar de centrare, din păcate, nu este de gând să facă un întreg lot, 1112 00:58:54,850 --> 00:58:58,680 cu excepția pentru un ecran că este această dimensiune exact. 1113 00:58:58,680 --> 00:59:03,950 >> Astfel, ne putem convinge de faptul că prin Dați clic pe acest lucru dublu cerc, 1114 00:59:03,950 --> 00:59:08,290 aducând acest poziție favorabilă meniul aici se schimba 1115 00:59:08,290 --> 00:59:11,110 pentru a previzualiza, unde vom efectiv obține o șansă pentru a previzualiza modul 1116 00:59:11,110 --> 00:59:13,530 acest lucru va de fapt uita-te pe alte dispozitive. 1117 00:59:13,530 --> 00:59:16,500 După cum se poate observa, nu face chiar vezi-l pe acest caz particular. 1118 00:59:16,500 --> 00:59:18,500 Așa că am de gând să închidă asta pentru acum. 1119 00:59:18,500 --> 00:59:22,100 >> Și am de gând pentru a selecta această pictogramă în jos, la foarte 1120 00:59:22,100 --> 00:59:23,910 porțiune de jos a ecranului. 1121 00:59:23,910 --> 00:59:26,584 Se spune rezolva problemele de aranjare Auto. 1122 00:59:26,584 --> 00:59:28,000 Ne pare rău, se taie în partea de jos. 1123 00:59:28,000 --> 00:59:36,360 Dar dacă faceți clic pe asta, ceea ce eu obține este această poziție favorabilă up-- merge departe. 1124 00:59:36,360 --> 00:59:39,740 1125 00:59:39,740 --> 00:59:51,220 Ceea ce am obține este acest pop-up care permite-mi să adaug constrângeri lipsă. 1126 00:59:51,220 --> 00:59:53,780 Și de a face ca va atunci un fel de al bloca 1127 00:59:53,780 --> 00:59:56,640 în porțiunea centrală a Ecranul cum am putea aștepta. 1128 00:59:56,640 --> 01:00:00,520 >> Acum, în scopul de a obține acest buton pe deasupra, am nevoie pentru a merge la Editor. 1129 01:00:00,520 --> 01:00:05,010 Du-te la In Embed și faceți clic pe Controler de navigare. 1130 01:00:05,010 --> 01:00:08,900 Ceea ce va face este că se va adăuga acest altă componentă tot la ea, 1131 01:00:08,900 --> 01:00:11,310 dar se va lega de fapt înapoi la UI meu original. 1132 01:00:11,310 --> 01:00:14,450 Și detaliile, din nou, noi nu facem într-adevăr nevoie să aibă grijă de acum. 1133 01:00:14,450 --> 01:00:16,710 Dar eu vreau să aibă o bara de instrumente în partea de jos. 1134 01:00:16,710 --> 01:00:18,530 Deci, voi verifica Bara de instrumente Spectacole. 1135 01:00:18,530 --> 01:00:21,870 >> Și aceasta oferă în opinia noastră, care este acum în altă parte, 1136 01:00:21,870 --> 01:00:23,900 putem vedea e legat aici. 1137 01:00:23,900 --> 01:00:28,710 Acesta oferă acum o bară de instrumente în partea de jos a UI mea. 1138 01:00:28,710 --> 01:00:34,770 Deci, acum, mai degrabă decât selectarea unui vizualizare imagine, pot găsi o etichetă, 1139 01:00:34,770 --> 01:00:41,140 sau mai degrabă un toolbar-- Să vedem, unde e asta? 1140 01:00:41,140 --> 01:00:41,890 Ce se numește? 1141 01:00:41,890 --> 01:00:49,760 Un element button-- bar-- item-- sorry-- bar element buton. 1142 01:00:49,760 --> 01:00:54,590 Plop că există și se aplică un cuplu spatii de flexibile pe fiecare parte 1143 01:00:54,590 --> 01:00:57,429 pana in centru, de fapt asta. 1144 01:00:57,429 --> 01:00:58,970 Deci, acum am creat UI mea, practic. 1145 01:00:58,970 --> 01:01:01,428 Și eu pot da un nume de dublu click la foarte de sus 1146 01:01:01,428 --> 01:01:04,880 aici și spune galerie web și așa mai departe. 1147 01:01:04,880 --> 01:01:08,100 Acum, din nou, acestea sunt elemente că există prin ele însele. 1148 01:01:08,100 --> 01:01:10,400 Și am să vă conectați le codul meu care 1149 01:01:10,400 --> 01:01:14,297 Pot face prin aducerea din nou această pictogramă dublu cerc, 1150 01:01:14,297 --> 01:01:15,380 schimba din previzualizare. 1151 01:01:15,380 --> 01:01:18,950 Care, apropo, acum putem vedea este frumos centrat si va arata bine 1152 01:01:18,950 --> 01:01:23,720 pe o varietate de dispozitive. 1153 01:01:23,720 --> 01:01:27,280 >> Treceți la automat, care va aduce codul ViewController. 1154 01:01:27,280 --> 01:01:29,030 Și acum această parte este important. 1155 01:01:29,030 --> 01:01:34,590 În scopul pentru tine de a conecta aceste două elemente, codul de UI, 1156 01:01:34,590 --> 01:01:36,680 selectați elementul pe care doriți să vă conectați. 1157 01:01:36,680 --> 01:01:39,570 Deci, în acest caz, ne vom de fapt, doresc să codifica 1158 01:01:39,570 --> 01:01:43,520 schimba imaginea care este conținut în acest punct de vedere imagine UI. 1159 01:01:43,520 --> 01:01:47,070 Deci, dacă vă controlați faceți clic pe vizualizarea imaginii și trageți, 1160 01:01:47,070 --> 01:01:51,960 veți observa că veți obține un bar mic, cand eliberati de tot acest pop 1161 01:01:51,960 --> 01:01:53,550 va avea loc în sus. 1162 01:01:53,550 --> 01:01:56,470 >> Și se spune că vom a crea o conexiune. 1163 01:01:56,470 --> 01:01:59,300 Și de aici vreau să-l dea un nume, ceva de genul galerie. 1164 01:01:59,300 --> 01:02:00,240 Hit Enter. 1165 01:02:00,240 --> 01:02:03,040 Și aceasta prevede de fapt o galerie variabilă numită 1166 01:02:03,040 --> 01:02:08,600 că pot referință apoi în codul meu pentru a schimba imaginea, de exemplu. 1167 01:02:08,600 --> 01:02:10,430 Deci, cum de fapt sa te uiti acest cod? 1168 01:02:10,430 --> 01:02:13,030 Ei bine, din nou, eu nu vreau să petrec prea mult timp pe ea. 1169 01:02:13,030 --> 01:02:15,430 Și eu vă încurajez să descarcati-l și să ia o privire. 1170 01:02:15,430 --> 01:02:18,330 Dar unul dintre cele mai aspect important este codul 1171 01:02:18,330 --> 01:02:20,980 care preia de fapt o imagine. 1172 01:02:20,980 --> 01:02:26,470 >> Deci, în acest caz, eu vreau pentru a obține în fotografiile mele 1173 01:02:26,470 --> 01:02:28,520 matrice, care este conținut în clasa mea. 1174 01:02:28,520 --> 01:02:33,390 Vreau definiți numele și adresa URL care a fost analizat din acest JSON. 1175 01:02:33,390 --> 01:02:39,810 De fapt, cere dispozitivul pentru a obține URL-ul, să-i aducă URL-ul de la acest lucru, 1176 01:02:39,810 --> 01:02:44,060 iar apoi adu datele din conținutul care URL. 1177 01:02:44,060 --> 01:02:49,430 Apoi transforma că datele într-o imagine prin care trece aceasta în imaginea UI. 1178 01:02:49,430 --> 01:02:52,880 Deci, din nou, acestea sunt toate diferite tipuri de obiecte, diferite tipuri de clase. 1179 01:02:52,880 --> 01:02:58,410 >> Și atunci eu pot seta apoi mea gallery.image egală cu datele. 1180 01:02:58,410 --> 01:03:00,750 Și asta e un fel de carne din aceasta că de fapt este atunci 1181 01:03:00,750 --> 01:03:08,250 capabil de a schimba schimba datele from-- Imaginea de la una la alta. 1182 01:03:08,250 --> 01:03:10,660 Deci, din nou, sperăm acum o mulțime de construcții 1183 01:03:10,660 --> 01:03:12,240 va face un pic mai mult sens. 1184 01:03:12,240 --> 01:03:15,260 Observați că există unele puncte de exclamare aici. 1185 01:03:15,260 --> 01:03:19,810 Punctele de exclamare sunt în esență legate de optionalele. 1186 01:03:19,810 --> 01:03:22,657 >> Ceea ce vreau să spun este practic că chiar și fără a verifica 1187 01:03:22,657 --> 01:03:24,490 pentru a vedea dacă există date în cadrul acestui opțional, 1188 01:03:24,490 --> 01:03:27,140 Am de gând să mergeți mai departe și să își asume că există și despachetez ea. 1189 01:03:27,140 --> 01:03:31,340 Amintiți-vă că am folosit analogia un fel de pachet pentru optionalele 1190 01:03:31,340 --> 01:03:34,700 și trebuie să despachetez pachet și trageți de date afară. 1191 01:03:34,700 --> 01:03:37,570 Semnul de exclamare forțe care se întâmplă de fapt. 1192 01:03:37,570 --> 01:03:39,590 >> Dar știu că acest lucru este sigur că am verificat 1193 01:03:39,590 --> 01:03:42,070 pentru a vedea dacă datele imagine este egal la zero, am verifica de fapt 1194 01:03:42,070 --> 01:03:45,420 pentru a vedea dacă acel opțional a fost, de fapt, nu a reușit. 1195 01:03:45,420 --> 01:03:47,110 Dacă avea, de fapt, nu a reușit deja. 1196 01:03:47,110 --> 01:03:52,450 Și așa sunt sigur că, odată ce ajung la acest punctul I pot desface în condiții de siguranță a datelor. 1197 01:03:52,450 --> 01:03:55,710 S-ar putea, de asemenea, vedea în forma de un semn de întrebare. 1198 01:03:55,710 --> 01:03:59,100 Deci, dacă ne-am defilați în jos pentru a în cazul în care am Trebuie să analiza efectiv datele. 1199 01:03:59,100 --> 01:04:01,850 >> Deci, nu vă lăsați descurajați de aceste fel de nume lungi. 1200 01:04:01,850 --> 01:04:06,580 Puteți găsi în Apple site-ul dezvoltator mult 1201 01:04:06,580 --> 01:04:09,620 de referințe la toate obiecte și toate procesele 1202 01:04:09,620 --> 01:04:11,170 care de fapt face acest lucru posibil. 1203 01:04:11,170 --> 01:04:15,990 Dar observați că acest lucru este, în esență, o funcție în cazul în care l-am trece unele date. 1204 01:04:15,990 --> 01:04:18,410 Și să mă întorc un fel de date. 1205 01:04:18,410 --> 01:04:24,190 Și am nevoie pentru a utiliza acest drept cuvânt cheie pentru ao transforma în acest nsdictionary? 1206 01:04:24,190 --> 01:04:26,490 Care este, din nou, un nsdictionary opțional. 1207 01:04:26,490 --> 01:04:31,070 Care apoi am nevoie pentru a verificați pentru a vedea dacă există. 1208 01:04:31,070 --> 01:04:37,130 >> Deci, eu pot folosi că dacă lăsa egal de succes analizat, 1209 01:04:37,130 --> 01:04:40,620 atunci știu că opționale conține de fapt, unele date. 1210 01:04:40,620 --> 01:04:43,840 Sau ce am făcut aici a fost să doar presupune că, dacă există 1211 01:04:43,840 --> 01:04:49,067 au existat erori că este, de fapt, în condiții de siguranță. 1212 01:04:49,067 --> 01:04:51,400 Bine, vreau să mulțumesc voi toți foarte mult pentru venirea. 1213 01:04:51,400 --> 01:04:53,540 Știu că a fost o mulțime, dar a fost doar o oră 1214 01:04:53,540 --> 01:04:55,920 pentru a vorbi despre unele chestii destul de avansat. 1215 01:04:55,920 --> 01:04:59,640 Și așa sperăm veți obține o șansă pentru a descărca toate din Codul 1216 01:04:59,640 --> 01:05:01,657 și să ia o mai bună, mai uite amănunțită la ea. 1217 01:05:01,657 --> 01:05:04,240 Intr-un fel convinge-te de toate din lucrurile care se întâmplă. 1218 01:05:04,240 --> 01:05:06,800 Și vreau să vă mulțumesc toate, din nou, venit. 1219 01:05:06,800 --> 01:05:08,760 Și noroc cu proiectele finale. 1220 01:05:08,760 --> 01:05:10,600 O zi bună. 1221 01:05:10,600 --> 01:05:11,467