1 00:00:00,000 --> 00:00:03,332 >> [MUSIC JOC] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> DAN AMRMENDARIZ: Toată lumea, bun venit la seminarul CS50, 4 00:00:09,590 --> 00:00:11,690 iOS App Dezvoltare cu Swift. 5 00:00:11,690 --> 00:00:15,690 Sunt Dan Armendariz, si eu sunt un preceptor de informatică aici la Harvard. 6 00:00:15,690 --> 00:00:21,510 >> Și următoarea oră va fi un tur vârtej de vânt de la fel de mult lucruri 7 00:00:21,510 --> 00:00:25,160 despre acest subiect așa cum putem potrivi. 8 00:00:25,160 --> 00:00:29,170 Voi posta toate codul sursă că veți vedea astăzi on-line. 9 00:00:29,170 --> 00:00:31,990 S-ar putea să nu fim în stare să de fapt, du-te peste tot 10 00:00:31,990 --> 00:00:34,810 că sunt că sunt arătându-vă în această oră. 11 00:00:34,810 --> 00:00:37,580 Dar cel puțin sperăm prin comentariile codul sursă, 12 00:00:37,580 --> 00:00:40,830 vei putea să încercați să dau seama ce exact se întâmplă pentru acele lucruri 13 00:00:40,830 --> 00:00:42,950 că nu destul de a ajunge la. 14 00:00:42,950 --> 00:00:46,970 >> În general, structura de Discuție de astăzi va fi după cum urmează. 15 00:00:46,970 --> 00:00:52,820 Vom începe în a face unele de bază sintaxă cu limba Swift, 16 00:00:52,820 --> 00:00:56,290 a intra în unele dintre cele mai avansate sintaxă a limbii Swift. 17 00:00:56,290 --> 00:00:59,560 Deoarece limba este într-adevăr modernă și 18 00:00:59,560 --> 00:01:02,110 are o multime de nivel înalt caracteristici, lucruri pe care nu le-am 19 00:01:02,110 --> 00:01:06,600 văzut în C de-a lungul CS50, sau Chiar și unele celelalte limbi 20 00:01:06,600 --> 00:01:09,310 pe care le-am început utilizarea în CS50 ca PHP, 21 00:01:09,310 --> 00:01:12,670 așa că am de gând să aibă de a încerca să introduce, de asemenea unele subiecte care 22 00:01:12,670 --> 00:01:18,580 sunt legate de limbaje de nivel superior ca să nu vadă în profunzime în CS50, 23 00:01:18,580 --> 00:01:21,380 dar veți vedea mai târziu clase de informatică. 24 00:01:21,380 --> 00:01:25,290 Asa ca va fi un bine ambalate oră. 25 00:01:25,290 --> 00:01:28,897 Și vă rugăm să nu ezitați să mă lase știu dacă aveți întrebări. 26 00:01:28,897 --> 00:01:30,730 Deci, dacă sunteți interesat în a face dezvoltare 27 00:01:30,730 --> 00:01:34,442 cu Swift, sau într-adevăr orice dezvoltare app iOS, 28 00:01:34,442 --> 00:01:35,900 există o serie de cerințe. 29 00:01:35,900 --> 00:01:39,940 Mai întâi de toate, trebuie să fie folosind un Mac, care rulează în exemplele 30 00:01:39,940 --> 00:01:43,880 că vom folosi astăzi, o relativ nouă versiune a sistemului de operare 31 00:01:43,880 --> 00:01:46,580 X. În acest caz, eu sunt difuzate X 10.5. 32 00:01:46,580 --> 00:01:48,600 Puteți fi difuzate 10.11, dacă doriți. 33 00:01:48,600 --> 00:01:52,430 Dar tot ceea ce ai de gând să vezi este de a implica Xcode 7 și mai târziu, 34 00:01:52,430 --> 00:01:56,271 care are cea mai recentă versiune de Swift, care este Swift 2.0. 35 00:01:56,271 --> 00:01:58,270 Aceasta este de fapt o destul de distincție importantă. 36 00:01:58,270 --> 00:02:01,510 O mulțime de sintaxa are schimbat destul de semnificativ 37 00:02:01,510 --> 00:02:05,890 în unele cazuri, de la Swift 1.0, care a fost lansat anul trecut, 38 00:02:05,890 --> 00:02:08,514 Swift 2.0, care tocmai a ieșit în această toamnă. 39 00:02:08,514 --> 00:02:09,889 Așa că am de gând să arate Swift 2.0. 40 00:02:09,889 --> 00:02:13,020 O mulțime de lucruri pe care te pentru Online 41 00:02:13,020 --> 00:02:18,040 atunci când sunteți încercarea de a obține suplimentare informații despre o varietate de lucruri, 42 00:02:18,040 --> 00:02:20,710 poate doriți în mod explicit căuta Swift 2 43 00:02:20,710 --> 00:02:24,950 mai degrabă decât pur și simplu vechi Swift pentru a face sigur că veți obține sintaxa corectă. 44 00:02:24,950 --> 00:02:26,920 >> De fapt, acesta este în general adevărat. 45 00:02:26,920 --> 00:02:31,210 Există o cantitate rapid de dezvoltare întâmplă în limba Swift 46 00:02:31,210 --> 00:02:35,110 încă de la Apple a lansat, cred că ce, a fost un pic mai mult de un an 47 00:02:35,110 --> 00:02:36,370 acum. 48 00:02:36,370 --> 00:02:39,080 Și lucrurile s-au schimbat dramatic în acest timp. 49 00:02:39,080 --> 00:02:42,160 Și așa că nu fi frustrat dacă, atunci când sunteți în căutarea în jurul valorii de 50 00:02:42,160 --> 00:02:48,310 pentru subiecte pe Swift sau modul de a realiza ceva folosind un cod de exemplu 51 00:02:48,310 --> 00:02:51,210 sau ceva care nu face lucrează efectiv pe Swift 2.0. 52 00:02:51,210 --> 00:02:53,790 Asigurați-vă că sunteți în căutarea în mod special pentru această versiune 53 00:02:53,790 --> 00:02:58,690 pentru a încerca să reducă la minimum efectele diferite versiuni și cele felul de lucruri. 54 00:02:58,690 --> 00:03:02,470 >> Voi încerca să subliniez doar câteva lucruri care sunt diferite de versiuni mai vechi. 55 00:03:02,470 --> 00:03:03,970 Dar e ceva să fiți atenți pentru. 56 00:03:03,970 --> 00:03:06,770 Asta, probabil, va fi una dintre cele mai mari dureri de cap cele mai 57 00:03:06,770 --> 00:03:11,010 pe care le va avea cu Swift este găsirea exemplu cod care este mai veche, chiar și numai 58 00:03:11,010 --> 00:03:14,050 de câteva luni, încearcă să folosească l în proiectul dvs. mai modern. 59 00:03:14,050 --> 00:03:15,430 Și-l pur și simplu nu funcționează. 60 00:03:15,430 --> 00:03:18,530 Vei primi erori de compilare, sintaxă erori, tot felul de chestii nebun. 61 00:03:18,530 --> 00:03:21,580 Deci, doar să fie pacient cu că, și, sperăm, veți 62 00:03:21,580 --> 00:03:24,200 au o experiență destul de frumos cu ansamblu Swift. 63 00:03:24,200 --> 00:03:28,430 >> Acum puteți de fapt join-- și sper am de fapt, încă acest acest year-- 64 00:03:28,430 --> 00:03:30,910 CS 50 de Apple App echipa de dezvoltare, care 65 00:03:30,910 --> 00:03:34,680 vă va permite să instalați aplicații care vă creați pe dispozitivele iOS. 66 00:03:34,680 --> 00:03:39,190 Deci, să ia o privire la acest URL dacă sunteți interesat în a face asta. 67 00:03:39,190 --> 00:03:41,450 >> Deci, doar o pereche de lucruri despre Swift însuși. 68 00:03:41,450 --> 00:03:43,580 Este un limbaj compilat. 69 00:03:43,580 --> 00:03:45,870 Dar veți vedea că unele din caracteristicile pe care le folosim 70 00:03:45,870 --> 00:03:50,650 Permiteti-i sa fie utilizate, de asemenea, într-un pic ca un mod interpretat, de asemenea. 71 00:03:50,650 --> 00:03:56,350 >> O mulțime de sintaxa este împrumutat de la C. Se bazează și scris în C. 72 00:03:56,350 --> 00:04:00,400 Și așa vom vedea că există o mulțime de takeaways 73 00:04:00,400 --> 00:04:04,450 de la cunoștințele existente de la C care putem port pentru Swift. 74 00:04:04,450 --> 00:04:07,290 >> Dar există lucruri pe care face foarte diferit de C. 75 00:04:07,290 --> 00:04:08,860 Este foarte puternic tastat. 76 00:04:08,860 --> 00:04:10,380 Nu e de management automat al memoriei. 77 00:04:10,380 --> 00:04:13,170 Nu te va trebui să utilizați malloc sau oriunde liber. 78 00:04:13,170 --> 00:04:15,110 Este proiectat pentru generalitate. 79 00:04:15,110 --> 00:04:19,480 Deci, cu alte cuvinte, îl puteți folosi în tot felul de contexte, de la Apple Watch 80 00:04:19,480 --> 00:04:26,290 la iPhone tot drumul până la OS X, și chiar unele servere, chiar și unele scripting. 81 00:04:26,290 --> 00:04:28,400 Dar vom vedea că suport pentru scripting 82 00:04:28,400 --> 00:04:31,360 nu este destul de acolo încă ca este în alte limbi. 83 00:04:31,360 --> 00:04:34,930 Deci, cel mai probabil vei utilizați acest exclusiv pentru dezvoltare 84 00:04:34,930 --> 00:04:37,060 pe Mac-ul sau iPhone-ul. 85 00:04:37,060 --> 00:04:40,150 >> Si are o multime de caracteristici moderne. 86 00:04:40,150 --> 00:04:43,380 Și o mulțime de aceste lucruri sunt lucruri pe care vom încerca să abordeze astăzi, 87 00:04:43,380 --> 00:04:47,590 dar, de asemenea subiecte noastre, care sincer, putem dedica cursuri întregi. 88 00:04:47,590 --> 00:04:50,140 De fapt, CS 51, care este oferit semestrul viitor, 89 00:04:50,140 --> 00:04:53,990 se concentrează foarte mult pe aceste teme care sunt descrise mai jos. 90 00:04:53,990 --> 00:04:56,781 Astfel încât să puteți petrece un semestru întreg înțelegerea acestor lucruri. 91 00:04:56,781 --> 00:04:58,530 Dar vom încerca să pentru a obține prin intermediul lor 92 00:04:58,530 --> 00:05:00,800 cel puțin suficient ca tu poate înțelege ce este 93 00:05:00,800 --> 00:05:03,700 întâmplă atunci când te uiți la un program de Swift 94 00:05:03,700 --> 00:05:07,310 și să fie capabil de a hack-ți de drum prin ea pentru proiectul final. 95 00:05:07,310 --> 00:05:10,780 >> Acum, unul dintre cele mai bune moduri în care puteți obține informații suplimentare cu privire la acest 96 00:05:10,780 --> 00:05:14,700 este sincer doar prin Apple prevăzut documentație pentru Swift. 97 00:05:14,700 --> 00:05:16,930 Există o mulțime de API-uri care sunt disponibile. 98 00:05:16,930 --> 00:05:21,170 Și aceasta este o bază bună acasă pentru tine să caute, anumite lucruri pe care le 99 00:05:21,170 --> 00:05:23,020 vrei sa faci cu un API care implica iOS. 100 00:05:23,020 --> 00:05:26,350 Dacă doriți să utilizați camera pentru exemplu, puteți începe căutarea aici, 101 00:05:26,350 --> 00:05:32,540 și, de asemenea, folosi Google și stiva Preaplin în timp ce în mod normal. 102 00:05:32,540 --> 00:05:36,670 >> Orice întrebări cu privire la acest înainte de a ne sari chiar în? 103 00:05:36,670 --> 00:05:37,880 In regula. 104 00:05:37,880 --> 00:05:38,700 Să mergem mai departe. 105 00:05:38,700 --> 00:05:42,620 >> Deci în primul rând, am o Numărul de exemplu fișiere. 106 00:05:42,620 --> 00:05:46,040 Și am de gând să încerc să-și intensifice prin ele relativ repede. 107 00:05:46,040 --> 00:05:49,190 Acesta este fișierul Hello World pentru Swift. 108 00:05:49,190 --> 00:05:51,050 Este foarte simplu. 109 00:05:51,050 --> 00:05:54,360 Nu e cale mai multe comentarii decât există codul actual. 110 00:05:54,360 --> 00:05:57,100 Observați codul actual este la foarte jos pe linia 14. 111 00:05:57,100 --> 00:05:57,980 Se spune de imprimare. 112 00:05:57,980 --> 00:05:59,820 Și atunci este un apel de funcție. 113 00:05:59,820 --> 00:06:03,010 Suntem într-un mod string numit Hello CS50. 114 00:06:03,010 --> 00:06:04,750 Observați că nu există nici punct și virgulă. 115 00:06:04,750 --> 00:06:07,010 Observați că nu există nici principal Int. 116 00:06:07,010 --> 00:06:10,392 Nu e nici unul dintre cruft că am avut-o cu C. 117 00:06:10,392 --> 00:06:15,020 Când folosim Swift în acest fel, care este doar scris într-un fișier text 118 00:06:15,020 --> 00:06:18,340 și stocate pe computerul meu, apoi Pot să-l compilați și a alerga it. 119 00:06:18,340 --> 00:06:20,920 >> Observați că aici eu sunt nu folosesc IDE CS50. 120 00:06:20,920 --> 00:06:24,460 Acest lucru presupune că eu sunt de funcționare și că eu sunt pe OS X, 121 00:06:24,460 --> 00:06:27,870 și că am Xcode deja instalate pe această mașină, pentru acest 122 00:06:27,870 --> 00:06:29,080 a de fapt funcția. 123 00:06:29,080 --> 00:06:33,349 Dar aceasta este doar un fisier text normal că putem compila și edita apoi. 124 00:06:33,349 --> 00:06:34,890 Deci, să vedem cum funcționează de fapt. 125 00:06:34,890 --> 00:06:37,430 Ce se întâmplă dacă vreau să-l compilați? 126 00:06:37,430 --> 00:06:40,450 1.swift swiftc. 127 00:06:40,450 --> 00:06:42,960 După o clipă sau două, l va vedea că acum avem 128 00:06:42,960 --> 00:06:45,360 alcătuit această într-un fișier numit 1. 129 00:06:45,360 --> 00:06:51,090 Și acum ne-am imprimat CS50 nostru, aplicatia noastra Hello World destul de. 130 00:06:51,090 --> 00:06:54,690 >> Observați un lucru ca bine este faptul că în mod implicit, 131 00:06:54,690 --> 00:07:00,090 nu am avut pentru a introduce o / n pentru a imprima o nouă linie. 132 00:07:00,090 --> 00:07:05,315 În mod implicit, funcția de imprimare în Swift va imprima o nouă linie pentru tine. 133 00:07:05,315 --> 00:07:09,284 Puteți trece o suplimentare opționale parametru pentru a spune nu să facă acest lucru. 134 00:07:09,284 --> 00:07:10,950 Dar Google pentru mai multe informații cu privire la acest lucru. 135 00:07:10,950 --> 00:07:13,450 În mod implicit, se va face pe linia de imprimare. 136 00:07:13,450 --> 00:07:16,420 >> Bine, așa că să trecem mai departe apoi la alte lucruri. 137 00:07:16,420 --> 00:07:18,620 Deci, cum putem defini de fapt variabile? 138 00:07:18,620 --> 00:07:21,960 Putem face asta cu ajutorul unul dintre cele două metode. 139 00:07:21,960 --> 00:07:26,122 Iar cel pe care vreau să-ți spun despre prima este această definiție lit.. 140 00:07:26,122 --> 00:07:27,830 Și acest lucru este important deoarece în mod eficient 141 00:07:27,830 --> 00:07:30,240 ceea ce facem este definirea unui constantă. 142 00:07:30,240 --> 00:07:34,010 Vom crea o variabilă pentru a, sau mai degrabă un nume numit constant, 143 00:07:34,010 --> 00:07:38,200 oferă să-l unele data-- în acest caz, șirul Dan. 144 00:07:38,200 --> 00:07:40,630 Dar, prin utilizarea acestui lit. cuvinte cheie, spunem 145 00:07:40,630 --> 00:07:43,860 că această variable-- sau din nou constant-- numit 146 00:07:43,860 --> 00:07:46,220 Numele nu va fi schimbat. 147 00:07:46,220 --> 00:07:50,120 O să fie de-a lungul imuabile durata acestui program 148 00:07:50,120 --> 00:07:53,100 sau întreaga Durata de contextul 149 00:07:53,100 --> 00:07:55,390 că variabila este disponibil. 150 00:07:55,390 --> 00:08:00,096 >> Acest lucru este foarte important ca atunci când aveți unele date care nu sunt 151 00:08:00,096 --> 00:08:02,970 va schimba în programul tău, și veți vedea o varietate de exemple 152 00:08:02,970 --> 00:08:06,790 când vrem să utilizați lasa față de celălalt sintaxa, 153 00:08:06,790 --> 00:08:11,040 este important să utilizați lasa ori de câte ori este posibil, deoarece acest sesizează 154 00:08:11,040 --> 00:08:13,740 limba pe care este nu va fi schimbat, 155 00:08:13,740 --> 00:08:16,590 și se poate efectua de fapt o mulțime de optimizări 156 00:08:16,590 --> 00:08:19,560 pentru a îmbunătăți viteza și siguranța programul. 157 00:08:19,560 --> 00:08:24,480 Și de siguranță, nu înseamnă să accident cu erori nebun 158 00:08:24,480 --> 00:08:27,910 că am putea fi obișnuiți să vadă în C. 159 00:08:27,910 --> 00:08:32,460 >> Atunci putem folosi șir interpolare a încapsula acest într-un șir. 160 00:08:32,460 --> 00:08:35,200 Astfel încât să putem vedea în acest linie de imprimare, imprimați Salut, 161 00:08:35,200 --> 00:08:38,950 și apoi folosind backslash parens deschise, și apoi numele variabilei mea, 162 00:08:38,950 --> 00:08:41,809 în acest caz continuă, închide paranteze. 163 00:08:41,809 --> 00:08:46,400 Sunt, în esență, atunci punerea conținutul acestei variabile numite nume 164 00:08:46,400 --> 00:08:50,240 în interiorul șirului și apoi imprimarea rezultatul acolo. 165 00:08:50,240 --> 00:08:54,070 >> Există o altă modificare a acestui fișier care este faptul că am, la foarte de sus, 166 00:08:54,070 --> 00:08:57,340 pus într-o linie shebang, care practic doar specifică 167 00:08:57,340 --> 00:09:00,180 că doriți să utilizați Interpret Swift, care 168 00:09:00,180 --> 00:09:04,190 înseamnă că nu mai trebuie să compila acest program special. 169 00:09:04,190 --> 00:09:06,567 Pot rula la fel ca și propria script. 170 00:09:06,567 --> 00:09:09,400 Dar acest lucru este, în acest caz, în spatele scenele fiind compilate și apoi 171 00:09:09,400 --> 00:09:10,030 fiind a alerga. 172 00:09:10,030 --> 00:09:13,540 E doar invizibil pentru noi. 173 00:09:13,540 --> 00:09:15,880 >> Bine, așa că să trecem mai departe. 174 00:09:15,880 --> 00:09:19,650 Deci, există un pic de șmecherie că sa întâmplat înainte. 175 00:09:19,650 --> 00:09:23,230 Ți-am arătat că ar putea defini o constantă. 176 00:09:23,230 --> 00:09:25,490 Și am putea oferi unele date pentru a face acest lucru. 177 00:09:25,490 --> 00:09:29,240 Dar în acest caz, observați că nu am făcut specificați fapt tipul de date 178 00:09:29,240 --> 00:09:29,820 asta e. 179 00:09:29,820 --> 00:09:32,780 Și asta pentru că compilator, Swift poate 180 00:09:32,780 --> 00:09:36,910 deduce tipul de date pe bază de doar pe datele pe care am pus în ea. 181 00:09:36,910 --> 00:09:41,760 Pentru că știe că prin evaluarea această variabilă chiar aici, acest drept date 182 00:09:41,760 --> 00:09:43,370 aici, se știe că este un șir. 183 00:09:43,370 --> 00:09:48,690 Și așa mai departe acest nume este, prin urmare constantă O să fie un șir, de asemenea. 184 00:09:48,690 --> 00:09:52,730 >> Dar putem fi, de asemenea, în mod explicit despre tipul asta e 185 00:09:52,730 --> 00:09:55,790 vom folosi pentru a constante sau variabile 186 00:09:55,790 --> 00:10:01,590 prin utilizarea acestui sintaxa instead-- să String nume de colon este egal 187 00:10:01,590 --> 00:10:05,530 Dan, care în acest caz înseamnă că suntem merge pentru a defini un nume numit constant. 188 00:10:05,530 --> 00:10:07,150 O să fie de tip String. 189 00:10:07,150 --> 00:10:10,550 Iar valoarea va fi Dan. 190 00:10:10,550 --> 00:10:12,550 Acum, un alt mod care putem crea variables-- 191 00:10:12,550 --> 00:10:15,549 și acestea sunt variabile mutabile, care înseamnă că suntem, de fapt, merge 192 00:10:15,549 --> 00:10:19,670 pentru a schimba conținutul lor candva în durata contextului 193 00:10:19,670 --> 00:10:23,890 că variabilă este defined-- noi utilizați cuvântul cheie var în loc de să. 194 00:10:23,890 --> 00:10:27,400 Dar, din nou, în mod implicit, dacă nu știi care aveți nevoie pentru a manipula aceste date, 195 00:10:27,400 --> 00:10:30,510 încercați să utilizați lasa pentru îmbunătățiri de performanță. 196 00:10:30,510 --> 00:10:33,740 >> În acest caz, pot apoi specifica tipul de date 197 00:10:33,740 --> 00:10:37,650 care ne așteptăm să fie în interiorul acest nou variabilă numită etichetă. 198 00:10:37,650 --> 00:10:38,800 O să fie un șir. 199 00:10:38,800 --> 00:10:43,030 Și vom apoi la înlănțui două șiruri împreună, șirul salut, 200 00:10:43,030 --> 00:10:48,070 și șirul reprezentat de variabilă, sau mai degrabă numele constantă. 201 00:10:48,070 --> 00:10:50,660 >> Deci acest lucru este frumos, pentru că acest lucru este oarecum ca în PHP pe care le 202 00:10:50,660 --> 00:10:52,250 au foarte usor șir concatenare. 203 00:10:52,250 --> 00:10:56,350 Noi nu trebuie să în mod automat folosi orice fel de management al memoriei 204 00:10:56,350 --> 00:11:00,580 pentru a crește mărimea și de a face orice fel de lucruri amuzante acolo. 205 00:11:00,580 --> 00:11:05,040 Aceasta funcționează ca ne-am astepta, de fapt. 206 00:11:05,040 --> 00:11:09,370 >> Bine, orice întrebări cu privire la acest lucru? 207 00:11:09,370 --> 00:11:12,520 >> Acum, motivul pentru care alte avem nevoie de tine au capacitatea de 208 00:11:12,520 --> 00:11:15,490 pentru a putea defini ceea ce tip de variabile de date sunt 209 00:11:15,490 --> 00:11:18,170 este pentru că, uneori, noi nu doresc să inițializa variabilele 210 00:11:18,170 --> 00:11:21,080 cu unele date de la punct de definiție. 211 00:11:21,080 --> 00:11:23,500 Deci, în acest caz, să zicem pe care vreau să încep introducerea 212 00:11:23,500 --> 00:11:25,040 unele clase într-o carte grad. 213 00:11:25,040 --> 00:11:27,530 Ei bine, știu că una dintre variabile pe care vreau să fie 214 00:11:27,530 --> 00:11:30,280 va fi un grad mutabil. 215 00:11:30,280 --> 00:11:33,010 Și noi, de asemenea, știu că am vrei sa fie un întreg. 216 00:11:33,010 --> 00:11:36,030 Dar poate că nu încă au acest grad disponibil. 217 00:11:36,030 --> 00:11:39,570 >> În Swift, trebuie să defini tipul de date 218 00:11:39,570 --> 00:11:44,000 care este asociat cu un variabilă sau o lasa constant 219 00:11:44,000 --> 00:11:47,840 înainte de a putea de fapt utiliza variabila. 220 00:11:47,840 --> 00:11:51,170 Pentru ca este puternic tastat, trebuie să asocieze un tip 221 00:11:51,170 --> 00:11:52,890 cu aceste variabile. 222 00:11:52,890 --> 00:11:56,120 >> Deci, în acest caz, dacă nu Am în mod corespunzător inițializat primul cu o valoare, 223 00:11:56,120 --> 00:12:00,520 apoi m-am nevoie să-i spun ce Swift Mă aștept ca tipul de date sa fie. 224 00:12:00,520 --> 00:12:02,650 Și o să rămână același tip de date 225 00:12:02,650 --> 00:12:05,780 de-a lungul istoriei acest program. 226 00:12:05,780 --> 00:12:10,050 >> Acum s-ar putea fi tentat de îndată ce Am creat această variabilă grad 227 00:12:10,050 --> 00:12:13,530 și o furnizat număr întreg de 100, acum dacă am 228 00:12:13,530 --> 00:12:18,540 doriți să încercați să înlănțui un șir cu care întreg, 229 00:12:18,540 --> 00:12:21,610 ar putea fi tentat să folosească în continuare care operatorul de concatenare string 230 00:12:21,610 --> 00:12:24,500 cum am făcut doar câteva linii înainte. 231 00:12:24,500 --> 00:12:26,460 Dar din păcate, de fapt, acest lucru nu se va 232 00:12:26,460 --> 00:12:29,270 locul de muncă, pentru că sunteți efectuarea, în esență, 233 00:12:29,270 --> 00:12:32,380 o operație pe două tipuri diferite. 234 00:12:32,380 --> 00:12:36,856 >> Acum, acest lucru este foarte diferit de alte limbi, cum ar fi PHP, care sunt într-adevăr 235 00:12:36,856 --> 00:12:38,480 goosey Loosey cu fel de tipuri lor. 236 00:12:38,480 --> 00:12:40,030 Sunt la fel ca, da, orice, nu-mi pasă. 237 00:12:40,030 --> 00:12:42,710 Dă-mi un singur tip, și poate voi face ceea ce trebuie. 238 00:12:42,710 --> 00:12:46,060 >> În acest caz, este Swift extrem de stricte cu privire la tipurile 239 00:12:46,060 --> 00:12:47,350 pe care le-a face cu. 240 00:12:47,350 --> 00:12:50,700 Acest operator de însumare sau operatorul de concatenare 241 00:12:50,700 --> 00:12:54,400 are în esență o pereche de diferite opțiuni posibile. 242 00:12:54,400 --> 00:12:56,970 Puteți face însumării cu numere întregi, sau 243 00:12:56,970 --> 00:13:00,870 poate face șir concatenare, și probabil alte lucruri la fel de bine. 244 00:13:00,870 --> 00:13:05,550 Dar dacă operatorul nu recunoaște ceea ce este pe fiecare parte a acestuia, 245 00:13:05,550 --> 00:13:10,452 sau mai degrabă o combinație a celor două tipuri, nu este ceea ce se așteaptă, 246 00:13:10,452 --> 00:13:11,910 atunci va provoca o defecțiune. 247 00:13:11,910 --> 00:13:16,690 >> Deci, în acest caz, ceea ce înseamnă pentru a avea un șir plus un număr întreg? 248 00:13:16,690 --> 00:13:18,880 Ei bine, în contextul acest lucru, probabil că ne-o dorim 249 00:13:18,880 --> 00:13:21,990 pentru a face o operație șir concatenare. 250 00:13:21,990 --> 00:13:26,420 Dar, desigur calculatorului nu are acest tip de context. 251 00:13:26,420 --> 00:13:29,950 Și așa trebuie să oferim că informații suplimentare 252 00:13:29,950 --> 00:13:32,390 pentru a lasa sa stiu ce este că vrem să facem. 253 00:13:32,390 --> 00:13:36,860 >> Deci, cu alte cuvinte, faptul care este puternic tastat Swift 254 00:13:36,860 --> 00:13:39,520 înseamnă că trebuie să faci o pic de lucru suplimentare 255 00:13:39,520 --> 00:13:42,100 să-l pentru a opera mod care le-ar dori. 256 00:13:42,100 --> 00:13:43,710 Dar, ca rezultat, este mai sigur. 257 00:13:43,710 --> 00:13:46,290 Și odată ce ai lua seama de aceste tipuri, 258 00:13:46,290 --> 00:13:49,300 lucrurile începe sincer la locul de muncă destul de bine. 259 00:13:49,300 --> 00:13:52,520 >> Deci, în acest caz, ne-am apoi ar efectua string concatenare 260 00:13:52,520 --> 00:13:56,040 prin turnare în mod explicit întreg la un șir 261 00:13:56,040 --> 00:13:58,490 de ambalaj-l în acest capitalul funcția S String, 262 00:13:58,490 --> 00:14:03,510 și apoi folosind concatenarea string Operatorul de a modifica variabila noastră etichetă, 263 00:14:03,510 --> 00:14:06,280 și apoi imprimați-l. 264 00:14:06,280 --> 00:14:08,420 >> Până acum, bine? 265 00:14:08,420 --> 00:14:12,020 Bine, să trecem mai departe. 266 00:14:12,020 --> 00:14:16,300 >> Acum există o varietate de date tipuri care le putem folosi în Swift. 267 00:14:16,300 --> 00:14:21,620 După cum v-ați obișnuit să, putem crea o gamă mutabil. 268 00:14:21,620 --> 00:14:26,140 Și că matrice poate doar conțin un singur tip. 269 00:14:26,140 --> 00:14:30,360 >> Deci, în acest caz, vom crea o matrice de numere întregi, mutabil care 270 00:14:30,360 --> 00:14:34,800 vom numi note, și vom putea pentru a stoca că în această categorie de piață 271 00:14:34,800 --> 00:14:38,650 format ca ai crescut obișnuit la o varietate de alte limbi. 272 00:14:38,650 --> 00:14:41,150 Dar observați că aici suntem definirea câteva lucruri. 273 00:14:41,150 --> 00:14:45,350 clasele este o variable-- mutabil Nu vom folosi cuvântul cheie lit.. 274 00:14:45,350 --> 00:14:49,620 Asta înseamnă că putem modifica apoi conținutul acestei matrice. 275 00:14:49,620 --> 00:14:53,420 Este de tip Array Int, și putem spune că 276 00:14:53,420 --> 00:14:56,260 pe baza acestor paranteze pătrate aici. 277 00:14:56,260 --> 00:14:58,930 >> Acum, unul dintre lucrurile frumoase despre acest lucru este că noi 278 00:14:58,930 --> 00:15:02,310 au acces la o mulțime de Informatii aditionale 279 00:15:02,310 --> 00:15:07,110 despre matrice folosind doar unele simplu notație punct. 280 00:15:07,110 --> 00:15:10,500 Deci, de exemplu, grades.count oferă pentru a ne 281 00:15:10,500 --> 00:15:14,820 numărul de elemente care exista in acea matrice, care apoi putem accesa destul de 282 00:15:14,820 --> 00:15:19,090 ușor, pur și simplu, folosind ca punct notație. 283 00:15:19,090 --> 00:15:21,830 >> Dacă doriți să adăugați suplimentare articole la această matrice, 284 00:15:21,830 --> 00:15:27,220 nu se poate face stilul PHP în cazul în care tocmai ați defini explicit, 285 00:15:27,220 --> 00:15:30,910 la un anumit index, o anumită valoare pe care doriți să introduceți. 286 00:15:30,910 --> 00:15:37,210 În schimb, utilizați append metodă în tipul matrice 287 00:15:37,210 --> 00:15:40,920 pentru a adăuga acel element, 95, la această listă. 288 00:15:40,920 --> 00:15:45,990 >> Deci, acum această matrice are urmatoarele contents-- 100, 0, 90, 85. 289 00:15:45,990 --> 00:15:49,270 Și acum am anexat 95 și la aceasta. 290 00:15:49,270 --> 00:15:51,830 >> Există și alte modalități putem adăuga lucruri. 291 00:15:51,830 --> 00:15:55,030 Puteți folosi de fapt, un operator de însumare, 292 00:15:55,030 --> 00:15:59,200 care va fi interpretat ca o operație matrice adăugare. 293 00:15:59,200 --> 00:16:04,680 Și puteți adăuga apoi un alt matrice, al căror conținut sunt 70 și 80, 294 00:16:04,680 --> 00:16:05,560 pentru că matrice. 295 00:16:05,560 --> 00:16:08,250 Deci, acum avem Cuprins în această variabilă 296 00:16:08,250 --> 00:16:17,220 grades-- 100, 0, 90, 85, 95, 70, și 80. 297 00:16:17,220 --> 00:16:21,850 Acesta este doar un mic sintactică zahar, care Swift ofera noi. 298 00:16:21,850 --> 00:16:23,850 >> Deci, dacă vrem să socotească clasele, suntem probabil 299 00:16:23,850 --> 00:16:27,340 O să vrea să repeta peste fiecare element în această buclă. 300 00:16:27,340 --> 00:16:32,150 Și noi avem, în Swift, noțiunea de o buclă pentru ca v-ați aștepta. 301 00:16:32,150 --> 00:16:35,350 Dar modul în care ne indica o gamă este ușor diferit. 302 00:16:35,350 --> 00:16:37,790 Deci, în acest caz, pentru a concluzie totul, vom 303 00:16:37,790 --> 00:16:40,650 de gând să creeze un temporar variabilă numită sumă pentru a ne 304 00:16:40,650 --> 00:16:42,580 pentru a menține acest număr. 305 00:16:42,580 --> 00:16:44,430 >> Și observați pentru nostru construcție buclă aici. 306 00:16:44,430 --> 00:16:46,820 Pentru index în 0 .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Deci această construcție, 0 .. 00:17:01,860 spunând că vom crea o gamă de numere întregi de la 0 până 310 00:17:01,860 --> 00:17:05,750 la, dar excluzând grades.count. 311 00:17:05,750 --> 00:17:09,577 Deci acest lucru va fi 0, 1, 2, 3, 4, 5, până la toate acestea mulți o 312 00:17:09,577 --> 00:17:10,410 înainte grades.count. 313 00:17:10,410 --> 00:17:14,160 >> Deci, aceasta este diferită de modul în care ar folosi de obicei pentru bucle 314 00:17:14,160 --> 00:17:18,569 în cazul în care v-ar avea unele index variabilă, ea egală cu 0 stabilit la prima, 315 00:17:18,569 --> 00:17:25,480 și apoi integra că până la unele Valoarea mai mică decât numărul de articole 316 00:17:25,480 --> 00:17:27,140 în matrice. 317 00:17:27,140 --> 00:17:29,820 >> Deci, există o modificare la acest fapt, 318 00:17:29,820 --> 00:17:35,010 care ne permite să foarte usor set diferite tipuri de intervale. 319 00:17:35,010 --> 00:17:40,570 Dacă schimbați acest interval de trei puncte, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 aceasta reprezintă intervalul 0 la grades.count inclusiv, 321 00:17:45,120 --> 00:17:49,260 ceea ce înseamnă că acest număr este, de asemenea, apoi incluse în acel interval. 322 00:17:49,260 --> 00:17:52,110 >> Dar acest lucru este foarte util pentru aceste lucruri exacte, 323 00:17:52,110 --> 00:17:54,590 atunci când avem de a efectua iterații peste buclă 324 00:17:54,590 --> 00:17:59,630 deoarece aceste indicii sunt zero indexate, așa cum am văzut în alte limbi 325 00:17:59,630 --> 00:18:02,360 deasemenea. 326 00:18:02,360 --> 00:18:05,210 Orice întrebări cu privire la acest buclă pentru? 327 00:18:05,210 --> 00:18:10,660 >> Deci nu e definiție implicită de această variabilă index, 328 00:18:10,660 --> 00:18:14,350 a căror valoare începe la 0, și continuă la fiecare iterație bucla 329 00:18:14,350 --> 00:18:17,950 să crească cu 1 până un punct care este egal cu grades.count, 330 00:18:17,950 --> 00:18:20,380 moment în care, bucla intrerupe. 331 00:18:20,380 --> 00:18:23,730 >> Observați că în șir nostru interpolare aici, 332 00:18:23,730 --> 00:18:26,910 putem efectua de fapt, unele simplu manipulări la aceste valori. 333 00:18:26,910 --> 00:18:31,230 Deci, indicele plus 1 va de fapt efectua o însumare de care valoare 334 00:18:31,230 --> 00:18:34,780 deoarece indicele este, în acest caz, un număr întreg. 335 00:18:34,780 --> 00:18:37,810 Și în acel moment, se va apoi fi transformat într-un șir 336 00:18:37,810 --> 00:18:42,230 și interpolate în acest șir de aici, și tipărite ca ne-am astepta. . 337 00:18:42,230 --> 00:18:44,520 >> Și lucrul frumos despre matrice de aici este 338 00:18:44,520 --> 00:18:50,730 că suntem, de asemenea, posibilitatea de a avea valorile și valorile de setare preiau 339 00:18:50,730 --> 00:18:54,080 folosind notația suport pătrat ca am văzut în alte limbi, precum și. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> Bine, deci de aici, acum calcula suma nostru de toate gradele noastre. 342 00:19:01,030 --> 00:19:02,780 Acum un fel de alta pas logic ar fi 343 00:19:02,780 --> 00:19:07,580 pentru a face o operație divizie pentru a găsi din media acestor note. 344 00:19:07,580 --> 00:19:10,150 Dar ceva important aici se întâmplă care 345 00:19:10,150 --> 00:19:15,020 este că această sumă este probabil un număr întreg. 346 00:19:15,020 --> 00:19:18,020 Dar avem nevoie pentru a efectua unele un fel de divizare dublu. 347 00:19:18,020 --> 00:19:20,600 Și acest lucru va fi extrem de important atunci când 348 00:19:20,600 --> 00:19:24,140 vrem pentru a efectua această operație, pentru că ceea ce spunem 349 00:19:24,140 --> 00:19:28,430 este că avem nevoie pentru a de fapt, efectua divizare pe două duble. 350 00:19:28,430 --> 00:19:31,370 Și din nou, pentru că Swift este foarte puternic tastat, 351 00:19:31,370 --> 00:19:36,760 noi trebuie să stabilească în mod explicit cele de mai produse în dublu înainte de a ne de fapt 352 00:19:36,760 --> 00:19:38,300 efectua această operațiune. 353 00:19:38,300 --> 00:19:40,550 >> Deci, pentru ca noi să efectua divizare dublu, 354 00:19:40,550 --> 00:19:43,730 nu e suficient pentru un singur de aceste elemente să fie o dublă. 355 00:19:43,730 --> 00:19:46,400 Ambii trebuie să fie o dublu pentru rapidă 356 00:19:46,400 --> 00:19:50,860 pentru a fi sigur că acest este ceea ce vrem să facem. 357 00:19:50,860 --> 00:19:54,360 Deci atunci vom typecast în mod explicit suma pe care le-am calculat mai sus 358 00:19:54,360 --> 00:19:58,970 și numărul de grade în camere duble, și apoi efectuați această operațiune și se păstrează 359 00:19:58,970 --> 00:20:02,390 că în această nouă variabilă, sau mai degrabă acest nou constant numit medie, 360 00:20:02,390 --> 00:20:06,810 care va avea ce tip, sa-ti imaginezi? 361 00:20:06,810 --> 00:20:07,587 Dublu, da. 362 00:20:07,587 --> 00:20:09,420 Deci, în acest caz, ne-am Nu trebuie să-l specificați 363 00:20:09,420 --> 00:20:13,450 deoarece aceasta poate fi dedusă din operațiune ce tip de mediu de date 364 00:20:13,450 --> 00:20:14,730 va fi. 365 00:20:14,730 --> 00:20:19,025 Și Swift este în general destul de bine despre a fi capabil de a deduce tipurile. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> Vrei sa vezi asta a alerga, sau pot merge mai departe? 368 00:20:24,200 --> 00:20:25,640 Vreau să continui. 369 00:20:25,640 --> 00:20:28,130 Orice întrebări cu privire la toate astea? 370 00:20:28,130 --> 00:20:28,630 Grozav. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Acum vom începe pentru a ajunge la bune funcțiile stuff-- definirea, 373 00:20:35,010 --> 00:20:39,090 și o serie de alte tipuri care sunt unic pentru Swift că nu ați 374 00:20:39,090 --> 00:20:41,620 văzut în alte limbi până în acest moment, 375 00:20:41,620 --> 00:20:46,290 dar ele sunt prezente și în alte Limbi pe care le-ar putea găsi mai târziu. 376 00:20:46,290 --> 00:20:48,210 Deci, în primul rând, dacă doriți pentru a defini o funcție, 377 00:20:48,210 --> 00:20:52,170 ai defini cu cuvântul funky, Funcția, iar apoi numele funcției, 378 00:20:52,170 --> 00:20:56,710 și apoi în paranteze, argumentele pe care doriți această funcție pentru a accepta. 379 00:20:56,710 --> 00:21:00,280 Argumentele trebuie, de asemenea, specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 trebuie să precizeze, de asemenea, tipul de date pe care ele sunt, cu excepția cazului în care pot fi deduse. 381 00:21:05,010 --> 00:21:07,500 Și vom vedea că puțin avertisment în doar un pic. 382 00:21:07,500 --> 00:21:09,920 >> Deci, în acest caz, avem o functie numita printGradeCount. 383 00:21:09,920 --> 00:21:12,840 Vom accepta o variable-- sau mai degrabă în acest caz, 384 00:21:12,840 --> 00:21:14,450 un constant-- numit cartea de note. 385 00:21:14,450 --> 00:21:18,517 Și se va fi de tip matrice de numere întregi. 386 00:21:18,517 --> 00:21:20,600 Acum e ceva asta e foarte important aici 387 00:21:20,600 --> 00:21:21,849 că vreau să înțelegeți. 388 00:21:21,849 --> 00:21:27,560 Asta este că, prin implicit, aceste argumente că sunt intrări la această funcție sunt 389 00:21:27,560 --> 00:21:34,380 definită cu un cuvânt cheie let implicit, ceea ce înseamnă că nu pot modifica această 390 00:21:34,380 --> 00:21:39,850 variabilă Gradebook aici. 391 00:21:39,850 --> 00:21:43,360 Și ca un fel de sens, pentru ca esti transmită date în. 392 00:21:43,360 --> 00:21:45,860 Și tu, probabil, nu-l vreau care urmează să fie schimbat de sub tine. 393 00:21:45,860 --> 00:21:50,800 Este posibil să se menționeze explicit că aceasta este o variabilă de a pune 394 00:21:50,800 --> 00:21:52,070 cuvântul cheie var aici. 395 00:21:52,070 --> 00:21:56,832 Dar asta este un Te-am prins că am oamenii au observat au făcut în trecut 396 00:21:56,832 --> 00:21:59,790 este că ei presupus ca va să fie o variabilă atunci când, în fapt, ea 397 00:21:59,790 --> 00:22:02,640 este o constantă. 398 00:22:02,640 --> 00:22:07,340 >> Bine, asa ca aici apoi, în acest caz, noi nu sunt specificând orice tip de întoarcere. 399 00:22:07,340 --> 00:22:09,460 Vă vom arăta cum se face că într-o clipă. 400 00:22:09,460 --> 00:22:12,340 Dar observați că aici avem doar un simplu dacă starea. 401 00:22:12,340 --> 00:22:14,560 În cazul în care cartea de note este gol, care în acest caz 402 00:22:14,560 --> 00:22:19,310 este doar proprietatea acestui număr întreg matrice, atunci vom imprima ceva. 403 00:22:19,310 --> 00:22:23,100 În caz contrar, vom face altceva. 404 00:22:23,100 --> 00:22:25,000 >> Destul de simplu până acum cred. 405 00:22:25,000 --> 00:22:27,960 Dar mă opresc, dacă aveți întrebări. 406 00:22:27,960 --> 00:22:33,350 >> Acum această funcție, medie, de asemenea, ia unele argumente, sau mai degrabă un argument, 407 00:22:33,350 --> 00:22:37,507 care este cartea de note, și de această dată este de gând să se întoarcă un tip dublu. 408 00:22:37,507 --> 00:22:39,340 Deoarece este de calcul media și IT 409 00:22:39,340 --> 00:22:45,010 O să se întoarcă de fapt care mediu calculat la linia de asteptare. 410 00:22:45,010 --> 00:22:50,070 >> În acest caz, am specifica reveni tip după o săgeată. 411 00:22:50,070 --> 00:22:53,260 Și acest lucru ar putea sa se simta cam ciudat la început. 412 00:22:53,260 --> 00:22:55,610 Ai crescut obișnuit la stabilirea întoarcerea 413 00:22:55,610 --> 00:22:57,720 tastați înainte de numele functiei. 414 00:22:57,720 --> 00:23:00,310 Dar dacă te gândești la acest în ceea ce privește matematica, 415 00:23:00,310 --> 00:23:03,320 ca atunci când ai matematica care definesc o funcție, 416 00:23:03,320 --> 00:23:06,807 ai o funcție cu unele intrări, și produce o ieșire. 417 00:23:06,807 --> 00:23:08,890 Și asta este exact ceea ce acest lucru este ar trebui să imite. 418 00:23:08,890 --> 00:23:12,460 Și există o serie de alte limbi care au sintaxă similară, de asemenea, 419 00:23:12,460 --> 00:23:15,674 dar, probabil, nici unul care ați văzut în CS50. 420 00:23:15,674 --> 00:23:17,090 Dar încă nu fi confundat de către aceasta. 421 00:23:17,090 --> 00:23:21,650 Săgeata înseamnă ceea ce se întâmplă să fie returnat în acest caz. 422 00:23:21,650 --> 00:23:23,650 OK, deci cum vom pentru a calcula această medie? 423 00:23:23,650 --> 00:23:25,649 Ei bine, în cazul în care cartea de note este gol, bine atunci suntem 424 00:23:25,649 --> 00:23:30,731 O să se întoarcă 0, care poate un mod rezonabil de a trata acest lucru. 425 00:23:30,731 --> 00:23:32,980 Nu știu, să vin Înapoi la care într-un pic. 426 00:23:32,980 --> 00:23:34,688 Acest lucru nu poate, de fapt fi un mod rezonabil 427 00:23:34,688 --> 00:23:38,310 pentru a calcula o medie în cazul în care avem o cartea de note goală. 428 00:23:38,310 --> 00:23:41,260 >> Atunci vom efectua doar însumarea nostru. 429 00:23:41,260 --> 00:23:43,900 Observați că aici suntem de fapt au o versiune alternativă a unui 430 00:23:43,900 --> 00:23:49,190 pentru buclă, care ne permite sa repeta peste fiecare element unic într-o matrice 431 00:23:49,190 --> 00:23:53,630 și locul fiecare element în propria variabilă. 432 00:23:53,630 --> 00:23:56,200 Prin specificarea de grad în Gradebook, ceea ce spunem 433 00:23:56,200 --> 00:24:00,560 este că vom implicit a crea un nou constant numit 434 00:24:00,560 --> 00:24:05,180 grad care este de gând să reprezinte fiecare element unic în cartea de note 435 00:24:05,180 --> 00:24:06,769 de fiecare dată că pentru reiterează bucla. 436 00:24:06,769 --> 00:24:08,560 Deci, prima dată că este administrat, de grad va 437 00:24:08,560 --> 00:24:09,800 fi primul element din cartea de note. 438 00:24:09,800 --> 00:24:12,300 A doua oară Va fi Al doilea articol, așa mai departe și așa mai departe 439 00:24:12,300 --> 00:24:15,970 până Gradebook are sine epuizat de elemente. 440 00:24:15,970 --> 00:24:20,390 Atunci vom fi în măsură să rezuma că grad în variabila noastră însumării 441 00:24:20,390 --> 00:24:22,570 și să se întoarcă medie nostru cum am văzut mai înainte. 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 OK, orice întrebări? 444 00:24:26,950 --> 00:24:27,699 Da? 445 00:24:27,699 --> 00:24:28,990 Audiența: Am două întrebări. 446 00:24:28,990 --> 00:24:33,586 Numărul unu, ipotetic, poate executați întreg pe asta? 447 00:24:33,586 --> 00:24:35,604 Nu trebuie să fie un dublu, este corect? 448 00:24:35,604 --> 00:24:37,520 DAN AMRMENDARIZ: Poți repet această întrebare? 449 00:24:37,520 --> 00:24:39,587 Audiența: Pot face număr întreg ca medie? 450 00:24:39,587 --> 00:24:41,670 DAN AMRMENDARIZ: Poți face întreg în medie? 451 00:24:41,670 --> 00:24:45,015 Deci reveni un număr întreg medie în loc de un dublu? 452 00:24:45,015 --> 00:24:48,204 >> Audiența: tu Return-- au acest drept acum de mai jos. 453 00:24:48,204 --> 00:24:49,870 DAN AMRMENDARIZ: Chiar aici, întoarce 0.0? 454 00:24:49,870 --> 00:24:51,790 Audiența: Da, doar întoarce 0. 455 00:24:51,790 --> 00:24:56,590 Asa ca va fi, fie 80 sau 85, dar nu 85.2. 456 00:24:56,590 --> 00:24:59,465 >> DAN AMRMENDARIZ: Deci, în acest caz, astfel încât există o cuplu moduri diferite 457 00:24:59,465 --> 00:25:00,090 a răspunde la această. 458 00:25:00,090 --> 00:25:02,760 Lasă-mă să-i răspundă în ordine. 459 00:25:02,760 --> 00:25:06,740 Deci, dacă am face doar acest retur 0, un 0 este o valoare întreagă. 460 00:25:06,740 --> 00:25:09,730 Și astfel încât va provoca o eroare de tip pentru acest caz 461 00:25:09,730 --> 00:25:13,210 deoarece se așteaptă un dublu dar este apoi întoarce un număr întreg. 462 00:25:13,210 --> 00:25:16,770 Dacă vreau să se întoarcă un întreg, pot. 463 00:25:16,770 --> 00:25:20,450 Pot seta tipul de retur la int, a reveni 0 aici, 464 00:25:20,450 --> 00:25:22,047 și nu efectua diviziune dublu. 465 00:25:22,047 --> 00:25:23,880 Dar atunci ne-ar fi face divizie număr întreg. 466 00:25:23,880 --> 00:25:27,080 Și așa ne-am atunci nu s-ar obține mediu pe care ne-am aștepta, eventual. 467 00:25:27,080 --> 00:25:29,210 Dar da, putem modifica tipurile în acest mod. 468 00:25:29,210 --> 00:25:32,598 >> Audiența: Și în al doilea rând, vă au un pat dublu pe partea de sus. 469 00:25:32,598 --> 00:25:35,502 Dar mai jos, atunci când se întorc dublă, 470 00:25:35,502 --> 00:25:38,280 care este deja în mod automat revenind format dublu. 471 00:25:38,280 --> 00:25:42,278 De ce este necesar să-l definească cu săgeata în partea de sus, cu o dublă? 472 00:25:42,278 --> 00:25:45,010 >> DAN AMRMENDARIZ: Deci în cazul în care, aceasta este parte 473 00:25:45,010 --> 00:25:50,580 de the-- astfel să se repete întrebarea, deoarece este implicit de la revenirea 474 00:25:50,580 --> 00:25:56,030 Tipuri de aici, ce tip de fapt acest este, trebuie să fie explicit cu Swift 475 00:25:56,030 --> 00:25:59,970 despre ceea ce vrem să reveni din această funcție 476 00:25:59,970 --> 00:26:02,690 astfel încât atunci când se efec- tip verificarea, asigurați-vă că se poate 477 00:26:02,690 --> 00:26:05,850 că ceea ce am scris, de fapt jos, de fapt conformă cu asta. 478 00:26:05,850 --> 00:26:10,225 Deci e ca un fel de verificare cu tine un fel de situație. 479 00:26:10,225 --> 00:26:11,050 Dar nu are-- 480 00:26:11,050 --> 00:26:12,560 >> Audiența: [inaudibil] săgeată? 481 00:26:12,560 --> 00:26:19,490 >> DAN AMRMENDARIZ: există cazuri când putem specifica că putem implicit 482 00:26:19,490 --> 00:26:21,550 seta tipul de retur. 483 00:26:21,550 --> 00:26:23,940 Dar, în acest caz, eu nu cred că ar funcționa. 484 00:26:23,940 --> 00:26:26,190 Există un alt sintaxa că vom vedea mai târziu. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> Bine, deci această sursă cod este un pic diferit 487 00:26:35,280 --> 00:26:41,839 pentru că acest analizează argumentele din funcția pe care suntem de asteptare. 488 00:26:41,839 --> 00:26:44,130 Lasă-mă să-ți arăt cum funcționează înainte de a ne de fapt trece 489 00:26:44,130 --> 00:26:48,050 la unele lucruri interesante care se întâmplă în Swift. 490 00:26:48,050 --> 00:26:51,870 >> Deci, în acest caz, dacă am doar rula acest cod, observați că ceea ce face 491 00:26:51,870 --> 00:26:54,900 în timp ce este--, un fel de dă-mi o eroare de ciudat. 492 00:26:54,900 --> 00:26:59,730 Am nevoie pentru a trece un cuplu de întregi ca un argument în linia de comandă. 493 00:26:59,730 --> 00:27:06,220 Deci, să vedem, 150 și 80, și apăsați Enter pentru a afla ce este de fapt face. 494 00:27:06,220 --> 00:27:09,890 Este acceptarea fiecare aceste valori ca numere întregi. 495 00:27:09,890 --> 00:27:12,040 E le introducerea într-un cartea de note. 496 00:27:12,040 --> 00:27:14,470 Și apoi se efectuează acest calcul medie 497 00:27:14,470 --> 00:27:16,650 și scoate că, ne-am astepta. 498 00:27:16,650 --> 00:27:19,950 >> Dar, evident, se întâmplă ceva cu acest respingerea ceva 499 00:27:19,950 --> 00:27:23,300 ceva ca un întreg. 500 00:27:23,300 --> 00:27:27,300 După cum s-ar putea aminti de când am fost care se ocupă cu argumente în linia de comandă 501 00:27:27,300 --> 00:27:32,640 în C și în alte limbi, primul 0-lea element în acest argument în linia de comandă 502 00:27:32,640 --> 00:27:35,774 Lista este numele comenzii că am deja executate. 503 00:27:35,774 --> 00:27:38,690 Deci, în acest caz, eu sunt doar looping peste toate argumentele din linia de comandă. 504 00:27:38,690 --> 00:27:41,650 Dar nu fac nici un fel de fantezie verifica pentru a trece peste asta primul. 505 00:27:41,650 --> 00:27:45,920 Sunt doar în mod explicit sau implicit că sunt verificarea care dintre aceste tipuri 506 00:27:45,920 --> 00:27:49,900 sunt numere întregi înainte de fapt am efectua acest calcul. 507 00:27:49,900 --> 00:27:52,420 >> Și asta e în esență, ce se întâmplă aici. 508 00:27:52,420 --> 00:27:55,860 Pentru fiecare argument în argumentele procesul de, 509 00:27:55,860 --> 00:27:59,210 Am de gând să efectua unele verificare. 510 00:27:59,210 --> 00:28:01,970 Și în acest caz, am de gând pentru a încerca să primul convertit 511 00:28:01,970 --> 00:28:07,620 acest argument într-un întreg de efectuarea unei typecast explicit, 512 00:28:07,620 --> 00:28:12,310 pentru că este, la intrare, un șir și nu, de fapt, un număr întreg. 513 00:28:12,310 --> 00:28:18,140 >> Dar aceasta este un fel de sintaxă ciudat, dacă gradul lasa egal Int (argument). 514 00:28:18,140 --> 00:28:21,120 Ce se întâmplă de fapt aici este extrem de 515 00:28:21,120 --> 00:28:24,390 important să folosind Swift. 516 00:28:24,390 --> 00:28:27,610 Acest lucru este ceea ce este cu ajutorul numit un tip opțional. 517 00:28:27,610 --> 00:28:34,790 >> Deci această funcție, Int (argument), întoarce nu doar un întreg, dar se întoarce 518 00:28:34,790 --> 00:28:37,470 ceea ce se numește un număr întreg opțional. 519 00:28:37,470 --> 00:28:41,200 Și astfel încât acesta este un fel de un tip pe partea de sus de un tip. 520 00:28:41,200 --> 00:28:45,900 Puteți fel de imagina ca se întoarce ca un pachet. 521 00:28:45,900 --> 00:28:47,750 Iar atunci când deschizi pachet, aceasta fie 522 00:28:47,750 --> 00:28:53,930 are un număr întreg, care este rezultatul, sau nu are absolut nimic în ea, la toate. 523 00:28:53,930 --> 00:28:58,140 Și acest lucru este util ca o verificarea erorilor mecanism, deoarece în acest caz 524 00:28:58,140 --> 00:29:02,080 putem afla, a fost aceasta conversie de succes de tip? 525 00:29:02,080 --> 00:29:05,810 Dacă ar fi fost, atunci este de fapt va avea un număr întreg în interiorul. 526 00:29:05,810 --> 00:29:08,750 În caz contrar, va avea unele Valoarea pe care o vom suna zero, care 527 00:29:08,750 --> 00:29:10,920 este reprezentativ pentru întreg nu la toate. 528 00:29:10,920 --> 00:29:13,270 Este într-adevăr reprezentativ al nimic. 529 00:29:13,270 --> 00:29:18,130 >> Și așa mai departe acest lucru dacă constructii ne permite să despachetez acest pachet, 530 00:29:18,130 --> 00:29:19,850 care opțional obligatoriu. 531 00:29:19,850 --> 00:29:25,560 Și dacă suntem capabili să despachetez că pachet și de a găsi un număr întreg în interiorul, 532 00:29:25,560 --> 00:29:27,720 atunci ceea ce spunem aici este că vom apoi 533 00:29:27,720 --> 00:29:33,090 permit ca valoarea să fie stabilite în această constantă numit grad. 534 00:29:33,090 --> 00:29:36,590 Și această parte a instrucțiunii if, partea de sus a if 535 00:29:36,590 --> 00:29:40,390 va rula, pentru că Unwrap a avut succes. 536 00:29:40,390 --> 00:29:43,290 >> Dacă doar așa se întâmplă că a apărut o eroare, probabil 537 00:29:43,290 --> 00:29:47,040 în această conversie tip explicit dintr-un șir la un întreg, poate 538 00:29:47,040 --> 00:29:49,160 e ABC valoare de exemplu. 539 00:29:49,160 --> 00:29:52,120 Și asta e de fapt, nu merge pentru a converti la un întreg. 540 00:29:52,120 --> 00:29:55,520 Apoi se va întoarce zero, care nu este un număr întreg. 541 00:29:55,520 --> 00:29:57,570 Și această declarație dacă bine, atunci nu. 542 00:29:57,570 --> 00:30:01,930 clasa nu va exista pentru că nu are nici un conținut întreg. 543 00:30:01,930 --> 00:30:06,391 Și se va desfășura această altceva bloc în loc. 544 00:30:06,391 --> 00:30:06,890 Da? 545 00:30:06,890 --> 00:30:09,652 >> Audiența: Nil este N-I-L? 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ: zero este N-I-L, da. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> Deci, aceasta este, poate, una dintre cele mai mai grele lucruri despre Swift, 549 00:30:20,310 --> 00:30:23,690 mai ales atunci când sunteți în buruienile de pe o aplicatie iOS 550 00:30:23,690 --> 00:30:27,442 și esti de fapt încercarea de pentru a face unele dezvoltare acolo. 551 00:30:27,442 --> 00:30:29,400 O să fie striga la tine despre opțională. 552 00:30:29,400 --> 00:30:33,050 O să fie vă cere pentru semne de întrebare și de exclamare. puncte 553 00:30:33,050 --> 00:30:37,100 Dar, odată ce îți dai seama dacă ai out-- dedica ceva timp pentru a imaginind 554 00:30:37,100 --> 00:30:41,990 ceea ce se întâmplă cu tipuri de opționale, veți economisi vă o mulțime de dureri de cap 555 00:30:41,990 --> 00:30:46,040 în timp ce încearcă să scrie o aplicație în Swift. 556 00:30:46,040 --> 00:30:47,660 >> Este de fapt o caracteristică foarte puternic. 557 00:30:47,660 --> 00:30:49,826 Și va trebui să ia cuvântul meu pentru asta de acum. 558 00:30:49,826 --> 00:30:52,620 Dar vom vedea această construcție și altele place 559 00:30:52,620 --> 00:30:56,740 în unele din alt cod sursă care vă vom arăta în doar un pic. 560 00:30:56,740 --> 00:31:00,440 >> Există întrebări inițiale aici? 561 00:31:00,440 --> 00:31:03,790 562 00:31:03,790 --> 00:31:08,690 Deci important este ca un Takeaway tip opțional este un fel de metatype. 563 00:31:08,690 --> 00:31:12,500 Acesta fie are o valoare, și dacă o face, atunci 564 00:31:12,500 --> 00:31:18,110 va avea, probabil, că o valoare asociată cu ea, sau nu are nici un fel de valoare, 565 00:31:18,110 --> 00:31:19,620 și este reprezentată prin zero. 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 Restul este probabil cum v-ați aștepta. 568 00:31:28,870 --> 00:31:32,900 >> Deci, haideți să sol până dificultate din nou. 569 00:31:32,900 --> 00:31:37,070 Și de această dată, haideți să aruncăm o privire la unele alte tipuri de date care există de fapt. 570 00:31:37,070 --> 00:31:41,290 Una dintre ele este dicționare, care este foarte asemănătoare cu dicționare Python. 571 00:31:41,290 --> 00:31:48,270 Este oarecum similar cu un tabel hash în C. Este, în esență, o cartografiere de chei 572 00:31:48,270 --> 00:31:49,820 în cazul în care cheile pot fi siruri de caractere. 573 00:31:49,820 --> 00:31:52,670 Și atunci când te uiți la acele chei, aceste chei va avea o valoare. 574 00:31:52,670 --> 00:31:56,020 Deci, nu e chiar o matrice, dar în schimb, mai strâns asociat 575 00:31:56,020 --> 00:31:58,810 la o hartă hash sau o masă hash. 576 00:31:58,810 --> 00:32:02,420 >> Să vedem cum este aceasta ar trebui la locul de muncă înainte de a ne de fapt 577 00:32:02,420 --> 00:32:05,210 du-te în codul sursă în sine. 578 00:32:05,210 --> 00:32:07,680 Dacă am alerga aceasta, într-adevăr se întâmplă nimic. 579 00:32:07,680 --> 00:32:12,430 Este spunându-mi că mă aștept unii parametri de tipul următor. 580 00:32:12,430 --> 00:32:16,050 Deci, am de gând să le furnizeze se unele nume problemă set, 581 00:32:16,050 --> 00:32:18,490 așa pset0, poate m-am 100. 582 00:32:18,490 --> 00:32:20,790 Și pset1, am un 5. 583 00:32:20,790 --> 00:32:24,630 Și apoi pe la examen, am a făcut foarte bine și a luat 30. 584 00:32:24,630 --> 00:32:27,180 Și Hopa, am lovit un spațiu aici. 585 00:32:27,180 --> 00:32:30,940 >> Când m-am lovit Enter, puteți vedea se efectuează unele calcule. 586 00:32:30,940 --> 00:32:33,740 Se spune cartea de note este de trei clasele, pset1, pset0, examen. 587 00:32:33,740 --> 00:32:36,120 Și cartea de note are această medie specifică. 588 00:32:36,120 --> 00:32:38,370 Deci, din nou, lucrăm cu această idee cartea de note, 589 00:32:38,370 --> 00:32:44,650 dar vom continua iterarea cu complexitatea funcției noastre. 590 00:32:44,650 --> 00:32:47,650 >> Deci, la debut, suntem doar va crea o funcție care 591 00:32:47,650 --> 00:32:49,390 este responsabil pentru tipărirea utilizarea. 592 00:32:49,390 --> 00:32:51,920 Și nu e acest ieșire funcție care va doar 593 00:32:51,920 --> 00:32:53,710 iesi cu forța cererea. 594 00:32:53,710 --> 00:32:56,530 Acest lucru nu este ceva care vei folosi în aplicație iOS. 595 00:32:56,530 --> 00:32:59,750 Aceasta este doar, în acest caz, cu un argument linie de comandă. 596 00:32:59,750 --> 00:33:01,990 Apoi, vom începe să se deplasează spre Xcode. 597 00:33:01,990 --> 00:33:07,760 Dar acest lucru este specific pentru o comandă Programul stil de linie in Swift. 598 00:33:07,760 --> 00:33:11,490 >> Să aruncăm o privire la unele dintre lucrurile interesante de aici. 599 00:33:11,490 --> 00:33:15,150 Să vedem, doar o pereche de lucruri interesante pentru a menționa, probabil, 600 00:33:15,150 --> 00:33:19,930 este că, în funcție de meu imprimarea numărului de clase, 601 00:33:19,930 --> 00:33:26,090 s-ar putea aminti că am avut această listă de pset1 items--, pset0, și examen. 602 00:33:26,090 --> 00:33:29,130 Puteți, de fapt rapid și ușor de a face acest lucru 603 00:33:29,130 --> 00:33:34,490 prin luarea de cartea de note, care este o Dicționar care are cheile și valorile. 604 00:33:34,490 --> 00:33:38,730 Găsi toate cheia este prin metoda chei dot aici, 605 00:33:38,730 --> 00:33:43,180 și apoi să utilizați acest joinWithSeparator, care va avea apoi toate tastele 606 00:33:43,180 --> 00:33:48,590 că ne-am tastat în, pset1-- sau Ne pare rău, pset0, pset1, și exam-- 607 00:33:48,590 --> 00:33:53,030 și le înlănțui împreună folosind o virgulă și un spațiu 608 00:33:53,030 --> 00:33:55,400 pentru a crea un șir lung. 609 00:33:55,400 --> 00:34:00,190 Această operațiune se alăture este doar fenomenal utile într-o varietate de contexte. 610 00:34:00,190 --> 00:34:03,450 Și așa este această joinWithSeparator. 611 00:34:03,450 --> 00:34:06,939 >> Și acesta este un lucru care e schimbat de la 1 la Swift Swift 2. 612 00:34:06,939 --> 00:34:08,730 Nu folosit pentru a fi un Style-- Python dacă sunteți 613 00:34:08,730 --> 00:34:13,219 familiar cu Python-- un Python Stilul se alăture metodă pe siruri de caractere. 614 00:34:13,219 --> 00:34:15,699 Dar care nu mai este în cazul în Swift 2. 615 00:34:15,699 --> 00:34:19,400 Doriți să utilizați această opțiune dacă doriți a înlănțui o serie de lucruri 616 00:34:19,400 --> 00:34:23,380 împreună cu un șir. 617 00:34:23,380 --> 00:34:27,889 >> Deci, probabil, apoi, în nostru discuție de mediu înainte, 618 00:34:27,889 --> 00:34:32,659 face un pic mai mult sens pentru noi pentru a seta funcția de mediu 619 00:34:32,659 --> 00:34:36,610 să fie un dublu opțional, mai degrabă mult decât un dublu explicit. 620 00:34:36,610 --> 00:34:39,239 Pentru că am avut ca condiție neobișnuit în cazul în care, 621 00:34:39,239 --> 00:34:41,550 Ce se întâmplă dacă cartea de note de fapt nu are valori în ea? 622 00:34:41,550 --> 00:34:44,280 Ce ar trebui să randamentul mediu? 623 00:34:44,280 --> 00:34:46,350 >> Ei bine, poate în C vă ar fi făcut ceva 624 00:34:46,350 --> 00:34:50,040 ca a oferit o valoare Sentinel, cum ar fi 0.0, sau poate un număr negativ, 625 00:34:50,040 --> 00:34:53,690 sau ceva care reprezintă doar faptul că au existat unele stare de eroare 626 00:34:53,690 --> 00:34:57,910 și, probabil, nu au de fapt capacitatea de a calcula că media. 627 00:34:57,910 --> 00:35:05,590 Ei bine, frumusetea de a specifica o Tipul opțional ar fi să faci asta. 628 00:35:05,590 --> 00:35:09,540 Iar eu spun acum toate aceste cuvinte, dar acest fapt nu utilizează optionale. 629 00:35:09,540 --> 00:35:12,970 Dar vom vedea că, în doar minute în cazul în care putem stabili mediu 630 00:35:12,970 --> 00:35:17,230 să fie un tip de date opțional, astfel încât în cazul în care se întoarce de fapt, unele date, apoi 631 00:35:17,230 --> 00:35:18,470 ne vom întoarce că datele. 632 00:35:18,470 --> 00:35:20,570 În caz contrar, ne vom întoarce zero, spunând că acest 633 00:35:20,570 --> 00:35:22,200 nu are nici o calcul semnificativ. 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> Să trecem la altceva. 636 00:35:28,570 --> 00:35:35,910 Deci de aici, ne-am uitat la Toate aceste exemple în linia de comandă. 637 00:35:35,910 --> 00:35:39,470 Dar, de fapt ceea ce ai de gând să fie a face cu Xcode. 638 00:35:39,470 --> 00:35:43,720 Și unul dintre lucrurile frumoase despre Xcode este, și în special în Swift, 639 00:35:43,720 --> 00:35:47,450 este că avem această lucru numit un loc de joacă. 640 00:35:47,450 --> 00:35:51,470 Un loc de joacă este și deloc o aplicatie iOS. 641 00:35:51,470 --> 00:35:54,751 Dar vă permite să experimentați cu Swift intr-un mod foarte usor. 642 00:35:54,751 --> 00:35:56,000 Aveți posibilitatea să tastați tot codul. 643 00:35:56,000 --> 00:35:58,140 Este sintaxa frumos evidențiate aici. 644 00:35:58,140 --> 00:36:01,600 Atunci când creați un nou fișier, acesta va cere tine, dacă doriți să creați un loc de joacă. 645 00:36:01,600 --> 00:36:08,720 Dar lucrul frumos despre Playground este faptul că în partea dreaptă a ferestrei, 646 00:36:08,720 --> 00:36:12,020 nu vă arăt de fapt de ieșire de la codul. 647 00:36:12,020 --> 00:36:16,110 Deci, dacă am defila în jos, putem vedea ce ieșirea din diverse linii de cod 648 00:36:16,110 --> 00:36:17,200 de fapt, se întâmplă să fie. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> Deci, în acest caz, vom schimba traseu doar un pic 651 00:36:26,790 --> 00:36:30,960 și vorbesc despre ceva care este într-adevăr important în acest fel la nivel înalt 652 00:36:30,960 --> 00:36:34,020 că Swift funcționează, și este această idee de închidere. 653 00:36:34,020 --> 00:36:36,960 Și ați văzut, probabil, acest un pic în JavaScript. 654 00:36:36,960 --> 00:36:40,770 Pentru cei dintre voi care sunt în CS50, închidere 655 00:36:40,770 --> 00:36:47,240 sunt foarte populare mod, foarte buna de a face de nivel înalt lucruri în limbile moderne. 656 00:36:47,240 --> 00:36:50,270 Dar este, de asemenea, un fel de dificil de a înfășurați capul în jurul pentru prima dată. 657 00:36:50,270 --> 00:36:52,269 Deci, dacă te uiți la acest prima dată, e OK. 658 00:36:52,269 --> 00:36:56,740 Uită-te la codul sursă și a vedea dacă vă puteți da seama de la domiciliu. 659 00:36:56,740 --> 00:37:01,050 >> Deci, în acest caz, să spunem că ne-am doriți să creați o mulțime de exponenți 660 00:37:01,050 --> 00:37:04,134 cu o valoare fixă. 661 00:37:04,134 --> 00:37:05,800 Deci, în acest caz, pot crea o funcție. 662 00:37:05,800 --> 00:37:09,270 Am de gând să-l numesc putere de 2 scop a cărui unic în viață 663 00:37:09,270 --> 00:37:15,770 este de a lua unele de intrare și dublu l, și a reveni acea valoare. 664 00:37:15,770 --> 00:37:21,210 Observați că aici mă acceptând un singur tip de date. 665 00:37:21,210 --> 00:37:23,137 O să fie o variabilă numit X. 666 00:37:23,137 --> 00:37:23,970 Este de tip Double. 667 00:37:23,970 --> 00:37:26,190 Și am de gând să se întoarcă o dublă aici. 668 00:37:26,190 --> 00:37:29,100 Și Mă duc să fac un foarte, sincer, destul de 669 00:37:29,100 --> 00:37:32,650 mod naiv de dublare această valoare. 670 00:37:32,650 --> 00:37:35,600 Și am să-ți arăt de ce acest este util în doar o secundă. 671 00:37:35,600 --> 00:37:40,418 >> Observați că aici avem acest interval din nou. pentru ceva în 1, dot 672 00:37:40,418 --> 00:37:44,130 dot dot, 2, ceea ce înseamnă că această buclă va rula de două ori. 673 00:37:44,130 --> 00:37:46,480 Dar acest lucru reprezintă o variabilă dummy. 674 00:37:46,480 --> 00:37:49,650 Înseamnă că nu sunt cu adevărat de gând să folosi variabila oriunde 675 00:37:49,650 --> 00:37:51,070 interiorul această buclă. 676 00:37:51,070 --> 00:37:55,380 Vreau doar această linie de cod pentru a rula de două ori, 677 00:37:55,380 --> 00:37:58,980 fără a fi nevoie să știe valoarea acestei game. 678 00:37:58,980 --> 00:38:02,570 >> Deci, în acest caz, am rulează rezultat ori x de două ori, în esență, ceea ce 679 00:38:02,570 --> 00:38:06,560 înseamnă că am cuadratura această valoare. 680 00:38:06,560 --> 00:38:10,230 Și acest lucru se întâmplă pentru a lucra ca ne-am astepta. 681 00:38:10,230 --> 00:38:16,410 Puterea de 2, care trece o valoare de 2.0 ne dă o putere de 4. 682 00:38:16,410 --> 00:38:18,810 3.2 lucrări de 10,24. 683 00:38:18,810 --> 00:38:22,660 >> Acum putem face o similară lucru pentru putere de 3. 684 00:38:22,660 --> 00:38:25,330 Dar schimba acum doar gama. 685 00:38:25,330 --> 00:38:28,840 Pentru variabilă dummy în 1 prin 3, multiplica de 3 ori, 686 00:38:28,840 --> 00:38:29,830 și de a face același lucru. 687 00:38:29,830 --> 00:38:32,240 >> Deci, acest lucru ar putea sa se simta un pic contrived. 688 00:38:32,240 --> 00:38:34,270 Dar există o importantă lucru care aici 689 00:38:34,270 --> 00:38:37,770 este că se uită la aceste două funcții, nu e 690 00:38:37,770 --> 00:38:43,600 doar un singur lucru care este diferit, care este această valoare în intervalul. 691 00:38:43,600 --> 00:38:46,910 Orice altceva despre aceste două funcții, putere de 3 și putere de 2, 692 00:38:46,910 --> 00:38:50,440 sunt, de fapt, identice deoarece lucrează în același mod. 693 00:38:50,440 --> 00:38:53,460 >> Deci, la acest punct, un pic clopot de alarmă ar trebui să fie merge off. 694 00:38:53,460 --> 00:38:56,200 Sperăm că ceea ce spui, Știi, acest lucru se simte un pic 695 00:38:56,200 --> 00:38:59,250 ca dublarea eforturilor. 696 00:38:59,250 --> 00:39:02,950 Poate există o cale care mi-ar putea încapsula toate acestea 697 00:39:02,950 --> 00:39:06,630 și asigură o funcție sau pentru a crea o funcție care 698 00:39:06,630 --> 00:39:11,550 face exact ceea ce vreau fără au nevoie să-l introduceți în mod explicit. 699 00:39:11,550 --> 00:39:15,732 Și aceasta este ceea ce putere de o închidere ne permite să facem. 700 00:39:15,732 --> 00:39:16,940 Deci, haideți să aruncăm o privire la acest lucru. 701 00:39:16,940 --> 00:39:18,700 Și voi petrece câteva minute în acest sens, deoarece această 702 00:39:18,700 --> 00:39:20,310 este destul de important pentru Swift. 703 00:39:20,310 --> 00:39:22,900 Vedem acest lucru tot timpul. 704 00:39:22,900 --> 00:39:24,550 Vom defini o funcție. 705 00:39:24,550 --> 00:39:26,380 O să fie numit powerOf. 706 00:39:26,380 --> 00:39:29,470 O să accepte o parametru numit y de tip int. 707 00:39:29,470 --> 00:39:32,220 Dar ia o privire la tipul de retur. 708 00:39:32,220 --> 00:39:38,730 Tipul de retur este, în paranteze, dublu double arrow. 709 00:39:38,730 --> 00:39:43,370 Ceea ce înseamnă că această funcție, Această funcție powerOf, 710 00:39:43,370 --> 00:39:46,550 se întoarce o funcție. 711 00:39:46,550 --> 00:39:50,845 Care acceptă o dublă și returnarea o dublă. 712 00:39:50,845 --> 00:39:53,720 Astfel încât s-ar putea suna un fel de nebun, dar hai sa defilați în jos un pic 713 00:39:53,720 --> 00:39:55,060 si uita-te pentru a vedea ce se întâmplă. 714 00:39:55,060 --> 00:39:57,910 Suntem în interiorul această funcție powerOf. 715 00:39:57,910 --> 00:40:00,760 Vom crea o nouă funcție numit exponentiator, 716 00:40:00,760 --> 00:40:02,900 dar nu contează ce este. 717 00:40:02,900 --> 00:40:06,410 >> Observați că acest lucru are o valoare de intrare de x. 718 00:40:06,410 --> 00:40:09,910 Și se ia intr-un dublu și returnarea o dublă. 719 00:40:09,910 --> 00:40:16,320 Și aceasta este același cod pe care le văzut mai sus, cu excepția faptului că valoarea 2 720 00:40:16,320 --> 00:40:20,060 sau valoarea 3, care sus legat în acest interval, 721 00:40:20,060 --> 00:40:23,210 a fost înlocuit cu această valoare a lui y, care 722 00:40:23,210 --> 00:40:27,230 a fost parametrul inițială de funcția noastră powerOf. 723 00:40:27,230 --> 00:40:31,700 Și în acest moment, ne-am reveni exponentiator. 724 00:40:31,700 --> 00:40:33,345 Ne întoarcem funcția. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> E un fel de mic suflare minte. 727 00:40:39,550 --> 00:40:44,360 Dar să ne imaginăm ce se întâmplă când eu numesc această funcție powerOf 728 00:40:44,360 --> 00:40:47,610 și să treacă în el o anumită valoare ca 2. 729 00:40:47,610 --> 00:40:50,020 Ce înseamnă acest lucru este că Am acum valoarea 730 00:40:50,020 --> 00:40:55,130 2 pentru y, ceea ce înseamnă că această valoare y în această funcție exponentiator 731 00:40:55,130 --> 00:40:56,410 va fi ca valoarea 2. 732 00:40:56,410 --> 00:41:01,290 Dar eu sunt revenind acest Funcția exponentiator. 733 00:41:01,290 --> 00:41:05,900 >> Deci, observați ce spune Swift I au creat în acest caz. 734 00:41:05,900 --> 00:41:10,550 să pătrat este o definiție, este o funcție care acceptă o dublă 735 00:41:10,550 --> 00:41:12,610 și returnează un dublu. 736 00:41:12,610 --> 00:41:16,590 Am creat o funcție că pătrate ceva 737 00:41:16,590 --> 00:41:19,782 folosind acest mecanism chiar aici. 738 00:41:19,782 --> 00:41:22,490 Și într-adevăr ceea ce se întâmplă este că se întoarce această funcție 739 00:41:22,490 --> 00:41:26,390 exponentiator, dar această valoare Y este înfășurat în interiorul acestuia. 740 00:41:26,390 --> 00:41:31,080 Și așa acum de fiecare dată când am folosi acest variabilă sau constantă numit acest 741 00:41:31,080 --> 00:41:35,180 pătrat, îl va să se comporte ca o funcție. 742 00:41:35,180 --> 00:41:39,960 Și așa că am putea apela atunci că variabila ca mi-ar apela o funcție, 743 00:41:39,960 --> 00:41:43,830 și să treacă în el un număr, ca în acest caz 3. 744 00:41:43,830 --> 00:41:45,910 Și voi pătrat atunci această valoare. 745 00:41:45,910 --> 00:41:53,340 Deci, 3 pătrat va apoi devin 9, așa cum se poate vedea aici. 746 00:41:53,340 --> 00:41:56,530 >> Într-adevăr nebun, dar acest lucru acum mi permite posibilitatea de 747 00:41:56,530 --> 00:41:59,040 pentru a crea alte funcții powerOf. 748 00:41:59,040 --> 00:42:03,680 Cum am putea spune, OK, bine, acum vreau pentru a crea o nouă funcție, powerOf (3), 749 00:42:03,680 --> 00:42:06,290 și se păstrează ca într-o constant numit cub. 750 00:42:06,290 --> 00:42:10,220 Și acum cub va fi un funcție separată care va apoi 751 00:42:10,220 --> 00:42:14,800 ia o valoare ca intrare și cub care Valoarea cum putem vedea în linia de jos 752 00:42:14,800 --> 00:42:16,420 Aici. 753 00:42:16,420 --> 00:42:18,590 cub de 2 este de gând să conducă la 8. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> Să sperăm că lucrurile destul de elegant. 756 00:42:22,680 --> 00:42:25,920 Nu ați mai văzut așa ceva. 757 00:42:25,920 --> 00:42:29,990 Am să vă încurajez să te uiți în închidere și să investigheze acest lucru un pic mai mult. 758 00:42:29,990 --> 00:42:33,570 Este lucruri foarte puternic vom vedea o mulțime în JavaScript și alte limbi. 759 00:42:33,570 --> 00:42:37,160 Este într-adevăr esențial să se înțelegerea API-uri, precum și 760 00:42:37,160 --> 00:42:38,620 că vom ajunge la doar o secundă. 761 00:42:38,620 --> 00:42:39,456 Da? 762 00:42:39,456 --> 00:42:43,740 >> Audiența: Când faci powerOf (2), paranteze, și apoi 763 00:42:43,740 --> 00:42:48,764 un alt paranteze, un alt input-- te înlocuirea practic pătrat. 764 00:42:48,764 --> 00:42:50,930 DAN AMRMENDARIZ: Deci uite în ultimul linie aici. 765 00:42:50,930 --> 00:42:55,930 Acesta este, de fapt absolut posibil să face acest lucru înlănțuirea așa cum ați sugerat. 766 00:42:55,930 --> 00:43:00,990 Deci powerOf (5), înseamnă că vom pentru a avea o exponentiator de 5 până aici. 767 00:43:00,990 --> 00:43:04,160 Deci, aceasta este, în esență, va fi cel același lucru ca și 4 la a cincea putere, 768 00:43:04,160 --> 00:43:07,200 pentru că am creat o exponentiating funcționează la puterea a cincea, 769 00:43:07,200 --> 00:43:09,920 și suntem trecerea în Această funcție de valoarea 4. 770 00:43:09,920 --> 00:43:12,619 Și ajungem ca valoarea că ne așteptăm, 1,024. 771 00:43:12,619 --> 00:43:14,785 Audiența: Și nu e un nume, așa că face mai ușor 772 00:43:14,785 --> 00:43:16,570 pentru a citi, pătrat indiferent. 773 00:43:16,570 --> 00:43:17,903 >> DAN AMRMENDARIZ: dreapta, exact. 774 00:43:17,903 --> 00:43:21,120 Deci, înainte de Tocmai am pus într-o constantă aici, așa încât 775 00:43:21,120 --> 00:43:23,808 că a făcut-o ușor de utilizat acest nume. 776 00:43:23,808 --> 00:43:24,308 Da? 777 00:43:24,308 --> 00:43:26,942 >> Audiența: În acest context, powerOf, e parte 778 00:43:26,942 --> 00:43:30,774 a limbajului de programare spre deosebire de modul în care 779 00:43:30,774 --> 00:43:33,952 cred că de powerOf în [Inaudibil]? 780 00:43:33,952 --> 00:43:35,660 DAN AMRMENDARIZ: Deci În acest caz, powerOf 781 00:43:35,660 --> 00:43:39,280 este pur și simplu numele de Funcția pe care am definit aici. 782 00:43:39,280 --> 00:43:41,801 Deci nu e inerent la limba în sine, 783 00:43:41,801 --> 00:43:43,550 dar în schimb, e doar o funcție care are 784 00:43:43,550 --> 00:43:45,628 acest nume pentru că am da numele. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 Orice alte întrebări? 787 00:43:51,920 --> 00:43:52,800 In regula. 788 00:43:52,800 --> 00:43:54,750 >> Acum, acest lucru este mare. 789 00:43:54,750 --> 00:43:58,170 Dar nu te duci pentru a vedea o mulțime de funcții de închidere care 790 00:43:58,170 --> 00:44:03,440 sunt ca aceasta în cazul în care ați defini, în interiorul de o funcție, o altă funcție. 791 00:44:03,440 --> 00:44:04,320 Si o poti face. 792 00:44:04,320 --> 00:44:06,430 Dar nu este un fel de într-adevăr necesar, nu? 793 00:44:06,430 --> 00:44:09,189 Ca de ce am defini acest Funcția numit exponentiator 794 00:44:09,189 --> 00:44:10,480 și apoi a reveni imediat. 795 00:44:10,480 --> 00:44:15,220 De ce nu pot doar imediat reveni această funcție? 796 00:44:15,220 --> 00:44:18,890 >> Și, de fapt, acest lucru este exact ideea din spatele unui concept numit 797 00:44:18,890 --> 00:44:22,410 funcții anonime, în cazul în care Funcțiile anonime nu face de fapt 798 00:44:22,410 --> 00:44:25,270 au un nume, deoarece acestea nu au nevoie de unul. 799 00:44:25,270 --> 00:44:28,700 Și astfel, în acest caz, în 7B, putem găsi cu precizie că. 800 00:44:28,700 --> 00:44:31,470 Este tot același cod, face exact același lucru, 801 00:44:31,470 --> 00:44:35,570 dar acum ne-am schimbat atât de ușor că această funcție powerOf imediat 802 00:44:35,570 --> 00:44:37,750 returnează o funcție. 803 00:44:37,750 --> 00:44:44,150 Observați că după întoarcerea, există un suport cret deschis. 804 00:44:44,150 --> 00:44:46,410 Se așteaptă această intrare dublă. 805 00:44:46,410 --> 00:44:48,560 Se așteaptă că producția dublă. 806 00:44:48,560 --> 00:44:52,175 Și apoi, în cuvântul cheie separă codul de sine. 807 00:44:52,175 --> 00:44:53,550 Deci aceasta este o funcție anonim. 808 00:44:53,550 --> 00:44:57,030 Ea nu are de fapt un nume, în timp ce înainte de a fi fost numit exponentiator. 809 00:44:57,030 --> 00:45:00,229 Dar, așa cum am văzut, doar într-adevăr nu a făcut referire la exponentiator 810 00:45:00,229 --> 00:45:01,270 în afara acestei funcții. 811 00:45:01,270 --> 00:45:02,470 Deci nu conta. 812 00:45:02,470 --> 00:45:06,300 Deci, această funcție este anonim așa-numitele pentru că este fără nume, 813 00:45:06,300 --> 00:45:09,107 dar este încă în curs de utilizat în contextul acestui cod. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> Următoarele două Cei Sunt va continua, sperăm, 816 00:45:16,079 --> 00:45:17,370 suflare mintea ta un pic. 817 00:45:17,370 --> 00:45:20,410 Putem simplifica acest lucru chiar mai mult. 818 00:45:20,410 --> 00:45:24,490 Pentru că așa cum a fost abilitate a subliniat mai devreme, 819 00:45:24,490 --> 00:45:29,100 Poate că știu de fapt, de deduce din acest cod, ceea ce 820 00:45:29,100 --> 00:45:31,750 producția de acest cod va fi. 821 00:45:31,750 --> 00:45:38,180 Și, de fapt, în această funcție anonim, De fapt, putem deduce tipurile de date. 822 00:45:38,180 --> 00:45:41,650 >> Deci, în aceasta, nu mai Trebuie să definească în mod explicit 823 00:45:41,650 --> 00:45:44,850 tipul de date care fiind intrare și ieșire din această funcție 824 00:45:44,850 --> 00:45:45,890 pentru o pereche de motive. 825 00:45:45,890 --> 00:45:51,390 Una dintre ele este că ne-am definit, până la prototip al funcției de închidere, 826 00:45:51,390 --> 00:45:55,770 ce tip de date anonime acest Funcția trebuie intrare și de ieșire. 827 00:45:55,770 --> 00:45:57,900 Și de la celălalt, am poate deduce din codul 828 00:45:57,900 --> 00:46:01,930 aici că suntem accepta intrare care este de tip dublă 829 00:46:01,930 --> 00:46:03,670 și returnarea o dublă. 830 00:46:03,670 --> 00:46:07,890 >> Observați că aici nu avem în mod explicit definit numele argumentelor 831 00:46:07,890 --> 00:46:11,220 că această funcție este acceptarea. 832 00:46:11,220 --> 00:46:16,180 Și așa vom vedea ne putem referi la acești parametri folosind $ 0, $ 1, 833 00:46:16,180 --> 00:46:20,140 așa mai departe și așa mai departe, în funcție de numărul de acel parametru utilizat 834 00:46:20,140 --> 00:46:20,850 în această funcție. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> Acest lucru este ceva care aveți de gând pentru a vedea o mulțime este acest suport cret deschis 837 00:46:29,740 --> 00:46:32,797 definiție urmată de o $ 0, și apoi o operație, 838 00:46:32,797 --> 00:46:34,130 și apoi o acoladă închisă. 839 00:46:34,130 --> 00:46:38,630 Aceasta este o funcție anonim care efectuează această operațiune. 840 00:46:38,630 --> 00:46:42,940 Ea are acest parametru în cazul în care este de tip se deduce. 841 00:46:42,940 --> 00:46:44,860 Că primul parametru este de $ 0 ° C. 842 00:46:44,860 --> 00:46:49,010 Și o operație este întâmplă pe care $ 0 ° C. 843 00:46:49,010 --> 00:46:52,100 >> Audiența: Deci semnul dolar înseamnă parametru în esență, 844 00:46:52,100 --> 00:46:53,429 și 0 înseamnă primul? 845 00:46:53,429 --> 00:46:54,720 DAN Armendariz: Asta-i corect. 846 00:46:54,720 --> 00:46:59,100 Deci semnul dolarului înseamnă în esență parametru, și 0 înseamnă prima. 847 00:46:59,100 --> 00:47:02,760 Dar funcționează în mod special în acest caz în care nu am numit 848 00:47:02,760 --> 00:47:07,940 argumentele în funcția mea anonim. 849 00:47:07,940 --> 00:47:11,119 >> Audiența: Are Perl sau ceva au acest semn dolar, dolar 0 acolo? 850 00:47:11,119 --> 00:47:12,702 DAN Armendariz: Are care, îmi pare rău? 851 00:47:12,702 --> 00:47:15,360 Audiența: Are Perl au acest dolar 0, dolarul 1-- 852 00:47:15,360 --> 00:47:17,318 DAN Armendariz: Nu sunt prea familiarizat cu Perl, 853 00:47:17,318 --> 00:47:21,340 dar PHP ce definește variabile bazate pe semne dolar. 854 00:47:21,340 --> 00:47:26,120 Și pot exista unele limbi care au caracteristici cum ar fi acest lucru. 855 00:47:26,120 --> 00:47:28,240 De fapt, Swift împrumută o mulțime de caracteristici ca aceasta 856 00:47:28,240 --> 00:47:29,489 dintr-un lot de alte limbi. 857 00:47:29,489 --> 00:47:32,380 Vedem indicii de Python în ea. 858 00:47:32,380 --> 00:47:35,800 Această definiție de tipul pare să vină de la OCaml. 859 00:47:35,800 --> 00:47:38,932 Și avem doar o grămadă de chestii de la o mulțime de limbi diferite. 860 00:47:38,932 --> 00:47:40,640 Acesta este unul de la Nisa lucruri despre Swift 861 00:47:40,640 --> 00:47:43,390 este că este nevoie de o mulțime de cele mai bune idei de la o grămadă de limbi 862 00:47:43,390 --> 00:47:47,229 și-le pe toate împreună shoehorns într-o singură limbă super-. 863 00:47:47,229 --> 00:47:49,520 De fapt, dacă-mi permiteți să continua suflare mintea ta, 864 00:47:49,520 --> 00:47:51,000 așa că am făcut toate astea. 865 00:47:51,000 --> 00:47:56,690 Poate putem simplifica acest lucru un pic bit prin realizarea că, desigur, 866 00:47:56,690 --> 00:48:02,120 Swift are un exponentiating Funcția construit în. 867 00:48:02,120 --> 00:48:04,660 Dacă aș import Darwin, care este doar biblioteca care 868 00:48:04,660 --> 00:48:09,680 Caracteristici această funcție numită Pow, acum Pot simplifica puterea mea a funcției 869 00:48:09,680 --> 00:48:11,830 să fie următoarele. 870 00:48:11,830 --> 00:48:15,860 Acesta va întoarce Această funcție anonim. 871 00:48:15,860 --> 00:48:17,950 >> Dar uita-te la cat de simplu acest lucru este acum. 872 00:48:17,950 --> 00:48:22,780 Aceasta este o funcție anonim care accepta un anumit tip de date, 873 00:48:22,780 --> 00:48:26,600 și va fi una argument specific, 874 00:48:26,600 --> 00:48:29,320 referință de la $ la 0, care este de tip Double. 875 00:48:29,320 --> 00:48:32,680 Se va reveni la un tip de dublă. 876 00:48:32,680 --> 00:48:35,760 Dar declarația de returnare este acum implicit. 877 00:48:35,760 --> 00:48:39,990 >> Și este acest stil exact care este foarte, foarte răspândită în Swift, 878 00:48:39,990 --> 00:48:40,790 peste tot. 879 00:48:40,790 --> 00:48:43,190 Vom vedea acest tot timpul în Swift. 880 00:48:43,190 --> 00:48:46,150 Așa că eu sunt arătând toate acestea pentru tine, pentru că de această sintaxă. 881 00:48:46,150 --> 00:48:49,070 Acest lucru este foarte frecvente pentru a vedea, care înseamnă 882 00:48:49,070 --> 00:48:51,420 este o funcție anonim care funcționează 883 00:48:51,420 --> 00:48:54,640 unele operare pe aceste argumente. 884 00:48:54,640 --> 00:48:56,940 Și există o întoarcere implicit. 885 00:48:56,940 --> 00:49:01,850 Deci, este absolut același lucru pentru noi să spunem acest lucru, chiar aici. 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> Deoarece acest buclat suport este o funcție, 888 00:49:08,150 --> 00:49:10,480 suntem efectua această operație pe primul argument. 889 00:49:10,480 --> 00:49:12,170 Vom reveni la asta. 890 00:49:12,170 --> 00:49:14,815 Dar această revenire exterior este revenind această funcție întreg, 891 00:49:14,815 --> 00:49:19,855 această funcție întreg anonim că tocmai am creat. 892 00:49:19,855 --> 00:49:21,689 Orice alte întrebări? 893 00:49:21,689 --> 00:49:23,980 Bine, eu nu știu dacă voi sunteți gata pentru asta, 894 00:49:23,980 --> 00:49:27,455 dar putem merge chiar mai nebun cu Swift. 895 00:49:27,455 --> 00:49:28,560 Ești gata? 896 00:49:28,560 --> 00:49:29,930 OK, aceasta este mare. 897 00:49:29,930 --> 00:49:35,310 >> Acum avem de fapt capacitatea de la, în Swift, din cauza modului modular 898 00:49:35,310 --> 00:49:39,650 și cum pe bază de protocol este, la defini propriile noastre operatori sperii. 899 00:49:39,650 --> 00:49:44,060 Ca și în acest caz, am avut nici o Operatorul de exponentiation-- bine, 900 00:49:44,060 --> 00:49:47,990 pentru efectuarea puteri de ceva. 901 00:49:47,990 --> 00:49:53,632 Dar pot, în Swift, definesc un nou Operatorul care face exact acest lucru. 902 00:49:53,632 --> 00:49:55,590 Deci, în acest caz, nu este o grămadă de sintaxă aici. 903 00:49:55,590 --> 00:49:59,980 Și o să vă permit să se uite la ea la domiciliu atunci când te uiți la asta. 904 00:49:59,980 --> 00:50:06,890 Dar noi suntem definirea acestei infix Operatorul, **, care va permite apoi ne, 905 00:50:06,890 --> 00:50:09,840 prin definirea despre ce Funcția ** de fapt 906 00:50:09,840 --> 00:50:15,010 nu, pentru a accepta o stanga laterale și o parte dreaptă, 907 00:50:15,010 --> 00:50:21,190 și apoi să se întoarcă exponentul care stanga la dreapta. 908 00:50:21,190 --> 00:50:24,850 >> Și astfel acum dintr-o brusc am au creat un nou numărător. 909 00:50:24,850 --> 00:50:29,490 Deci 2 ** 3 înseamnă 2 la puterea a treia. 910 00:50:29,490 --> 00:50:34,420 [Minte SUFLARE] acest lucru prin în sine ar trebui să vă fie ca, 911 00:50:34,420 --> 00:50:37,960 OK, șurub C. am de gând Swift tot drumul. 912 00:50:37,960 --> 00:50:38,740 Asta e super. 913 00:50:38,740 --> 00:50:40,140 Acest lucru este destul de fantastic. 914 00:50:40,140 --> 00:50:42,240 >> Deși acest lucru este un exemplu foarte bun. 915 00:50:42,240 --> 00:50:45,570 Dar n-am avea din afara din acest exemplu de fapt 916 00:50:45,570 --> 00:50:46,800 definit propria mea operatorului. 917 00:50:46,800 --> 00:50:49,710 Dar totuși, arată o mulțime de puterea de Swift 918 00:50:49,710 --> 00:50:54,050 și de ce acest lucru este de fapt într-adevăr foarte cool. 919 00:50:54,050 --> 00:50:55,832 OK, da? 920 00:50:55,832 --> 00:50:57,790 Audiența: Daca esti Definirea propriului operator 921 00:50:57,790 --> 00:51:02,940 cum a face tu știi că nu accidental încercați și de a crea un operator care este 922 00:51:02,940 --> 00:51:06,040 undeva în C, cum ar fi ascuns undeva în Swift, 923 00:51:06,040 --> 00:51:12,210 ca unul obscur pe care nu fi văzut înainte. 924 00:51:12,210 --> 00:51:15,050 >> DAN Armendariz: Deci, dacă sunteți încercarea de pentru a defini propriile operatori, 925 00:51:15,050 --> 00:51:20,970 există riscul de a defini unul peste un operator existent. 926 00:51:20,970 --> 00:51:24,870 Care merge într-un nivel de detaliu care Nu cred că avem timp pentru a trece peste. 927 00:51:24,870 --> 00:51:27,620 Dar asta este un risc. 928 00:51:27,620 --> 00:51:31,320 Și care este, de fapt, foarte motivul Nu am folosit simbolul caret, care 929 00:51:31,320 --> 00:51:36,210 când suntem tastați din putere, am de obicei, utilizați 4 mic cursor 5 sau ceva 930 00:51:36,210 --> 00:51:40,560 așa, doar atunci când suntem Gchatting prieteni sau orice altceva. 931 00:51:40,560 --> 00:51:43,660 Dar, în acest caz, că, de fapt ar fi cauzat o coliziune. 932 00:51:43,660 --> 00:51:46,450 Și așa că am evitat doar pentru că I sa întâmplat să cunosc în acest caz 933 00:51:46,450 --> 00:51:50,430 că ar provoca asta coliziune. 934 00:51:50,430 --> 00:51:52,270 >> In regula. 935 00:51:52,270 --> 00:51:55,080 Acum, din păcate, pentru ultimele șapte minute, 936 00:51:55,080 --> 00:51:57,410 Trebuie să păstreze suflare mințile voastre un pic. 937 00:51:57,410 --> 00:52:00,230 Deci, permiteți-mi să vă arăt alte lucruri la fel de bine. 938 00:52:00,230 --> 00:52:03,710 >> V-am arătat această idee de având aceste funcții anonime, 939 00:52:03,710 --> 00:52:07,040 aceste închideri care vă permit să fel de a trece în jurul valorii de funcții. 940 00:52:07,040 --> 00:52:08,100 Aveți posibilitatea să le returna. 941 00:52:08,100 --> 00:52:09,490 Aveți posibilitatea să le manipula. 942 00:52:09,490 --> 00:52:11,790 Puteți face tot felul de chestii nebun. 943 00:52:11,790 --> 00:52:14,850 >> Dar un alt lucru care se întâmplă să fie utile 944 00:52:14,850 --> 00:52:19,740 este abilitatea de a, spre deosebire a se întoarce aceste funcții 945 00:52:19,740 --> 00:52:25,146 într-o funcție, pentru a trece o funcție ca un parametru la altul funcție. 946 00:52:25,146 --> 00:52:30,430 S-ar putea fi de gândire bine de ce de pe Pamant aș vrea să fac ceva de genul asta? 947 00:52:30,430 --> 00:52:33,660 >> Ei bine, să zicem că vreau de a lua acest operator pe care am 948 00:52:33,660 --> 00:52:40,260 muncit din greu pentru a crea și de a aplica l la o grămadă de numere diferite 949 00:52:40,260 --> 00:52:41,770 într-o matrice. 950 00:52:41,770 --> 00:52:46,700 Deci, în acest caz, am o serie de integers-- 1, 4, 7, 2, 5, 10, 56. 951 00:52:46,700 --> 00:52:48,080 Și vreau să-le pe toate dubla. 952 00:52:48,080 --> 00:52:50,430 Modul în care ne-ar de obicei face este de a scrie doar 953 00:52:50,430 --> 00:52:53,440 un simplu pentru buclă care reiterează peste toate 954 00:52:53,440 --> 00:52:57,140 și de a efectua un fel de operațiune pătrat peste ele, 955 00:52:57,140 --> 00:53:02,700 introducerea acestor noi valori într-o nouă variabilă, sau mai degrabă, o nouă gamă de aici. 956 00:53:02,700 --> 00:53:07,370 Și valoarea de ieșire a Rezultatul este apoi toate aceste tablouri, 957 00:53:07,370 --> 00:53:10,200 sau mai degrabă toți cei elemente pătrat acum. 958 00:53:10,200 --> 00:53:12,680 >> Și am putea face același lucru lucru pentru cubaj ea, 959 00:53:12,680 --> 00:53:15,360 dar un pic semnal de alarmă Ar trebui să fie merge off 960 00:53:15,360 --> 00:53:17,360 spunând că poate exista un fel care ne-ar 961 00:53:17,360 --> 00:53:19,860 putea simplifica acest lucru un pic. 962 00:53:19,860 --> 00:53:21,130 Și, de fapt nu există. 963 00:53:21,130 --> 00:53:25,320 Ce dacă am putea crea o funcție care ne permite 964 00:53:25,320 --> 00:53:28,350 să accepte, ca un animal de pradă, o funcție? 965 00:53:28,350 --> 00:53:30,350 Deci, în acest caz, să ia o uita-te la aceste argumente. 966 00:53:30,350 --> 00:53:33,220 Vom accepta o listă de camere duble. 967 00:53:33,220 --> 00:53:35,030 Și apoi vom merge să accepte o funcție 968 00:53:35,030 --> 00:53:40,990 într-o variabilă numită f care va să ia o dublă și a reveni o dublă. 969 00:53:40,990 --> 00:53:43,320 Și întreaga producție din tot acest funcție 970 00:53:43,320 --> 00:53:47,310 numit Mapper este de gând să returna un array numit dublu. 971 00:53:47,310 --> 00:53:52,380 >> Ce acest lucru ar permite apoi să mă faci este să itera peste această listă 972 00:53:52,380 --> 00:53:56,350 și de a face același lucru, dar acum se aplică această funcție pe fiecare 973 00:53:56,350 --> 00:53:58,970 din valorile individuale din această listă. 974 00:53:58,970 --> 00:54:00,750 Deci, eu nu știu cu adevărat ce este f. 975 00:54:00,750 --> 00:54:02,010 Nu contează pentru mine. 976 00:54:02,010 --> 00:54:06,530 Dar atâta timp cât este nevoie într-o dublă, efectuează o operație pe el, 977 00:54:06,530 --> 00:54:08,640 și apoi returnează un Dublu, aș fi atunci 978 00:54:08,640 --> 00:54:13,415 capabil să hartă care funcția peste fiecare element unic în listă. 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> Și acest tip de programare este numitele funcții superioare de ordine, 981 00:54:20,930 --> 00:54:24,440 în cazul în care ne trece funcții în jurul valorii de ca parametri 982 00:54:24,440 --> 00:54:26,430 și de a face lucruri cu funcții. 983 00:54:26,430 --> 00:54:29,640 E un fel de a lua toate acestea idei pe care le-am învățat în CS50 984 00:54:29,640 --> 00:54:31,390 și luându-i un fel de la nivelul următor. 985 00:54:31,390 --> 00:54:34,140 Și acest lucru este toate lucrurile stil CS51. 986 00:54:34,140 --> 00:54:37,080 Și așa vom merge în profunzime mai mult în clasele de genul asta. 987 00:54:37,080 --> 00:54:38,930 >> Dar acest lucru este, de asemenea, importantă aici pentru că am 988 00:54:38,930 --> 00:54:42,010 a se vedea o mulțime de funcții care sunt utilizate în Swift 989 00:54:42,010 --> 00:54:45,590 care, în esență, nu acest, unde avem 990 00:54:45,590 --> 00:54:48,300 unele numere, unele serie de numere. 991 00:54:48,300 --> 00:54:50,850 Vom trece că matrice în mapper nostru. 992 00:54:50,850 --> 00:54:55,770 Și noi te, de asemenea, de gând să trece o funcție, care 993 00:54:55,770 --> 00:54:57,950 am definit deja aici. 994 00:54:57,950 --> 00:54:59,690 O să fie pătrat. 995 00:54:59,690 --> 00:55:02,220 Și am de gând să atunci pătrat toate aceste numere 996 00:55:02,220 --> 00:55:04,710 și se păstrează ca în acest rezultat de aici. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> Deci, acest caz ne-am definit nostru Funcția propriu numit mapper. 999 00:55:11,000 --> 00:55:15,370 Dar acest lucru este exact, De fapt, construit în Swift. 1000 00:55:15,370 --> 00:55:18,960 Există o varietate de funcții numit harta. 1001 00:55:18,960 --> 00:55:21,520 Există o funcție de hartă, există o funcție reduce, 1002 00:55:21,520 --> 00:55:25,630 și există o funcție de filtru, care se aplică, în esență, funcții 1003 00:55:25,630 --> 00:55:30,782 pentru fiecare element unic într-o lista a le modifica într-un fel. 1004 00:55:30,782 --> 00:55:34,510 >> Audiența: Deci din moment ce sunt de transformare datele în alt format 1005 00:55:34,510 --> 00:55:36,134 printr-o function-- 1006 00:55:36,134 --> 00:55:37,050 DAN Armendariz: dreapta. 1007 00:55:37,050 --> 00:55:39,420 Da, așa funcția că suntem accepta 1008 00:55:39,420 --> 00:55:41,790 este transformarea datelor într-un fel. 1009 00:55:41,790 --> 00:55:44,700 În acest caz, am fost fie Cuadratura ea, sau am fost o cubaj, 1010 00:55:44,700 --> 00:55:50,060 sau într-adevăr, am putea efectua nici o operație pe el, la toate. 1011 00:55:50,060 --> 00:55:54,150 >> Dar lasă-mă să-ți arăt cum acest atunci este de gând să se uite în practică. 1012 00:55:54,150 --> 00:55:56,681 Și din nou, eu rulează un pic de timp. așa că nu sunt 1013 00:55:56,681 --> 00:55:59,430 va fi capabil să meargă peste tot a codului sursă aici, în detaliu. 1014 00:55:59,430 --> 00:56:00,721 Dar eu vă încurajez să faci asta. 1015 00:56:00,721 --> 00:56:03,850 Vom posta cât mai curând posibil după această discuție. 1016 00:56:03,850 --> 00:56:07,610 >> Dar, dacă aruncăm o privire la acest lucru, presupunem că avem o listă de numere, 1017 00:56:07,610 --> 00:56:10,260 o serie de numere în acest variabile numite numere. 1018 00:56:10,260 --> 00:56:16,670 Apoi ne-am dori pentru a efectua această operațiune filtru pe aceste numere. 1019 00:56:16,670 --> 00:56:19,730 Deci, este o mare filtru Funcția pentru ca 1020 00:56:19,730 --> 00:56:24,660 acceptă o matrice și, de asemenea, o funcție. 1021 00:56:24,660 --> 00:56:28,760 Și pe fiecare element în matrice, se efectuează această funcție. 1022 00:56:28,760 --> 00:56:31,990 >> Dacă asta se întoarce funcție adevărat, pastrand acel element. 1023 00:56:31,990 --> 00:56:36,100 Dacă această funcție returnează false, se aruncă acel element. 1024 00:56:36,100 --> 00:56:40,480 Și apoi se întoarce o listă care este apoi adusă tot 1025 00:56:40,480 --> 00:56:44,360 de acele elemente care au fost filtrate. 1026 00:56:44,360 --> 00:56:47,150 >> Deci, în alte cuvinte, acest lucru este aceeași idee, The cartea de note. 1027 00:56:47,150 --> 00:56:50,800 Am putea avea o varietate de clase în acest număr valoare numit. 1028 00:56:50,800 --> 00:56:55,590 Ar putea fi de 100, și 70, și 40, așa mai departe și așa mai departe. 1029 00:56:55,590 --> 00:56:59,110 Ce acest filtru nu este o notificare că acest lucru este că zahărul sintactic 1030 00:56:59,110 --> 00:57:01,310 pentru o funcție anonim. 1031 00:57:01,310 --> 00:57:05,980 Aceasta este o funcție anonim spune că parametrul pe care am accepta 1032 00:57:05,980 --> 00:57:09,690 va fi, în cazul în care este mai mare decât 70, 1033 00:57:09,690 --> 00:57:15,837 atunci acest lucru va reveni adevărat, ceea ce înseamnă că acel element vor fi păstrate în acest filtru. 1034 00:57:15,837 --> 00:57:17,920 Deci, hai sa fie un pic mai concret despre acest lucru. 1035 00:57:17,920 --> 00:57:25,760 Dacă am această matrice de numere și este alcătuită din 100, 70, și 40, 1036 00:57:25,760 --> 00:57:29,730 Am efectua acest filtru operație pe fiecare dintre acestea. 1037 00:57:29,730 --> 00:57:33,270 Așa că primul dintre ele este această valoare de 100. 1038 00:57:33,270 --> 00:57:36,770 100 mai mare sau egală la 70 este adevărat, care 1039 00:57:36,770 --> 00:57:41,950 înseamnă că 100 este menținută în această nouă copie a acestui tablou. 1040 00:57:41,950 --> 00:57:44,290 70, de asemenea, trece. 1041 00:57:44,290 --> 00:57:46,020 Dar 40 nu. 1042 00:57:46,020 --> 00:57:54,290 Deci, ceea ce este returnat în passingCount este matricea de elemente 100 și 70-- 1043 00:57:54,290 --> 00:57:57,410 100, virgulă, 70. 1044 00:57:57,410 --> 00:57:59,870 Acestea au fost doar doi elemente care au fost păstrate. 1045 00:57:59,870 --> 00:58:03,740 Și astfel motivul pentru care am trecut prin rapid o mulțime de aceste tipuri de ordine de mare 1046 00:58:03,740 --> 00:58:08,680 lucrurile sunt pentru că acest lucru este faptul că comuna lucru pe care îl veți vedea în Swift destul de 1047 00:58:08,680 --> 00:58:16,810 frecvent, efectuează o operație folosind această sintaxă funcție anonim. 1048 00:58:16,810 --> 00:58:18,450 >> Există niște chestii misto. 1049 00:58:18,450 --> 00:58:24,730 Switch-uri sunt foarte puternic în Swift, Adică la fel ca un nebun, nebun puternic. 1050 00:58:24,730 --> 00:58:28,250 Puteți folosi switch, și le puteți aplica de fapt 1051 00:58:28,250 --> 00:58:33,160 la intervale, care este un fel de nebun, și de a face chestii de lux de genul asta. 1052 00:58:33,160 --> 00:58:37,540 >> Dar, în ultimele câteva minute, Vreau să treceți destul de departe 1053 00:58:37,540 --> 00:58:46,940 și-ți arăt un exemplu specific al modului putem crea în app iOS folosind Swift. 1054 00:58:46,940 --> 00:58:49,040 Așa că atunci când faci acest lucru, va trebui să ia 1055 00:58:49,040 --> 00:58:51,990 o privire at-- pe Apple documentație, ei 1056 00:58:51,990 --> 00:58:56,084 au o mulțime de tutoriale foarte bune pentru crearea de prima aplicare. 1057 00:58:56,084 --> 00:58:58,250 Și eu vă încurajez să faci că, deoarece acestea să luați 1058 00:58:58,250 --> 00:59:04,110 prin toate etapele de ce anume la click pentru a crea o aplicație iOS. 1059 00:59:04,110 --> 00:59:07,290 >> Dar aici avem această aplicație iOS. 1060 00:59:07,290 --> 00:59:10,960 Și este o aplicatie destul de simplu într-adevăr. 1061 00:59:10,960 --> 00:59:13,840 Dacă aș alerga acest lucru, să-mi arate tu ceea ce pare. 1062 00:59:13,840 --> 00:59:19,480 Tot ce face, în esență, este trage de pe internet un fișier JSON 1063 00:59:19,480 --> 00:59:22,300 care le-am stocate pe un server. 1064 00:59:22,300 --> 00:59:26,310 Și că fișierul JSON definește imagini care permit 1065 00:59:26,310 --> 00:59:31,680 mi să apoi parcurge, pe meu app, imagini de la serverul meu de web. 1066 00:59:31,680 --> 00:59:32,880 >> Așa că am aici getNextImage. 1067 00:59:32,880 --> 00:59:37,100 Se încarcă o imagine de pe internet, și apoi afișează pe ecran. 1068 00:59:37,100 --> 00:59:38,200 >> Deci, este destul de simplu. 1069 00:59:38,200 --> 00:59:41,550 Dar scopul aici este de a arăta vă cum putem combina lucruri 1070 00:59:41,550 --> 00:59:47,820 din ultimele câteva săptămâni de CS50 într-o aplicație reală iOS. 1071 00:59:47,820 --> 00:59:53,140 Cu alte cuvinte, poate una dintre cele mai lucruri pe care le va dori să facă 1072 00:59:53,140 --> 00:59:56,340 este de a avea o aplicație iOS care poate trage de date de pe internet 1073 00:59:56,340 --> 00:59:59,070 și arată utilizatorului unele informații. 1074 00:59:59,070 --> 01:00:03,130 Aceasta este în întregime punctul din acest cod sursă aici. 1075 01:00:03,130 --> 01:00:07,890 >> Deci, există o mulțime de spus despre cum se face actual de dezvoltare iOS. 1076 01:00:07,890 --> 01:00:12,860 Există o mulțime de sintaxă nebun că nu am văzut destul de încă 1077 01:00:12,860 --> 01:00:15,580 ca o clasă, ceea ce este de fapt o clasă. 1078 01:00:15,580 --> 01:00:19,470 Putem ignora în mare măsură că pentru moment. 1079 01:00:19,470 --> 01:00:23,250 >> Dar observați că am conținut în cadrul acestei o varietate de lucruri 1080 01:00:23,250 --> 01:00:27,720 pe care le-am văzut deja ca Funcțiile care au denumiri specifice. 1081 01:00:27,720 --> 01:00:32,650 Și când ne-am da celor funcționează numele corect 1082 01:00:32,650 --> 01:00:36,530 care sunt de așteptat de iOS, de fapt acest lucru se simte un pic magic. 1083 01:00:36,530 --> 01:00:40,300 Dar atunci când creați un aplicație iOS, acolo 1084 01:00:40,300 --> 01:00:47,590 sunt nume de funcții specifice care sunt numite de telefonul în sine 1085 01:00:47,590 --> 01:00:52,440 ca cererea este de încărcare pentru a încerca pentru a crea procesul care de fapt 1086 01:00:52,440 --> 01:00:54,787 rulează aplicația. 1087 01:00:54,787 --> 01:00:58,120 Deci, din nou, există o mulțime de lucruri pe care eu Trebuie să treacă peste aici pentru a ne 1088 01:00:58,120 --> 01:01:00,570 să vorbim despre asta în mod special. 1089 01:01:00,570 --> 01:01:06,050 Dar eu vă încurajez să te uiți la, probabil, pe de altă seminar iOS, dar, de asemenea, unele 1090 01:01:06,050 --> 01:01:09,290 de tutoriale online, care face un loc de muncă mult mai bine de a descrie 1091 01:01:09,290 --> 01:01:11,030 informațiile specifice. 1092 01:01:11,030 --> 01:01:15,760 >> Dar putem vedea o serie de lucruri pe care sunt interesante de codul aici. 1093 01:01:15,760 --> 01:01:17,950 Observați că avem, dacă declarații. 1094 01:01:17,950 --> 01:01:20,400 Apropo, unul important lucru despre if 1095 01:01:20,400 --> 01:01:24,860 este că parantezele din jurul Expresie booleană sunt opționale. 1096 01:01:24,860 --> 01:01:30,800 Dar acolade nu sunt opționale, indiferent de cât de puține sau mai multe linii de cod 1097 01:01:30,800 --> 01:01:32,360 aveți într-o declarație, dacă. 1098 01:01:32,360 --> 01:01:38,670 Nu poți avea o if fără acolade în Swift. 1099 01:01:38,670 --> 01:01:41,000 >> Și acest lucru este, de asemenea, un fel de prostie. 1100 01:01:41,000 --> 01:01:43,910 Dar există motive istorice pentru asta. 1101 01:01:43,910 --> 01:01:46,180 Ar trebui să vă salva de la tine. 1102 01:01:46,180 --> 01:01:49,899 Ca și aceasta, de exemplu, nu poți elimina acolade în jurul valorii de faptul că 1103 01:01:49,899 --> 01:01:50,440 if. 1104 01:01:50,440 --> 01:01:52,730 Acestea sunt, de fapt, necesare. 1105 01:01:52,730 --> 01:01:54,480 Așa că vă încurajez să aruncăm o privire la acest lucru. 1106 01:01:54,480 --> 01:01:56,230 Dar nu e una mai mult construi pe care vreau 1107 01:01:56,230 --> 01:02:02,640 să-ți arăt despre Swift că este nou la Swift 2.0, comparativ 1108 01:02:02,640 --> 01:02:08,460 la versiuni mai vechi ale Swift, care este după cum urmează. 1109 01:02:08,460 --> 01:02:11,620 Să vedem unde am pus-o aici? 1110 01:02:11,620 --> 01:02:16,630 >> Deci, în această funcție numită fetchJSON, această funcție 1111 01:02:16,630 --> 01:02:23,450 este responsabil pentru tragerea care JSON fișier de la o adresă URL, care se întâmplă așa 1112 01:02:23,450 --> 01:02:26,310 care urmează să fie difuzate pe IDE meu CS50. 1113 01:02:26,310 --> 01:02:28,580 Tocmai am început Apache, pune dosarul meu JSON acolo, 1114 01:02:28,580 --> 01:02:32,110 și eu sunt în măsură pentru a trage apoi că datele de pe Internet folosind 1115 01:02:32,110 --> 01:02:36,430 această funcție și această adresă URL, care este furnizată de telefon. 1116 01:02:36,430 --> 01:02:40,490 Este furnizat de un bibliotecă pe care le folosiți atunci când 1117 01:02:40,490 --> 01:02:43,140 ce faci unele de dezvoltare app iOS. 1118 01:02:43,140 --> 01:02:49,690 >> Observați aici că nu există acest neobișnuit construct sintactică numit paza. 1119 01:02:49,690 --> 01:02:53,530 Și într-adevăr toate acestea sunt în Swift este un mod de a verifica 1120 01:02:53,530 --> 01:02:56,870 că unele lucruri au fost îndeplinite înainte de a 1121 01:02:56,870 --> 01:03:00,000 continua cu restul funcției. 1122 01:03:00,000 --> 01:03:04,260 Așa că am putea avea, folosind acest tip opțional, 1123 01:03:04,260 --> 01:03:10,530 Aș fi putut găsit URL-ul de care rulează această funcție NSURL 1124 01:03:10,530 --> 01:03:16,640 și stocarea într-un URL care constantă, și apoi verificarea 1125 01:03:16,640 --> 01:03:20,820 pentru a vedea dacă a fost zero URL, pentru că a fost de gând să se întoarcă un tip opțional. 1126 01:03:20,820 --> 01:03:25,660 Și dacă a fost zero, atunci aș imprima o eroare și apoi să se întoarcă. 1127 01:03:25,660 --> 01:03:29,970 >> Dar, în loc, ceea ce permite de paza ne facem este că foarte lucru, 1128 01:03:29,970 --> 01:03:34,550 dar să se asigure că acesta este de fapt, cazul în care url 1129 01:03:34,550 --> 01:03:38,020 a fost stabilit în mod corespunzător de către NSURL. 1130 01:03:38,020 --> 01:03:41,810 Și dacă este, atunci sare peste acest lucru, și 1131 01:03:41,810 --> 01:03:46,110 vă va permite să continuați cu URL a fost definită în mod corespunzător. 1132 01:03:46,110 --> 01:03:48,830 Dar dacă este cazul în care url nu este definită în mod corespunzător, 1133 01:03:48,830 --> 01:03:52,550 dacă această funcție returnează o eroare sau un alt lucru neașteptat 1134 01:03:52,550 --> 01:03:58,030 apare de fapt, acest construct de paza ne permite să apoi de ieșire această eroare 1135 01:03:58,030 --> 01:04:00,390 și să se întoarcă imediat. 1136 01:04:00,390 --> 01:04:00,890 Da? 1137 01:04:00,890 --> 01:04:04,839 >> Audiența: Deci e un fel de ca un dacă, atunci altceva? 1138 01:04:04,839 --> 01:04:07,130 DAN Armendariz: Este un fel de ca o dacă, atunci altceva, da, 1139 01:04:07,130 --> 01:04:14,200 cu excepția faptului că această adresă URL este apoi definit pentru tot sub acest. 1140 01:04:14,200 --> 01:04:20,420 Dacă trece această pază, atunci va fi de fapt umplut cu date 1141 01:04:20,420 --> 01:04:29,500 și utilizabile în restul codul sursă în funcția. 1142 01:04:29,500 --> 01:04:33,790 Deci bănuiesc că ai de gând să începe să privească acest paza, de asemenea. 1143 01:04:33,790 --> 01:04:36,670 Și să fie conștient de acest lucru. 1144 01:04:36,670 --> 01:04:46,270 >> Deci, sa ne uitam la o pereche de altă lucruri, acest drept aici este ceea ce, 1145 01:04:46,270 --> 01:04:53,377 crezi, doar bazat pe ceea ce vorbeam despre înainte? 1146 01:04:53,377 --> 01:04:56,650 >> Audiența: cred că va rula în listă? 1147 01:04:56,650 --> 01:04:59,100 >> DAN Armendariz: Deci care este aproape. 1148 01:04:59,100 --> 01:05:02,360 Aceasta este o funcție care suntem definirea. 1149 01:05:02,360 --> 01:05:07,240 Și noi suntem introducerea acestei funcții ca un argument pentru a această funcție aici. 1150 01:05:07,240 --> 01:05:09,120 >> Audiența: [inaudibil] dacă nu zero. 1151 01:05:09,120 --> 01:05:11,470 Deci, este pe lista, nu? 1152 01:05:11,470 --> 01:05:15,450 >> DAN Armendariz: Dacă eroarea nu este zero, astfel încât este--, așa că am avea pentru a defila. 1153 01:05:15,450 --> 01:05:18,060 Ei bine, să vedem, nu pot într-adevăr derulați la dreapta aici. 1154 01:05:18,060 --> 01:05:23,161 eroare este un argument care este în curs de trecut la această funcție anonim. 1155 01:05:23,161 --> 01:05:24,410 Aceasta este o funcție anonim. 1156 01:05:24,410 --> 01:05:25,480 Nu are nici un nume. 1157 01:05:25,480 --> 01:05:29,850 Dar noi suntem acceptarea acestor trei argumente, date, răspuns, și de eroare. 1158 01:05:29,850 --> 01:05:33,590 Și se va întoarce gol la, astfel încât nu va să se întoarcă nimic. 1159 01:05:33,590 --> 01:05:37,910 Și acest lucru este conținutul de această funcție. 1160 01:05:37,910 --> 01:05:41,961 Și apoi avem acces în interiorul că Funcția de fiecare dintre aceste argumente. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> Deci e un vârtej de vânt tur al limbii. 1163 01:05:48,679 --> 01:05:50,470 Dar sper cu acest lucru, sperăm ca să luați 1164 01:05:50,470 --> 01:05:54,490 o privire la unele dintre tutoriale specific pentru dezvoltarea iOS cu Swift, 1165 01:05:54,490 --> 01:05:57,481 mai ales daca te duci la Apple web developer page-- 1166 01:05:57,481 --> 01:05:59,980 au o mulțime de foarte bună Tutoriale a obține ai început. 1167 01:05:59,980 --> 01:06:05,010 Dar sperăm că doar această oră de a vorbi despre sintaxa în sine a dat 1168 01:06:05,010 --> 01:06:08,760 vă suficient pentru a începe cu. 1169 01:06:08,760 --> 01:06:12,950 >> Vom posta toate acestea surse cod pe site-ul seminarului 1170 01:06:12,950 --> 01:06:17,800 cât mai curând posibil, și, de asemenea diapozitive astfel încât să aibă o referință pentru toți cei. 1171 01:06:17,800 --> 01:06:20,530 Dar noroc cu proiectele dumneavoastră. 1172 01:06:20,530 --> 01:06:23,640 Și vă mulțumesc tuturor foarte mult pentru venirea. 1173 01:06:23,640 --> 01:06:26,990 >> [APLAUZE] 1174 01:06:26,990 --> 01:06:28,026