1 00:00:00,000 --> 00:00:03,332 >> [Prehrávanie hudby] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> DAN AMRMENDARIZ: Každý, vitajte na CS50 seminár, 4 00:00:09,590 --> 00:00:11,690 iOS App Development s Swift. 5 00:00:11,690 --> 00:00:15,690 Som Dan Armendariz, a ja som učiteľ informatiky tu na Harvarde. 6 00:00:15,690 --> 00:00:21,510 >> A ďalšie hodina bude víchrica prehliadka toľko vecí 7 00:00:21,510 --> 00:00:25,160 o tejto téme, ako sme sa vojde. 8 00:00:25,160 --> 00:00:29,170 Budem sa po celý zdrojového kódu že budete vidieť online ešte dnes. 9 00:00:29,170 --> 00:00:31,990 Mohli by sme neboli schopní skutočne ísť nad všetkým 10 00:00:31,990 --> 00:00:34,810 že som, že som ukáže vám v tejto hodine. 11 00:00:34,810 --> 00:00:37,580 Ale aspoň dúfam, že prostredníctvom pripomienky zdrojového kódu, 12 00:00:37,580 --> 00:00:40,830 budete môcť pokúsiť sa zistiť, čo presne sa deje na tie veci 13 00:00:40,830 --> 00:00:42,950 že nemáme dosť dostať. 14 00:00:42,950 --> 00:00:46,970 >> Celkovo možno povedať, štruktúra dnešná diskusia bude nasledujúci. 15 00:00:46,970 --> 00:00:52,820 Začneme sa robiť niektoré základné syntax s jazykom Swift, 16 00:00:52,820 --> 00:00:56,290 ísť do niektorej z viacerých pokročilých Syntaxe Swift jazyka. 17 00:00:56,290 --> 00:00:59,560 Vzhľadom k tomu, jazyka je naozaj moderné a to 18 00:00:59,560 --> 00:01:02,110 má veľa vysokej úrovni rysy, veci, ktoré máme nie 19 00:01:02,110 --> 00:01:06,600 je vidieť na C v celej CS50, alebo Dokonca aj niektoré iné jazyky 20 00:01:06,600 --> 00:01:09,310 že sme začali použitie v CS50 ako je PHP, 21 00:01:09,310 --> 00:01:12,670 takže budem musieť pokúsiť zaviedli aj niektoré témy, ktoré 22 00:01:12,670 --> 00:01:18,580 sú vztiahnuté k jazykoch vyššej úrovne že nemusíte vidieť do hĺbky v CS50, 23 00:01:18,580 --> 00:01:21,380 ale uvidíte neskôr počítačovej vedy triedy. 24 00:01:21,380 --> 00:01:25,290 Takže to Bude to zhutnenie hodinu. 25 00:01:25,290 --> 00:01:28,897 A prosím, neváhajte ma nechať vedieť, ak máte nejaké otázky. 26 00:01:28,897 --> 00:01:30,730 Takže ak máte záujem v tom rozvoja 27 00:01:30,730 --> 00:01:34,442 s Swift, alebo naozaj akýkoľvek iOS pre vývoj aplikácií, 28 00:01:34,442 --> 00:01:35,900 existuje niekoľko požiadaviek. 29 00:01:35,900 --> 00:01:39,940 Po prvé, musíte používať Mac, bežiaci v príkladoch 30 00:01:39,940 --> 00:01:43,880 že budeme používať dnes, relatívne nová verzia operačného systému 31 00:01:43,880 --> 00:01:46,580 X. V tomto prípade, bežím X 10.5. 32 00:01:46,580 --> 00:01:48,600 Môžete byť spustený 10.11, ak chcete. 33 00:01:48,600 --> 00:01:52,430 Ale všetko, čo budete pozri zapája Xcode 7 a novšie, 34 00:01:52,430 --> 00:01:56,271 ktorý má najnovšiu verziu Swift, ktorý je swift 2,0. 35 00:01:56,271 --> 00:01:58,270 To je vlastne celkom dôležitý rozdiel. 36 00:01:58,270 --> 00:02:01,510 Veľa syntaxe má zmenilo docela významne 37 00:02:01,510 --> 00:02:05,890 v niektorých prípadoch od Swift 1.0, ktorý bol prepustený v minulom roku, 38 00:02:05,890 --> 00:02:08,514 na Swift 2.0, ktorý práve vyšiel tento rok na jeseň. 39 00:02:08,514 --> 00:02:09,889 Takže ideme ukázať Swift 2.0. 40 00:02:09,889 --> 00:02:13,020 Veľa vecí, ktoré hľadáte pre online 41 00:02:13,020 --> 00:02:18,040 keď sa snažíte dostať ďalšie informácie o rôznych vecí, 42 00:02:18,040 --> 00:02:20,710 možno budete chcieť explicitne vyhľadávať Swift 2 43 00:02:20,710 --> 00:02:24,950 skôr než len obyčajný starý Swift, aby sa uistil, že dostanete syntaxe správna. 44 00:02:24,950 --> 00:02:26,920 >> V skutočnosti je tento všeobecne platí. 45 00:02:26,920 --> 00:02:31,210 K dispozícii je rýchly množstvo vývoja deje v Swift jazyku 46 00:02:31,210 --> 00:02:35,110 Od tej doby Apple to prepustený, myslím, čo, je to už niečo cez rok 47 00:02:35,110 --> 00:02:36,370 teraz. 48 00:02:36,370 --> 00:02:39,080 A veci sa zmenili dramaticky v tom čase. 49 00:02:39,080 --> 00:02:42,160 A tak nebuďte frustrovaní ak, keď ste rozhliadať 50 00:02:42,160 --> 00:02:48,310 pre tém na Swift alebo ako dosiahnuť niečo, pomocou niektoré príklad kódu 51 00:02:48,310 --> 00:02:51,210 alebo niečo, že to tak nie je skutočne pracujú na Swift 2.0. 52 00:02:51,210 --> 00:02:53,790 Uistite sa, že ste hľadali špeciálne pre túto verziu 53 00:02:53,790 --> 00:02:58,690 pokúsiť sa minimalizovať efekty rôznych verzie a tie druhy vecí. 54 00:02:58,690 --> 00:03:02,470 >> Budem sa snažiť poukázať len niektoré veci ktoré sa budú líšiť, aby staršie verzie. 55 00:03:02,470 --> 00:03:03,970 Ale je to niečo, čo si dať pozor. 56 00:03:03,970 --> 00:03:06,770 To asi bude jeden z najväčších bolestí hlavy 57 00:03:06,770 --> 00:03:11,010 že budete mať s Swift je zistenie, príklad kódu, ktorý je starší, aj len 58 00:03:11,010 --> 00:03:14,050 o pár mesiacov, sa snaží používať to v modernejšom projektu. 59 00:03:14,050 --> 00:03:15,430 A to jednoducho nefunguje. 60 00:03:15,430 --> 00:03:18,530 Začínaš chyby kompilátora, syntax Chyby, všetky druhy bláznivé veci. 61 00:03:18,530 --> 00:03:21,580 Takže jednoducho byť pacient s že, a dúfajme, že budete 62 00:03:21,580 --> 00:03:24,200 majú celkom pekné zážitky s Swift celkovo. 63 00:03:24,200 --> 00:03:28,430 >> Teraz môžete skutočne join-- a ja dúfam, sme vlastne ešte This rok-- 64 00:03:28,430 --> 00:03:30,910 CS 50 je Apple app vývojový tím, ktorý 65 00:03:30,910 --> 00:03:34,680 vám umožní inštalovať žiadne aplikácie ktorý vytvoríte na vašich zariadeniach so systémom iOS. 66 00:03:34,680 --> 00:03:39,190 Takže sa pozrieť na túto adresu URL, ak máte záujem o tom, že. 67 00:03:39,190 --> 00:03:41,450 >> Takže len pár veci, o Swift sám. 68 00:03:41,450 --> 00:03:43,580 Jedná sa o zostavený jazyk. 69 00:03:43,580 --> 00:03:45,870 Ale uvidíte, že niektoré z funkcií, ktoré používame 70 00:03:45,870 --> 00:03:50,650 tomu, aby mohla byť použitá aj v trochu ako interpretovaný spôsobom rovnako. 71 00:03:50,650 --> 00:03:56,350 >> Mnoho syntax je požičal z C. Je založený a napísaný v jazyku C. 72 00:03:56,350 --> 00:04:00,400 A tak sme sa vidieť, že existuje veľa takeaways 73 00:04:00,400 --> 00:04:04,450 z vašich súčasných znalostí z C, ktorý môžeme port Swift. 74 00:04:04,450 --> 00:04:07,290 >> Ale sú tu veci, ktoré robiť to veľmi odlišné od C 75 00:04:07,290 --> 00:04:08,860 Je to veľmi silne zadali. 76 00:04:08,860 --> 00:04:10,380 K dispozícii je automatická správa pamäte. 77 00:04:10,380 --> 00:04:13,170 Nebudete musieť používať malloc alebo zadarmo kdekoľvek. 78 00:04:13,170 --> 00:04:15,110 Je určený pre univerzálnosti. 79 00:04:15,110 --> 00:04:19,480 Takže inými slovami, môžete ho použiť v najrôznejších kontextoch a situáciách, od Apple Watch 80 00:04:19,480 --> 00:04:26,290 iPhone celú cestu až do OS X, a dokonca aj niektoré servery, dokonca aj niektoré skriptovanie. 81 00:04:26,290 --> 00:04:28,400 Ale uvidíme, že podpora pre skriptovanie 82 00:04:28,400 --> 00:04:31,360 nie je tam ešte dosť as to je v iných jazykoch. 83 00:04:31,360 --> 00:04:34,930 Takže s najväčšou pravdepodobnosťou budete používať to výhradne pre rozvoj 84 00:04:34,930 --> 00:04:37,060 na počítači Mac alebo iPhone. 85 00:04:37,060 --> 00:04:40,150 >> A to má veľa moderných prvkov. 86 00:04:40,150 --> 00:04:43,380 A mnoho z týchto vecí sú veci, ktoré budeme sa snažiť riešiť dnes, 87 00:04:43,380 --> 00:04:47,590 ale aj naše témy, ktoré úprimne povedané, môžeme venovať celé kurzy. 88 00:04:47,590 --> 00:04:50,140 V skutočnosti, CS 51, ktorý je ponúkol ďalšie semester, 89 00:04:50,140 --> 00:04:53,990 sa zameriava veľa na týchto témach , Ktoré sú popísané nižšie. 90 00:04:53,990 --> 00:04:56,781 Takže môžete stráviť celý semester pochopenie týchto vecí. 91 00:04:56,781 --> 00:04:58,530 Ale budeme sa snažiť dostať cez ne 92 00:04:58,530 --> 00:05:00,800 aspoň tak, že vás môže pochopiť, čo je 93 00:05:00,800 --> 00:05:03,700 deje, keď sa pozriete na Swift programu 94 00:05:03,700 --> 00:05:07,310 a musí byť schopný zaseknúť svoju cestu cez to pre finálnu projekt. 95 00:05:07,310 --> 00:05:10,780 >> Teraz jeden z najlepších spôsobov, ktoré môžete získať ďalšie informácie na túto tému 96 00:05:10,780 --> 00:05:14,700 je úprimne povedané práve prostredníctvom Apple za predpokladu, dokumentáciu k Swift. 97 00:05:14,700 --> 00:05:16,930 Je tu veľa API ktoré sú k dispozícii. 98 00:05:16,930 --> 00:05:21,170 A to je dobrá domáca základňa pre vás hľadať, konkrétne veci, ktoré 99 00:05:21,170 --> 00:05:23,020 chcete urobiť s API zahŕňajúce iOS. 100 00:05:23,020 --> 00:05:26,350 Ak chcete používať fotoaparát príklad, môžete začať hľadať tu, 101 00:05:26,350 --> 00:05:32,540 a tiež používajú Google a Stack Overflow, ako by ste normálne. 102 00:05:32,540 --> 00:05:36,670 >> Akékoľvek otázky týkajúce sa tejto predtým, než sme sa skočiť priamo? 103 00:05:36,670 --> 00:05:37,880 Dobre. 104 00:05:37,880 --> 00:05:38,700 Poďme ďalej. 105 00:05:38,700 --> 00:05:42,620 >> Takže najprv, mám Počet napríklad súborov. 106 00:05:42,620 --> 00:05:46,040 A budem sa snažiť do kroku cez ne relatívne rýchlo. 107 00:05:46,040 --> 00:05:49,190 Toto je súbor Ahojte všetci pre Swift. 108 00:05:49,190 --> 00:05:51,050 Je to veľmi jednoduché. 109 00:05:51,050 --> 00:05:54,360 Je tu oveľa viac komentáre ako existujú konkrétne kód. 110 00:05:54,360 --> 00:05:57,100 Všimnite si, že skutočná kódu je na samom dne na riadku 14. 111 00:05:57,100 --> 00:05:57,980 To hovorí, že tlač. 112 00:05:57,980 --> 00:05:59,820 A potom je to volanie funkcie. 113 00:05:59,820 --> 00:06:03,010 Sme prechádzať do nej Reťazec s názvom Ahoj CS50. 114 00:06:03,010 --> 00:06:04,750 Všimnite si, že je žiadne bodkočiarkami. 115 00:06:04,750 --> 00:06:07,010 Všimnite si, že nie je int main. 116 00:06:07,010 --> 00:06:10,392 Je tu žiadny z Cruft, že sme mali s C. 117 00:06:10,392 --> 00:06:15,020 Keď sme pomocou Swift týmto spôsobom, ktorý je práve napísal v textovom súbore 118 00:06:15,020 --> 00:06:18,340 a uložené na mojom počítači, potom Môžem skompilovať a spustiť ho. 119 00:06:18,340 --> 00:06:20,920 >> Všimnite si, že tu nie som nepoužívate CS50 IDE. 120 00:06:20,920 --> 00:06:24,460 To predpokladá, že som beh a že som na OS X, 121 00:06:24,460 --> 00:06:27,870 a že som Xcode už nainštalovaný Na tomto stroji, aby pre tento 122 00:06:27,870 --> 00:06:29,080 skutočne funkciu. 123 00:06:29,080 --> 00:06:33,349 Ale to je len normálne textový súbor že sa potom môžeme zostaviť a upravovať. 124 00:06:33,349 --> 00:06:34,890 Tak uvidíme, ako to vlastne funguje. 125 00:06:34,890 --> 00:06:37,430 Čo keď chcem, aby to kompiláciu? 126 00:06:37,430 --> 00:06:40,450 swiftc 1.swift. 127 00:06:40,450 --> 00:06:42,960 Po chvíľke alebo dvoch, to uvidí, že máme teraz 128 00:06:42,960 --> 00:06:45,360 zostavil toto do súboru s názvom 1. 129 00:06:45,360 --> 00:06:51,090 A teraz sme tlačený našu CS50, naše Hello World aplikácie trochu. 130 00:06:51,090 --> 00:06:54,690 >> Všimnite si jednu vec ako dobre, je, že v predvolenom nastavení, 131 00:06:54,690 --> 00:07:00,090 sme nemali zadávať a / n vytlačiť nový riadok. 132 00:07:00,090 --> 00:07:05,315 Štandardne je funkcia v tlači Swift vytlačí novú linku pre vás. 133 00:07:05,315 --> 00:07:09,284 Môžete odovzdať fakultatívny doplnková Parameter to povedať, že tak neurobí. 134 00:07:09,284 --> 00:07:10,950 Ale Google pre viac informácií o to. 135 00:07:10,950 --> 00:07:13,450 V predvolenom nastavení, bude to robiť tlačovú linku. 136 00:07:13,450 --> 00:07:16,420 >> Dobre, tak poďme ďalej potom sa na niektoré iné. 137 00:07:16,420 --> 00:07:18,620 Tak ako môžeme vlastne definovať premenné? 138 00:07:18,620 --> 00:07:21,960 Môžeme si robiť, že je to za použitia jednej z dvoch metód. 139 00:07:21,960 --> 00:07:26,122 A ten, ktorý chcem vám povedať, o Prvým z nich je táto definícia rokov. 140 00:07:26,122 --> 00:07:27,830 A to je dôležité pretože účinne 141 00:07:27,830 --> 00:07:30,240 to, čo robíme, je definovanie konštantu. 142 00:07:30,240 --> 00:07:34,010 Chystáme sa vytvoriť premennú, alebo skôr konštantný s názvom názov, 143 00:07:34,010 --> 00:07:38,200 poskytovať k nej niektoré data-- v Tento prípad, reťazec Dan. 144 00:07:38,200 --> 00:07:40,630 Ale pomocou tohto ROKOV kľúčových slov, hovoríme 145 00:07:40,630 --> 00:07:43,860 že tento proměnná-- alebo Znovu constant-- nazvaný 146 00:07:43,860 --> 00:07:46,220 meno je nikdy byť zmenený. 147 00:07:46,220 --> 00:07:50,120 Je to bude nemenná po celú dobu doba trvania tohto programu 148 00:07:50,120 --> 00:07:53,100 alebo po celú dobu trvanie kontextu 149 00:07:53,100 --> 00:07:55,390 že táto premenná je k dispozícii. 150 00:07:55,390 --> 00:08:00,096 >> To je veľmi dôležité, že keď máte nejaké dáta, ktoré nie sú 151 00:08:00,096 --> 00:08:02,970 sa zmení vo vašom programe, a uvidíte celý rad príkladov 152 00:08:02,970 --> 00:08:06,790 o tom, kedy chceme použiť nechať proti druhej syntaxe 153 00:08:06,790 --> 00:08:11,040 je dôležité, aby ste používali nechať všade tam, kde je to možné, pretože to prináša informácie 154 00:08:11,040 --> 00:08:13,740 jazyk, ktorý je nebude zmenený, 155 00:08:13,740 --> 00:08:16,590 a môže v skutočnosti vykonať veľa optimalizáciou 156 00:08:16,590 --> 00:08:19,560 zlepšiť rýchlosť a bezpečnosť vášho programu. 157 00:08:19,560 --> 00:08:24,480 A bezpečnosť, myslím nenechám že havárie s bláznivými chybami 158 00:08:24,480 --> 00:08:27,910 že by sme mohli byť zvyknutí vídať v C. 159 00:08:27,910 --> 00:08:32,460 >> Potom môžeme použiť reťazec interpolácie zapouzdřit to v reťazci. 160 00:08:32,460 --> 00:08:35,200 Takže môžeme vidieť v tom print linka, tlač ahoj, 161 00:08:35,200 --> 00:08:38,950 a potom pomocou spätného lomky otvorených parens, a potom meno môjho premenné, 162 00:08:38,950 --> 00:08:41,809 v tomto prípade konštantný, zatvorte zátvoriek. 163 00:08:41,809 --> 00:08:46,400 Ja som v podstate potom dosadení Obsah tejto premennej s názvom meno 164 00:08:46,400 --> 00:08:50,240 vnútri reťazca a potom tlač tam výsledok. 165 00:08:50,240 --> 00:08:54,070 >> Je tu ešte jedna ďalšie zmeny tohto súboru čo je to, čo mám, na samom vrchole, 166 00:08:54,070 --> 00:08:57,340 dal do shebang líniu, ktorá v podstate len špecifikuje 167 00:08:57,340 --> 00:09:00,180 že chcem použiť Swift interpret, ktorý 168 00:09:00,180 --> 00:09:04,190 Znamená to, že som sa už nemusí zostaviť tento konkrétny program. 169 00:09:04,190 --> 00:09:06,567 Môžem len spustiť ho ako jeho vlastného scenára. 170 00:09:06,567 --> 00:09:09,400 Ale to je v tomto prípade, za scény zhromažďuje a potom 171 00:09:09,400 --> 00:09:10,030 spustený. 172 00:09:10,030 --> 00:09:13,540 Je to len na nás neviditeľná. 173 00:09:13,540 --> 00:09:15,880 >> Dobre, tak poďme ďalej. 174 00:09:15,880 --> 00:09:19,650 Takže tam to trochu podvodu že sa práve stalo predtým. 175 00:09:19,650 --> 00:09:23,230 Ukázal som ti, že mohli definovať konštantu. 176 00:09:23,230 --> 00:09:25,490 A ja som mohol poskytnúť niektoré údaje na to. 177 00:09:25,490 --> 00:09:29,240 Ale v tomto prípade, si všimnite, že som to neurobil v skutočnosti určiť typ dát 178 00:09:29,240 --> 00:09:29,820 že to je. 179 00:09:29,820 --> 00:09:32,780 A to preto, že kompilátor, Swift môže 180 00:09:32,780 --> 00:09:36,910 odvodiť typ dát len ​​na základe Na základe údajov, ktoré som do neho. 181 00:09:36,910 --> 00:09:41,760 Pretože vie, že na základe vyhodnotenia tejto variabilný tu, tieto dáta vpravo 182 00:09:41,760 --> 00:09:43,370 tú, to vie, že je reťazec. 183 00:09:43,370 --> 00:09:48,690 A tak táto konštanta meno teda bude reťazec rovnako. 184 00:09:48,690 --> 00:09:52,730 >> Ale môžeme byť aj explicitné o type, ktorý je 185 00:09:52,730 --> 00:09:55,790 budeme používať pre konštanty alebo premenné 186 00:09:55,790 --> 00:10:01,590 pomocou tejto syntaxe instead-- nech názov hrubého čreva String rovná 187 00:10:01,590 --> 00:10:05,530 Dan, čo v tomto prípade znamená, že sme bude definovať konštantný názvom meno. 188 00:10:05,530 --> 00:10:07,150 Bude to byť typu String. 189 00:10:07,150 --> 00:10:10,550 A hodnota bude Dan. 190 00:10:10,550 --> 00:10:12,550 Teraz na druhú stranu, ktoré môžeme vytvoriť variables-- 191 00:10:12,550 --> 00:10:15,549 a to sú meniteľné premenné, ktoré znamená, že sú v skutočnosti deje 192 00:10:15,549 --> 00:10:19,670 zmeniť ich obsah niekedy v trvaní kontexte 193 00:10:19,670 --> 00:10:23,890 že táto premenná je defined-- my pomocou kľúčového slova var miesto prenájmu. 194 00:10:23,890 --> 00:10:27,400 Ale opäť, v predvolenom nastavení, ak neviete, že je potrebné manipulovať, že dáta, 195 00:10:27,400 --> 00:10:30,510 skúste použiť nechať pre zlepšenie výkonu. 196 00:10:30,510 --> 00:10:33,740 >> V tomto prípade, môžem potom špecifikovať typ dát 197 00:10:33,740 --> 00:10:37,650 že očakávame, že budeme vo vnútri táto nová premenná s názvom štítok. 198 00:10:37,650 --> 00:10:38,800 Bude to byť reťazec. 199 00:10:38,800 --> 00:10:43,030 A budeme sa spojíte dva reťazce dohromady, reťazec ahoj, 200 00:10:43,030 --> 00:10:48,070 a reťazec predstavovaná variabilné, alebo skôr konštantný názov. 201 00:10:48,070 --> 00:10:50,660 >> Takže to je pekné, pretože to je trochu PHP ako v tej my 202 00:10:50,660 --> 00:10:52,250 majú veľmi jednoduché reťazenie reťazcov. 203 00:10:52,250 --> 00:10:56,350 Nemáme automaticky použiť ľubovoľný druh pamäťového riadenie 204 00:10:56,350 --> 00:11:00,580 zväčšiť veľkosť a robiť nejaký druh smiešnych vecí tam. 205 00:11:00,580 --> 00:11:05,040 To funguje ako by sme vlastne očakávať. 206 00:11:05,040 --> 00:11:09,370 >> Dobre, nejaké otázky o tom myslíte? 207 00:11:09,370 --> 00:11:12,520 >> Teraz sa ďalší dôvod, prečo potrebujeme, budete mať možnosť 208 00:11:12,520 --> 00:11:15,490 aby bolo možné definovať, čo typ dátových premenných 209 00:11:15,490 --> 00:11:18,170 Je to preto, niekedy nie Chcete inicializovať premenné 210 00:11:18,170 --> 00:11:21,080 s niektorými dát na bod definície. 211 00:11:21,080 --> 00:11:23,500 Takže v tomto prípade, povedzme že chcem začať zadanie 212 00:11:23,500 --> 00:11:25,040 Niektoré stupňa do úrovňovej knihu. 213 00:11:25,040 --> 00:11:27,530 No ja viem, že jedným z premenné, ktoré chcem byť 214 00:11:27,530 --> 00:11:30,280 sa chystá byť premenlivý stupeň. 215 00:11:30,280 --> 00:11:33,010 A vieme tiež, že my chcem, aby to bolo celé číslo. 216 00:11:33,010 --> 00:11:36,030 Ale možno my doteraz majú, že stupeň k dispozícii. 217 00:11:36,030 --> 00:11:39,570 >> V Swift, musíte definovať typ dát 218 00:11:39,570 --> 00:11:44,000 ktorý je spojený s premenná alebo nechať na konštantnej 219 00:11:44,000 --> 00:11:47,840 Ako môžete skutočne použiť túto premennú. 220 00:11:47,840 --> 00:11:51,170 Vzhľadom k tomu, že je silne napísaný, budete musieť pripojiť typ 221 00:11:51,170 --> 00:11:52,890 s týmito premennými. 222 00:11:52,890 --> 00:11:56,120 >> Takže v tomto prípade, ak som správne inicializovaná najprv s nejakú hodnotu, 223 00:11:56,120 --> 00:12:00,520 potom musím povedať, čo Swift Očakávam, že typ dát byť. 224 00:12:00,520 --> 00:12:02,650 A to bude aj naďalej že rovnaký typ dát 225 00:12:02,650 --> 00:12:05,780 v celej histórii tohto programu. 226 00:12:05,780 --> 00:12:10,050 >> Teraz môžete byť v pokušení, akonáhle Vytvoril som tento stupeň premennú 227 00:12:10,050 --> 00:12:13,530 a ak ju má celé číslo 100, teraz, ak I 228 00:12:13,530 --> 00:12:18,540 chcete skúsiť zřetězit reťazec s týmto celé číslo, 229 00:12:18,540 --> 00:12:21,610 by mohol byť v pokušení aj naďalej používať že prevádzkovateľ reťazec zreťazenie 230 00:12:21,610 --> 00:12:24,500 ako sme to urobili len pár riadkov predtým. 231 00:12:24,500 --> 00:12:26,460 Ale bohužiaľ, Tým sa vlastne nie je 232 00:12:26,460 --> 00:12:29,270 pracovať, pretože ste v podstate vykonáva 233 00:12:29,270 --> 00:12:32,380 operácie na dvoch rôznych typov. 234 00:12:32,380 --> 00:12:36,856 >> Teraz je to veľmi odlišné od iných jazyky ako PHP, ktoré sú naozaj 235 00:12:36,856 --> 00:12:38,480 loosey Goosey s ich druhom typov. 236 00:12:38,480 --> 00:12:40,030 Sú rovnako ako, jo, čo, je mi to jedno. 237 00:12:40,030 --> 00:12:42,710 Daj mi jeden typ, a možno budem robiť správnu vec. 238 00:12:42,710 --> 00:12:46,060 >> V tomto prípade, je Swift veľmi prísna o typoch 239 00:12:46,060 --> 00:12:47,350 že máte čo do činenia s. 240 00:12:47,350 --> 00:12:50,700 Tento operátor zhrnutie alebo operátor zreťazenie 241 00:12:50,700 --> 00:12:54,400 má v podstate niekoľko rôznych možností. 242 00:12:54,400 --> 00:12:56,970 Môžete to urobiť zhrnutie s celými číslami, alebo 243 00:12:56,970 --> 00:13:00,870 môže robiť zreťazenie, a možno niektoré ďalšie veci rovnako. 244 00:13:00,870 --> 00:13:05,550 Ale ak tento subjekt neuznáva čo je na jednej strane toho, 245 00:13:05,550 --> 00:13:10,452 alebo skôr ich kombináciu dva druhy, nie je to, čo to je očakával, 246 00:13:10,452 --> 00:13:11,910 potom to bude spôsobiť zlyhanie. 247 00:13:11,910 --> 00:13:16,690 >> Takže v tomto prípade, čo to znamená mať reťazec plus celé číslo? 248 00:13:16,690 --> 00:13:18,880 Výhodne v kontexte toho sme pravdepodobne chcieť 249 00:13:18,880 --> 00:13:21,990 urobiť operáciu reťazec zreťazenie. 250 00:13:21,990 --> 00:13:26,420 Ale samozrejme je počítač nemá tento druh kontextu. 251 00:13:26,420 --> 00:13:29,950 A preto je treba poskytnúť že dodatočné informácie 252 00:13:29,950 --> 00:13:32,390 aby mu vedieť, čo to je to, že chceme robiť. 253 00:13:32,390 --> 00:13:36,860 >> Takže inými slovami, skutočnosť, že Swift je silne zadali 254 00:13:36,860 --> 00:13:39,520 znamená, že musíte urobiť trochu ďalšej práce 255 00:13:39,520 --> 00:13:42,100 aby si to k prevádzke tak, že by ste chceli. 256 00:13:42,100 --> 00:13:43,710 Avšak v dôsledku toho, že je bezpečnejšie. 257 00:13:43,710 --> 00:13:46,290 A až budete mať vziať do úvahy tieto typy, 258 00:13:46,290 --> 00:13:49,300 veci jednoducho úprimne začať sa celkom dobre fungovať. 259 00:13:49,300 --> 00:13:52,520 >> Takže v tomto prípade, a potom by sa nám vykonať zreťazenie 260 00:13:52,520 --> 00:13:56,040 výslovným odlievaním celé číslo do reťazca 261 00:13:56,040 --> 00:13:58,490 od zabalením do tejto kapitál funkcie S String, 262 00:13:58,490 --> 00:14:03,510 a potom pomocou metódy zreťazenie operátor zmeniť našu štítok premenné, 263 00:14:03,510 --> 00:14:06,280 a potom ho vytlačiť. 264 00:14:06,280 --> 00:14:08,420 >> Zatiaľ je všetko dobré? 265 00:14:08,420 --> 00:14:12,020 Dobre, poďme ďalej. 266 00:14:12,020 --> 00:14:16,300 >> Teraz existuje celý rad údajov typy, ktoré môžeme použiť v Swift. 267 00:14:16,300 --> 00:14:21,620 Ako ste si zvykli na, môžeme vytvoriť premenlivý poľa. 268 00:14:21,620 --> 00:14:26,140 Iba A to pole môže obsahovať jediný typ. 269 00:14:26,140 --> 00:14:30,360 >> Takže v tomto prípade, budeme vytvárať mutabilní pole celých čísel, ktoré 270 00:14:30,360 --> 00:14:34,800 budeme nazývať známky, a my budeme schopní pre ukladanie, že v tomto hranatých zátvorkách 271 00:14:34,800 --> 00:14:38,650 Formát ako ste Zvykli v rôznych iných jazykov. 272 00:14:38,650 --> 00:14:41,150 Ale všimnite si, že tu sme definuje niekoľko vecí. 273 00:14:41,150 --> 00:14:45,350 stupňa je premenlivý proměnná-- nebudeme používať nechať kľúčové slovo. 274 00:14:45,350 --> 00:14:49,620 Takže to znamená, že môžeme potom upraviť Obsah tohto poľa. 275 00:14:49,620 --> 00:14:53,420 To je typu Array Int, a môžeme povedať, že 276 00:14:53,420 --> 00:14:56,260 na základe tu týchto hranatých zátvorkách. 277 00:14:56,260 --> 00:14:58,930 >> Teraz jeden z pekných vecí na tom je, že sme 278 00:14:58,930 --> 00:15:02,310 majú prístup na mnohé Ďalšie informácie 279 00:15:02,310 --> 00:15:07,110 o pole len pomocou niektoré jednoduché bodka notácie. 280 00:15:07,110 --> 00:15:10,500 Tak napríklad, grades.count poskytuje nám 281 00:15:10,500 --> 00:15:14,820 počet položiek, ktoré existujú v tom, že pole, ktoré potom môžeme pristupovať pekne 282 00:15:14,820 --> 00:15:19,090 ľahko jednoducho pomocou tejto dot notácie. 283 00:15:19,090 --> 00:15:21,830 >> Ak chcete pridať ďalšie položky na tomto poli, 284 00:15:21,830 --> 00:15:27,220 nemôžete robiť štýl PHP kde stačí explicitne definovať, 285 00:15:27,220 --> 00:15:30,910 pri danom indexe, nejaká hodnota ktoré chcete vložiť. 286 00:15:30,910 --> 00:15:37,210 Namiesto toho použite append metóda v type poľa 287 00:15:37,210 --> 00:15:40,920 pripojiť tejto položky, 95, do tohto zoznamu. 288 00:15:40,920 --> 00:15:45,990 >> Takže teraz to pole má nasledujúce contents-- 100, 0, 90, 85. 289 00:15:45,990 --> 00:15:49,270 A teraz sme pripojený 95 sa, že rovnako. 290 00:15:49,270 --> 00:15:51,830 >> Existujú aj iné spôsoby môžeme pripojiť veci. 291 00:15:51,830 --> 00:15:55,030 Môžete skutočne používať operátor sčítania, 292 00:15:55,030 --> 00:15:59,200 ktorý bude interpretovaný ako operácie pole pripájací. 293 00:15:59,200 --> 00:16:04,680 A potom môžete pripojiť ďalšie pole, ktorého obsah je 70 a 80, 294 00:16:04,680 --> 00:16:05,560 do tejto matice. 295 00:16:05,560 --> 00:16:08,250 Takže teraz máme obsah v tejto premennej 296 00:16:08,250 --> 00:16:17,220 grades-- 100, 0, 90, 85, 95, 70, a 80. 297 00:16:17,220 --> 00:16:21,850 To je len pekný malý syntaxe cukor, ktorý Swift poskytuje k nám. 298 00:16:21,850 --> 00:16:23,850 >> Takže ak chceme sčítať stupňa, sme snáď 299 00:16:23,850 --> 00:16:27,340 bude chcieť opakovať nad každú položku v tejto slučky. 300 00:16:27,340 --> 00:16:32,150 A my to majú v Swift, pojem zo slučky for, ako by ste očakávali. 301 00:16:32,150 --> 00:16:35,350 Ale spôsob, akým sme naznačujú, rozsah sa mierne líšia. 302 00:16:35,350 --> 00:16:37,790 Takže v tomto prípade, aby Stručne povedané všetko, budeme 303 00:16:37,790 --> 00:16:40,650 chystáte vytvoriť dočasný premenná nazýva suma, aby nás 304 00:16:40,650 --> 00:16:42,580 udržať tento počet. 305 00:16:42,580 --> 00:16:44,430 >> A všimnite si našu FOR stavba tu slučka. 306 00:16:44,430 --> 00:16:46,820 Pre index v 0 .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Takže táto konštrukcia, 0 .. 00:17:01,860 hovorí, že budeme vytvárať rozsah čísel od 0 nahor 310 00:17:01,860 --> 00:17:05,750 sa ale s vylúčením grades.count. 311 00:17:05,750 --> 00:17:09,577 Takže to bude mať hodnotu 0, 1, 2, 3, 4, 5, až do avšak mnoho jeden 312 00:17:09,577 --> 00:17:10,410 Pred grades.count. 313 00:17:10,410 --> 00:17:14,160 >> Takže toto je niečo iné ako to, ako sme sa sa zvyčajne používajú pre slučky 314 00:17:14,160 --> 00:17:18,569 tam, kde by ste mať nejaký index premenná, nastavte ju na hodnotu 0 na prvý, 315 00:17:18,569 --> 00:17:25,480 a potom integrovať že až niektorí hodnota menšia ako počet položiek 316 00:17:25,480 --> 00:17:27,140 v tomto poli. 317 00:17:27,140 --> 00:17:29,820 >> Takže tam je modifikácia k tomu, v skutočnosti, 318 00:17:29,820 --> 00:17:35,010 čo nám umožňuje veľmi ľahko nastaviť rôzne typy rozsahov. 319 00:17:35,010 --> 00:17:40,570 Ak zmeníte tento rozsah do tri bodky, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 to predstavuje rozsah 0 na grades.count vrátane, 321 00:17:45,120 --> 00:17:49,260 čo znamená, že toto číslo je tiež potom zahrnuté v tomto rozsahu. 322 00:17:49,260 --> 00:17:52,110 >> Ale to je veľmi šikovný Pre tieto presné veci, 323 00:17:52,110 --> 00:17:54,590 keď máme vykonať iterácie cez slučku 324 00:17:54,590 --> 00:17:59,630 pretože tieto indexy sú indexované nula, ako sme videli v iných jazykoch 325 00:17:59,630 --> 00:18:02,360 tiež. 326 00:18:02,360 --> 00:18:05,210 Akékoľvek otázky týkajúce sa tejto pre slučke? 327 00:18:05,210 --> 00:18:10,660 >> Takže tam je implicitná definícia tohto indexu premenné, 328 00:18:10,660 --> 00:18:14,350 ktorých hodnota začína na 0, a pokračuje v každej slučky iterácii 329 00:18:14,350 --> 00:18:17,950 zvýšiť o 1 až do bodu, ktorá sa rovná grades.count, 330 00:18:17,950 --> 00:18:20,380 na ktorom mieste, slučka preruší. 331 00:18:20,380 --> 00:18:23,730 >> Všimnite si, že v našom reťazci Interpolácie tu, 332 00:18:23,730 --> 00:18:26,910 skutočne môžeme vykonať niektoré jednoduché manipulácia na tieto hodnoty. 333 00:18:26,910 --> 00:18:31,230 Takže index plus 1 budú skutočne vykonať zhrnutie uvedené hodnoty 334 00:18:31,230 --> 00:18:34,780 preto, že index je, v Tento prípad, celé číslo. 335 00:18:34,780 --> 00:18:37,810 A v tú chvíľu, že bude potom byť prevedená na reťazec 336 00:18:37,810 --> 00:18:42,230 a interpolovať do tohto reťazca tu, a vytlačiť tak, ako by sme očakávali. , 337 00:18:42,230 --> 00:18:44,520 >> A pekná vec o pole je tu 338 00:18:44,520 --> 00:18:50,730 že sme tiež schopní mať Načítanie hodnôt a nastavenie hodnoty 339 00:18:50,730 --> 00:18:54,080 pomocou hranatou zátvorku zápis ako sme videli v iných jazykoch. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> Dobre, takže odtiaľto, máme teraz vypočítať náš súčet všetkých našich tried. 342 00:19:01,030 --> 00:19:02,780 Teraz druh budúci logickým krokom by bolo 343 00:19:02,780 --> 00:19:07,580 urobiť operáciu divízie nájsť sa priemer týchto tried. 344 00:19:07,580 --> 00:19:10,150 Ale niečo dôležité Tu sa deje, ktoré 345 00:19:10,150 --> 00:19:15,020 je to, že táto suma je možná celé číslo. 346 00:19:15,020 --> 00:19:18,020 Ale my potrebujeme vykonať niektoré druh dvojitého divízie. 347 00:19:18,020 --> 00:19:20,600 A to bude nesmierne dôležité, keď 348 00:19:20,600 --> 00:19:24,140 Chceme na vykonanie tejto operácie, pretože to, čo hovoríme 349 00:19:24,140 --> 00:19:28,430 je to, že musíme skutočne vykonať rozdelenie na dve dvojlôžkové. 350 00:19:28,430 --> 00:19:31,370 A znova, pretože Swift je veľmi silne napísaný, 351 00:19:31,370 --> 00:19:36,760 musíme explicitne nastaviť všetky položky k štvorhre predtým sme vlastne 352 00:19:36,760 --> 00:19:38,300 vykonanie tejto operácie. 353 00:19:38,300 --> 00:19:40,550 >> Tak, aby pre nás vykonávať dvojaký rozdelenie, 354 00:19:40,550 --> 00:19:43,730 že to nie je dostačujúce len jeden z týchto položiek za double. 355 00:19:43,730 --> 00:19:46,400 Obaja majú byť double v poradí pre SWIFT 356 00:19:46,400 --> 00:19:50,860 byť istí, že tento je to, čo chceme robiť. 357 00:19:50,860 --> 00:19:54,360 Tak sme sa potom explicitne obsadiť suma, ktorú sme vypočítaný vyššie 358 00:19:54,360 --> 00:19:58,970 a počet tried až zdvojnásobí, a vykonajte tejto operácie a obchod 359 00:19:58,970 --> 00:20:02,390 že do tejto novej premennej, alebo skôr táto nová konštanta s názvom priemer, 360 00:20:02,390 --> 00:20:06,810 ktorý bude mať aký typ, si to predstaviť? 361 00:20:06,810 --> 00:20:07,587 Dvojlôžková izba, jo. 362 00:20:07,587 --> 00:20:09,420 Takže v tomto prípade sme Nemusíte to špecifikovať 363 00:20:09,420 --> 00:20:13,450 pretože to môže byť odvodená z Prevádzka aký typ priemere dát 364 00:20:13,450 --> 00:20:14,730 bude. 365 00:20:14,730 --> 00:20:19,025 A Swift je všeobecne celkom dobrý o tom, že schopný odvodiť typy. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> Chcete vidieť bežať, alebo môžem ísť ďalej? 368 00:20:24,200 --> 00:20:25,640 Chcem ísť ďalej. 369 00:20:25,640 --> 00:20:28,130 Akékoľvek otázky týkajúce sa niečo z toho? 370 00:20:28,130 --> 00:20:28,630 Skvelé. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Teraz budeme začať sa dostať do dobré stuff-- definovanie funkcií, 373 00:20:35,010 --> 00:20:39,090 a niekoľko ďalších typov, ktoré sú jedinečné Swift, že nemáte 374 00:20:39,090 --> 00:20:41,620 videný v iných jazykoch až do tohto bodu, 375 00:20:41,620 --> 00:20:46,290 ale sú prítomné v inej jazyky, ktoré môžete nájsť neskôr. 376 00:20:46,290 --> 00:20:48,210 Takže prvé, ak chcete, pre definovanie funkcie, 377 00:20:48,210 --> 00:20:52,170 ju definovať spoločne s funky slovom funkcie, a potom názov funkcie, 378 00:20:52,170 --> 00:20:56,710 a potom sa v zátvorkách, argumenty Chceme, aby funkciu prijať. 379 00:20:56,710 --> 00:21:00,280 Tieto argumenty musia tiež specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 musí tiež určiť typ dát, ktorá sú, ak možno vyvodiť. 381 00:21:05,010 --> 00:21:07,500 A uvidíme, že len málo námietka v len trochu. 382 00:21:07,500 --> 00:21:09,920 >> Takže v tomto prípade máme Funkcia tzv printGradeCount. 383 00:21:09,920 --> 00:21:12,840 Budeme akceptovať proměnná-- alebo skôr v tomto prípade, 384 00:21:12,840 --> 00:21:14,450 constant-- volal zadávanie známok. 385 00:21:14,450 --> 00:21:18,517 A to bude mať zadajte pole celých čísel. 386 00:21:18,517 --> 00:21:20,600 Teraz je tu niečo, že je naozaj dôležité tu 387 00:21:20,600 --> 00:21:21,849 že chcem, aby ste pochopili. 388 00:21:21,849 --> 00:21:27,560 To je to, že v predvolenom nastavení, sú tieto argumenty ktoré sú vstupy do tejto funkcie je 389 00:21:27,560 --> 00:21:34,380 definované s implicitné nechať kľúčové slovo, čo znamená, že nemôžem zmeniť to 390 00:21:34,380 --> 00:21:39,850 gradebook variabilný tu. 391 00:21:39,850 --> 00:21:43,360 A to nejako dáva zmysel, pretože ste odovzdávanie dát dovnútra. 392 00:21:43,360 --> 00:21:45,860 A možno to nechcem ktorý sa má zmeniť z pod tebou. 393 00:21:45,860 --> 00:21:50,800 Je možné výslovne uviesť že sa jedná o premennú tým, že 394 00:21:50,800 --> 00:21:52,070 VaR kľúčové slovo tu. 395 00:21:52,070 --> 00:21:56,832 Ale to je chyták, že sme všimol ľudia robili v minulosti 396 00:21:56,832 --> 00:21:59,790 je, že sa predpokladá, že to bude byť premenná, keď v skutočnosti to 397 00:21:59,790 --> 00:22:02,640 je konštanta. 398 00:22:02,640 --> 00:22:07,340 >> Dobre, takže tu potom, v tomto prípade, nie sme určujúce žiadny typ návratu. 399 00:22:07,340 --> 00:22:09,460 Ukážeme vám, ako na to že za chvíľu. 400 00:22:09,460 --> 00:22:12,340 Ale všimnite si, že tu máme len jednoduchý, ak stavu. 401 00:22:12,340 --> 00:22:14,560 V prípade, že je gradebook prázdny, čo v tomto prípade 402 00:22:14,560 --> 00:22:19,310 je len vlastnosť tohto integer poľa, potom vytlačiť niečo. 403 00:22:19,310 --> 00:22:23,100 V opačnom prípade budeme robiť niečo iné. 404 00:22:23,100 --> 00:22:25,000 >> Veľmi jednoduché tak ďaleko myslím. 405 00:22:25,000 --> 00:22:27,960 Ale ma zastaviť, ak máte nejaké otázky. 406 00:22:27,960 --> 00:22:33,350 >> Teraz je táto funkcia, priemer, tiež berie niektoré parametre, alebo skôr jeden argument, 407 00:22:33,350 --> 00:22:37,507 čo je gradebook, a tentoraz sa chystá vrátiť dvojaký typ. 408 00:22:37,507 --> 00:22:39,340 Vzhľadom k tomu, že je výpočtovej priemer a to je 409 00:22:39,340 --> 00:22:45,010 bude skutočne vrátiť, že Vypočítaný priemer volajúci linky. 410 00:22:45,010 --> 00:22:50,070 >> V tomto prípade sme špecifikovať vrátiť typ po šípkou. 411 00:22:50,070 --> 00:22:53,260 A to môžu cítiť trochu divný na prvom mieste. 412 00:22:53,260 --> 00:22:55,610 Vyrástol si zvyknutá na stanovenie návrat 413 00:22:55,610 --> 00:22:57,720 zadajte pred názov funkcie. 414 00:22:57,720 --> 00:23:00,310 Ale ak si myslíte, že to čo sa týka matematiky, 415 00:23:00,310 --> 00:23:03,320 ako keď máte matematiku , Ktoré definujú funkciu, 416 00:23:03,320 --> 00:23:06,807 máte funkciu s niektorými vstupy, a to produkuje výstup. 417 00:23:06,807 --> 00:23:08,890 A to je presne to, čo toto má napodobniť. 418 00:23:08,890 --> 00:23:12,460 A je tu pár ďalších jazykov ktoré majú podobnú syntax rovnako, 419 00:23:12,460 --> 00:23:15,674 ale asi nikto, že ste videli na CS50. 420 00:23:15,674 --> 00:23:17,090 Ale stále nemajú byť zmätení tým. 421 00:23:17,090 --> 00:23:21,650 Šípka znamená, že to, čo sa deje ktoré majú byť vrátené v tomto prípade. 422 00:23:21,650 --> 00:23:23,650 OK, tak ako budeme vypočítať tento priemer? 423 00:23:23,650 --> 00:23:25,649 No, ak sa gradebook prázdny, no a potom sme 424 00:23:25,649 --> 00:23:30,731 vracať 0, čo možno rozumný spôsob, ako zaobchádzať toto. 425 00:23:30,731 --> 00:23:32,980 Neviem, poďme prísť späť, že v trochu. 426 00:23:32,980 --> 00:23:34,688 To môže v skutočnosti nie je byť rozumný spôsob, 427 00:23:34,688 --> 00:23:38,310 vypočítať priemer, pokiaľ máme prázdnu zadávanie známok. 428 00:23:38,310 --> 00:23:41,260 >> Potom jednoducho budeme hrať našu zhrnutie. 429 00:23:41,260 --> 00:23:43,900 Všimnite si, že tu sme vlastne majú alternatívnu verziu 430 00:23:43,900 --> 00:23:49,190 pre sláčiky, čo nám umožňuje iterácii nad každú jednotlivú položku v poli 431 00:23:49,190 --> 00:23:53,630 a umiestniť každý prvok do vlastného premennej. 432 00:23:53,630 --> 00:23:56,200 Zadaním pre platové triedy gradebook, čo hovoríme 433 00:23:56,200 --> 00:24:00,560 je to, že budeme implicitne vytvorte novú konštantu nazvanú 434 00:24:00,560 --> 00:24:05,180 trieda, ktorá bude reprezentovať každý jedinečný položka v Gradebook 435 00:24:05,180 --> 00:24:06,769 zakaždým, keď cyklus for iteruje. 436 00:24:06,769 --> 00:24:08,560 Takže prvýkrát, že je to beh, bude trieda 437 00:24:08,560 --> 00:24:09,800 ako prvá položka v Gradebook. 438 00:24:09,800 --> 00:24:12,300 Druhýkrát, že to bude Druhým bodom, tak ďalej a tak ďalej 439 00:24:12,300 --> 00:24:15,970 až gradebook má vyčerpala prvkov. 440 00:24:15,970 --> 00:24:20,390 Potom budeme môcť sčítať, že trieda do nášho súčtu premennej 441 00:24:20,390 --> 00:24:22,570 a vrátiť Náš priemerný ako sme videli skôr. 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 OK, nejaké otázky? 444 00:24:26,950 --> 00:24:27,699 Ano? 445 00:24:27,699 --> 00:24:28,990 Divákov: Mám dve otázky. 446 00:24:28,990 --> 00:24:33,586 Číslo jedna, hypoteticky, môže spustenie celé číslo na toto? 447 00:24:33,586 --> 00:24:35,604 Nemusí to byť double, je to pravda? 448 00:24:35,604 --> 00:24:37,520 DAN AMRMENDARIZ: Môžete zopakovať na túto otázku? 449 00:24:37,520 --> 00:24:39,587 Divákov: Môžem celé číslo, ako je priemer? 450 00:24:39,587 --> 00:24:41,670 DAN AMRMENDARIZ: Môžete robiť celé číslo ako priemer? 451 00:24:41,670 --> 00:24:45,015 Takže vrátiť celé číslo Priemerná namiesto double? 452 00:24:45,015 --> 00:24:48,204 >> Publikum: Return-- vás majú, že práve teraz nižšie. 453 00:24:48,204 --> 00:24:49,870 DAN AMRMENDARIZ: Priamo tu, návrat 0.0? 454 00:24:49,870 --> 00:24:51,790 Publikum: Hej, len vrátiť 0. 455 00:24:51,790 --> 00:24:56,590 Takže to bude buď 80 alebo 85, ale nie 85,2. 456 00:24:56,590 --> 00:24:59,465 >> DAN AMRMENDARIZ: Takže v tomto prípade, takže je tu pár rôznymi spôsobmi 457 00:24:59,465 --> 00:25:00,090 odpovedať, že. 458 00:25:00,090 --> 00:25:02,760 Dovoľte mi, aby som na ne odpovedať v poradí. 459 00:25:02,760 --> 00:25:06,740 Takže keď som sa, aby tento návrat 0, a 0 je celé číslo. 460 00:25:06,740 --> 00:25:09,730 A tak, že spôsobí, že Chyba typu pre tento prípad 461 00:25:09,730 --> 00:25:13,210 pretože sa očakáva dvojité ale sa potom vracia celé číslo. 462 00:25:13,210 --> 00:25:16,770 Ak by som sa chcel vrátiť celé číslo, môžem. 463 00:25:16,770 --> 00:25:20,450 Môžem nastaviť návratový typ do int, vrátiť 0 tu 464 00:25:20,450 --> 00:25:22,047 a vykonať dvojitú divízie. 465 00:25:22,047 --> 00:25:23,880 Ale potom by sme boli robí celočíselné delenie. 466 00:25:23,880 --> 00:25:27,080 A tak sme potom by sa dostať Priemerný že by sme možno očakávali. 467 00:25:27,080 --> 00:25:29,210 Ale áno, môžeme modifikovať typy týmto spôsobom. 468 00:25:29,210 --> 00:25:32,598 >> Publikum: A za druhé, vás majú jeden dvojlôžková na vrchole. 469 00:25:32,598 --> 00:25:35,502 Ale dole, keď vás robiť vrátiť Dvojlôžková, 470 00:25:35,502 --> 00:25:38,280 to je už automaticky vrátenie Double formátu. 471 00:25:38,280 --> 00:25:42,278 Prečo stále musíte definovať s šípkou na vrchole s manželskou? 472 00:25:42,278 --> 00:25:45,010 >> DAN AMRMENDARIZ: So V prípade, že je to súčasť 473 00:25:45,010 --> 00:25:50,580 z the-- tak opakovať otázku, pretože je to implicitné z návratu 474 00:25:50,580 --> 00:25:56,030 typy tu, aký typ to vlastne je, musíme byť explicitné s Swift 475 00:25:56,030 --> 00:25:59,970 o tom, čo chceme vrátiť z tejto funkcie 476 00:25:59,970 --> 00:26:02,690 tak, že keď sa robí písanie kontrola, to môže uistite sa, 477 00:26:02,690 --> 00:26:05,850 že to, čo sme vlastne napísal dole vlastne zodpovedá to. 478 00:26:05,850 --> 00:26:10,225 Takže je to niečo ako šeku sami sa nejako situácia. 479 00:26:10,225 --> 00:26:11,050 Ale tam are-- 480 00:26:11,050 --> 00:26:12,560 >> Divákov: [Nepočuteľné] šíp? 481 00:26:12,560 --> 00:26:19,490 >> DAN AMRMENDARIZ: existujú prípady, keď môžeme určiť, že môžeme implicitne 482 00:26:19,490 --> 00:26:21,550 nastavte typ návratu. 483 00:26:21,550 --> 00:26:23,940 Ale v tomto prípade, vôbec sa mi nepáči si myslí, že by to fungovalo. 484 00:26:23,940 --> 00:26:26,190 Je tu nejaký iný syntax že uvidíme neskôr. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> Dobre, takže tento zdroj kód je trochu iný 487 00:26:35,280 --> 00:26:41,839 pretože tento analyzuje argumenty z funkcia, ktorá voláme. 488 00:26:41,839 --> 00:26:44,130 Dovoľte mi, aby som vám ukázať, ako to funguje Než sme sa vlastne ďalej 489 00:26:44,130 --> 00:26:48,050 na niektoré zaujímavé veci že sa deje v Swift. 490 00:26:48,050 --> 00:26:51,870 >> Takže v tomto prípade, keď som len spustiť tento kódu, Všimnite si, že to, čo robí 491 00:26:51,870 --> 00:26:54,900 je-- zatiaľ čo to druh dáva mi divný chybu. 492 00:26:54,900 --> 00:26:59,730 Musím odovzdať pár celé čísla ako argument príkazového riadku. 493 00:26:59,730 --> 00:27:06,220 Tak uvidíme, 150 a 80, a stlačte Enter zistiť, čo je to vlastne robí. 494 00:27:06,220 --> 00:27:09,890 Je to prijatie každého z tieto hodnoty sú celé čísla. 495 00:27:09,890 --> 00:27:12,040 Je vkladanie je do Gradebook. 496 00:27:12,040 --> 00:27:14,470 A potom je to predvádzanie že priemerný výpočet 497 00:27:14,470 --> 00:27:16,650 a výstup, ktorý, ako by sme očakávali. 498 00:27:16,650 --> 00:27:19,950 >> Ale samozrejme že sa niečo deje na tejto zamieta niečím 499 00:27:19,950 --> 00:27:23,300 niečo ako celé číslo. 500 00:27:23,300 --> 00:27:27,300 Ako ste si možno pamätáte z doby, kedy sme boli rokovania s argumentmi príkazového riadku 501 00:27:27,300 --> 00:27:32,640 v C a ďalších jazykoch, úplne prvé 0-tý položka v tomto argumente príkazového riadku 502 00:27:32,640 --> 00:27:35,774 Zoznam je názov príkazu že sme vlastne popravený. 503 00:27:35,774 --> 00:27:38,690 Takže v tomto prípade, ja som len opakovanie cez všetky argumenty príkazového riadku sa. 504 00:27:38,690 --> 00:27:41,650 Ale ja nerobím žiadny druh Fancy skontrolujte, preskočiť, že prvý z nich. 505 00:27:41,650 --> 00:27:45,920 Som len explicitne alebo implicitne, že som kontroly, ktoré z týchto typov 506 00:27:45,920 --> 00:27:49,900 sú celé čísla, než som v skutočnosti vykonanie tohto výpočtu. 507 00:27:49,900 --> 00:27:52,420 >> A to je v podstate čo sa tu deje. 508 00:27:52,420 --> 00:27:55,860 Pre každý argument argumenty procesu, 509 00:27:55,860 --> 00:27:59,210 Budem vykonávať nejakú kontrolu. 510 00:27:59,210 --> 00:28:01,970 A v tomto prípade, idem pokúsiť sa najskôr previesť 511 00:28:01,970 --> 00:28:07,620 tento argument na celé číslo od prevedením explicitné obsadiť, 512 00:28:07,620 --> 00:28:12,310 preto, že je, na vstupe, reťazec a nie v skutočnosti celé číslo. 513 00:28:12,310 --> 00:28:18,140 >> Ale to je trochu divný syntaxe, ak nechať dielik zodpovedá Int (argumentu). 514 00:28:18,140 --> 00:28:21,120 Čo sa vlastne deje tu je extrémne 515 00:28:21,120 --> 00:28:24,390 dôležité, aby vaše pomocou Swift. 516 00:28:24,390 --> 00:28:27,610 To je to, čo je s použitím volal voliteľný typ. 517 00:28:27,610 --> 00:28:34,790 >> Takže táto funkcia Int (argumentu), vráti nielen celé číslo, ale vráti 518 00:28:34,790 --> 00:28:37,470 čo sa nazýva voliteľný celé číslo. 519 00:28:37,470 --> 00:28:41,200 A tak to je druh typu na vrchole typu. 520 00:28:41,200 --> 00:28:45,900 Môžete nejako si to predstaviť ako je to vracia ako balíček. 521 00:28:45,900 --> 00:28:47,750 A keď otvoríte, že balíček, buď 522 00:28:47,750 --> 00:28:53,930 má celé číslo, ktoré je výsledkom, alebo má v nej absolútne vôbec nič. 523 00:28:53,930 --> 00:28:58,140 A to je užitočný ako kontroly chybový mechanizmus, pretože v tomto prípade 524 00:28:58,140 --> 00:29:02,080 môžeme zistiť, bol tento typ konverzie úspešná? 525 00:29:02,080 --> 00:29:05,810 Ak by to bolo, potom to je v skutočnosti bude mať celé číslo vnútri. 526 00:29:05,810 --> 00:29:08,750 V opačnom prípade, že to bude mať nejaký hodnota, ktorú budeme nazývať nevyužité, 527 00:29:08,750 --> 00:29:10,920 vyjadrujúce nie je celé číslo vôbec. 528 00:29:10,920 --> 00:29:13,270 Je to naozaj reprezentatívne ničoho. 529 00:29:13,270 --> 00:29:18,130 >> A tak, ak konštrukcia nám umožňuje rozbaliť ten balíček, 530 00:29:18,130 --> 00:29:19,850 že voliteľná väzba. 531 00:29:19,850 --> 00:29:25,560 A ak sme schopní rozbaľovať, že baliť a nájsť celé číslo vnútri, 532 00:29:25,560 --> 00:29:27,720 potom to, čo hovoríme Tu je, že sme sa potom 533 00:29:27,720 --> 00:29:33,090 dovoliť, aby hodnota, ktorá bude uvedená do táto konštanta s názvom stupeň. 534 00:29:33,090 --> 00:29:36,590 A táto časť if, horná časť if 535 00:29:36,590 --> 00:29:40,390 pobeží, pretože to Vybaľte bol úspešný. 536 00:29:40,390 --> 00:29:43,290 >> Ak to len tak sa stane, že došlo k chybe možná 537 00:29:43,290 --> 00:29:47,040 V tomto explicitné konverziu typu z reťazca na celé číslo, možno 538 00:29:47,040 --> 00:29:49,160 je to hodnota ABC napr. 539 00:29:49,160 --> 00:29:52,120 A to vlastne nebude previesť na celé číslo. 540 00:29:52,120 --> 00:29:55,520 Potom sa vráti nil, čo nie je celé číslo. 541 00:29:55,520 --> 00:29:57,570 A to if aj potom zlyhá. 542 00:29:57,570 --> 00:30:01,930 trieda nebude existovať, pretože nemá celočíselné obsah. 543 00:30:01,930 --> 00:30:06,391 A to bude spustiť tento iný blok miesto. 544 00:30:06,391 --> 00:30:06,890 Ano? 545 00:30:06,890 --> 00:30:09,652 >> Divákov: Níl je N-I-L? 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ: nil je N-I-L, áno. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> Takže to je možno jeden z najťažších vecí, o Swift, 549 00:30:20,310 --> 00:30:23,690 zvlášť keď ste v buriny na app iOS 550 00:30:23,690 --> 00:30:27,442 a ste vlastne pokúšate urobiť nejaké rozvoja tam. 551 00:30:27,442 --> 00:30:29,400 Je to bude revať na teba asi nepovinná. 552 00:30:29,400 --> 00:30:33,050 Je to bude vás so žiadosťou o otázniky a výkričníky. 553 00:30:33,050 --> 00:30:37,100 Ale akonáhle ste zistili out-- ak vás venovať nejaký čas premýšľaním, 554 00:30:37,100 --> 00:30:41,990 čo sa deje s voliteľnými typy, ušetríte si veľa bolesti hlavy 555 00:30:41,990 --> 00:30:46,040 ako sa snažíte napísať aplikáciu v Swift. 556 00:30:46,040 --> 00:30:47,660 >> Je to vlastne veľmi výkonné funkcie. 557 00:30:47,660 --> 00:30:49,826 A budete mať len vziať moje slovo pre to teraz. 558 00:30:49,826 --> 00:30:52,620 Ale uvidíme túto konštrukciu a niektorí iní to páči 559 00:30:52,620 --> 00:30:56,740 V niektorých iných zdrojového kódu, ktorý vám ukážeme v len trochu. 560 00:30:56,740 --> 00:31:00,440 >> Sú nejaké prvými otázkami tu? 561 00:31:00,440 --> 00:31:03,790 562 00:31:03,790 --> 00:31:08,690 Takže dôležité, je to, že jedlo so sebou voliteľný typ je akýsi metatype. 563 00:31:08,690 --> 00:31:12,500 To má buď hodnotu, a ak áno, potom to 564 00:31:12,500 --> 00:31:18,110 bude možno musieť túto hodnotu spojenú s tým, alebo to nemá žiadnu hodnotu vôbec, 565 00:31:18,110 --> 00:31:19,620 a je reprezentovaná nulovú. 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 Zvyšok je možná ako by ste očakávali. 568 00:31:28,870 --> 00:31:32,900 >> Takže poďme rozbehnúť obtiažnosť ešte raz. 569 00:31:32,900 --> 00:31:37,070 A tentoraz, poďme sa pozrieť na niektoré Iné typy dát, ktoré skutočne existujú. 570 00:31:37,070 --> 00:31:41,290 Jedným z nich je slovníky, ktorý je veľmi podobný Pythone slovníkov. 571 00:31:41,290 --> 00:31:48,270 Je to trochu podobné hash tabuľky v C. Je to v podstate mapovanie klávesov 572 00:31:48,270 --> 00:31:49,820 kde kľúče môžu byť reťazce. 573 00:31:49,820 --> 00:31:52,670 A keď sa pozriete na tie kľúče, tieto klávesy bude mať hodnotu. 574 00:31:52,670 --> 00:31:56,020 Takže to nie je úplne poľa, ale namiesto toho, viac úzko spojená 575 00:31:56,020 --> 00:31:58,810 na mapu hash alebo hash tabuľky. 576 00:31:58,810 --> 00:32:02,420 >> Pozrime sa, ako sa to má do práce, než sme vlastne 577 00:32:02,420 --> 00:32:05,210 ísť do zdrojového kódu samotného. 578 00:32:05,210 --> 00:32:07,680 Ak by som len spustiť to, nič sa nedeje. 579 00:32:07,680 --> 00:32:12,430 To mi hovorí, že som očakával niektoré parametre nasledujúceho typu. 580 00:32:12,430 --> 00:32:16,050 Takže budem poskytovať to nejaký problém nastaviť mená, 581 00:32:16,050 --> 00:32:18,490 tak pset0, možno som dostal 100. 582 00:32:18,490 --> 00:32:20,790 A pset1, mám 5. 583 00:32:20,790 --> 00:32:24,630 A potom sa na skúšku, I robil naozaj dobre a dostal 30. 584 00:32:24,630 --> 00:32:27,180 A pardon, som trafil priestor tu. 585 00:32:27,180 --> 00:32:30,940 >> Keď som stlačte klávesu Enter, môžete vidieť že vykonáva niektoré výpočty. 586 00:32:30,940 --> 00:32:33,740 To hovorí, že sú tri gradebook stupňa, pset1, pset0, skúška. 587 00:32:33,740 --> 00:32:36,120 A gradebook má tento špecifický priemer. 588 00:32:36,120 --> 00:32:38,370 Takže znovu, pracujeme s týmto Gradebook myšlienkou, 589 00:32:38,370 --> 00:32:44,650 ale budeme pokračovať v iterácii s zložitosti našej funkcie. 590 00:32:44,650 --> 00:32:47,650 >> Takže na začiatku, sme len bude vytvoriť funkciu, ktorá 591 00:32:47,650 --> 00:32:49,390 je zodpovedný za tlač použitia. 592 00:32:49,390 --> 00:32:51,920 A tam je to východ funkciu, ktorá bude len 593 00:32:51,920 --> 00:32:53,710 násilne ukončiť aplikáciu. 594 00:32:53,710 --> 00:32:56,530 To nie je niečo, budete používať v iOS app. 595 00:32:56,530 --> 00:32:59,750 Toto je len v prípade, s argument príkazového riadku. 596 00:32:59,750 --> 00:33:01,990 Ďalej začneme smerom k Xcode. 597 00:33:01,990 --> 00:33:07,760 Ale to je špecifický pre príkazu čiary program Swift. 598 00:33:07,760 --> 00:33:11,490 >> Poďme sa pozrieť na niektoré z zaujímavé veci tu. 599 00:33:11,490 --> 00:33:15,150 Poďme sa pozrieť, len pár zaujímavé veci spomenúť azda 600 00:33:15,150 --> 00:33:19,930 je to, že vo svojej funkcii tlač počtu stupňov, 601 00:33:19,930 --> 00:33:26,090 môžete pripomenúť, že som mal ten zoznam z items-- pset1, pset0 a skúškou. 602 00:33:26,090 --> 00:33:29,130 Môžete skutočne rýchlo a to ľahko urobiť 603 00:33:29,130 --> 00:33:34,490 tým, že na zadávanie známok, čo je Slovník, ktorý má kľúče a hodnoty. 604 00:33:34,490 --> 00:33:38,730 Nájsť všetky kľúče je cez Metóda, ktorú tu dot kľúče, 605 00:33:38,730 --> 00:33:43,180 a použite túto joinWithSeparator, ktoré sa potom všetky kľúče 606 00:33:43,180 --> 00:33:48,590 ktoré sme písali v, pset1-- alebo Ospravedlňujem sa, pset0, pset1, a exam-- 607 00:33:48,590 --> 00:33:53,030 a zřetězit ich dohromady pomocou čiarku a medzeru 608 00:33:53,030 --> 00:33:55,400 vytvoriť jeden dlhý reťazec. 609 00:33:55,400 --> 00:34:00,190 To pripojiť operácie je len fenomenálne užitočné v rôznych súvislostiach. 610 00:34:00,190 --> 00:34:03,450 A tak je to práve táto joinWithSeparator. 611 00:34:03,450 --> 00:34:06,939 >> A to je jedna vec, ktorá je zmenilo od Swift 1 Swift 2. 612 00:34:06,939 --> 00:34:08,730 Tam bývala Python style-- ak ste 613 00:34:08,730 --> 00:34:13,219 oboznámení s Python-- python štýl pripojiť metódou na reťazcoch. 614 00:34:13,219 --> 00:34:15,699 Ale to už nie je prípad Swift 2. 615 00:34:15,699 --> 00:34:19,400 Ak chcete použiť, ak chcete, zřetězit rad vecí 616 00:34:19,400 --> 00:34:23,380 spolu s reťazcom. 617 00:34:23,380 --> 00:34:27,889 >> Tak snáď potom v našej diskusia o priemere skôr, 618 00:34:27,889 --> 00:34:32,659 to robí trochu väčší zmysel pre nás nastaviť priemernú funkciu 619 00:34:32,659 --> 00:34:36,610 byť prípadná dvojitá skôr než len explicitné double. 620 00:34:36,610 --> 00:34:39,239 Vzhľadom k tomu, že sme mali neobvyklý stav, kedy, 621 00:34:39,239 --> 00:34:41,550 Čo keď gradebook vlastne nemá žiadne hodnoty v rámci nej? 622 00:34:41,550 --> 00:34:44,280 Aký by mal priemerný výnos? 623 00:34:44,280 --> 00:34:46,350 >> No, možno budete v C by urobil niečo 624 00:34:46,350 --> 00:34:50,040 ako predpokladu hodnotu Sentinel ako 0,0, alebo možno záporné číslo, 625 00:34:50,040 --> 00:34:53,690 alebo niečo, čo len reprezentovať skutočnosť, že tam bola nejaká chyba podmienku 626 00:34:53,690 --> 00:34:57,910 a vy možno nie sú v skutočnosti mať schopnosť vypočítať uvedený priemer. 627 00:34:57,910 --> 00:35:05,590 No krása zadaním voliteľný typ by sa to urobiť. 628 00:35:05,590 --> 00:35:09,540 A ja som teraz hovoril všetky tieto slová, ale to vlastne nepoužíva Voliteľne. 629 00:35:09,540 --> 00:35:12,970 Ale uvidíme, že v práve minúty, kde môžeme nastaviť priemer 630 00:35:12,970 --> 00:35:17,230 byť nepovinný dátový typ tak, aby ak to vlastne vracia niektoré údaje, potom 631 00:35:17,230 --> 00:35:18,470 vrátime sa, že dáta. 632 00:35:18,470 --> 00:35:20,570 V opačnom prípade sa vrátime nil, hovorí, že toto 633 00:35:20,570 --> 00:35:22,200 nemá žiaden zmysluplný výpočet. 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> Poďme k niečomu inému. 636 00:35:28,570 --> 00:35:35,910 Takže z tu, sme sa pri pohľade na všetky tieto príklady v príkazovom riadku. 637 00:35:35,910 --> 00:35:39,470 Ale naozaj to, čo budete sa bude zaoberať, je Xcode. 638 00:35:39,470 --> 00:35:43,720 A jedna z pekné veci o Xcode je, a konkrétne v Swift, 639 00:35:43,720 --> 00:35:47,450 je, že máme tento čomu sa hovorí detské ihrisko. 640 00:35:47,450 --> 00:35:51,470 A detské ihrisko, je vôbec app iOS. 641 00:35:51,470 --> 00:35:54,751 Ale to vám umožní experimentovať s Swift vo veľmi jednoduchým spôsobom. 642 00:35:54,751 --> 00:35:56,000 Môžete zadať všetky vaše kódu. 643 00:35:56,000 --> 00:35:58,140 Je to pekne syntax tu zvýraznené. 644 00:35:58,140 --> 00:36:01,600 Pri vytvorení nového súboru, spýta sa vy, ak chcete vytvoriť detské ihrisko. 645 00:36:01,600 --> 00:36:08,720 Ale pekná vec, o Playground je to, že na pravej časti okna, 646 00:36:08,720 --> 00:36:12,020 to vlastne ukáže, Výstup z kódu. 647 00:36:12,020 --> 00:36:16,110 Takže keď som sa posunúť dole, môžeme vidieť, čo výstup rôznych riadkov kódu 648 00:36:16,110 --> 00:36:17,200 v skutočnosti sa stane byť. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> Takže v tomto prípade, ideme zmenili smer len trochu 651 00:36:26,790 --> 00:36:30,960 a hovoriť o niečom, čo je naozaj dôležité tejto vysokej úrovne spôsobom 652 00:36:30,960 --> 00:36:34,020 že Swift prevádzkuje, a to je tento nápad, uzáverov. 653 00:36:34,020 --> 00:36:36,960 A pravdepodobne ste videl trochu v JavaScriptu. 654 00:36:36,960 --> 00:36:40,770 Pre tých z vás, ktoré sú v CS50, uzávery 655 00:36:40,770 --> 00:36:47,240 sú veľmi populárne, veľmi dobrý spôsob, ako robiť na vysokej úrovni, čo v moderných jazykoch. 656 00:36:47,240 --> 00:36:50,270 Ale je to tiež trochu ťažké zabaliť hlavu okolo prvýkrát. 657 00:36:50,270 --> 00:36:52,269 Takže ak sa pozrieme na to Prvýkrát, to je v poriadku. 658 00:36:52,269 --> 00:36:56,740 Stačí sa pozrieť na zdrojový kód a vidieť ak môžete prísť na to doma. 659 00:36:56,740 --> 00:37:01,050 >> Takže v tomto prípade, povedzme, že sme chcete vytvoriť mnoho exponentov 660 00:37:01,050 --> 00:37:04,134 s nejakou pevnou hodnotu. 661 00:37:04,134 --> 00:37:05,800 Takže v tomto prípade môžem vytvoriť funkciu. 662 00:37:05,800 --> 00:37:09,270 Budem hovoriť moc 2, ktorých jediným cieľom v živote 663 00:37:09,270 --> 00:37:15,770 je vziať nejaký vstup a double to, a vráti túto hodnotu. 664 00:37:15,770 --> 00:37:21,210 Všimnite si, že som tu prijíma jeden typ dát. 665 00:37:21,210 --> 00:37:23,137 Bude to byť premenná s názvom x. 666 00:37:23,137 --> 00:37:23,970 To je typu Double. 667 00:37:23,970 --> 00:37:26,190 A ja idem vrátiť dvojitým tu. 668 00:37:26,190 --> 00:37:29,100 A ja som jednoducho ísť robiť veľmi, úprimne povedané, celkom 669 00:37:29,100 --> 00:37:32,650 naivné spôsobom zdvojnásobiť túto hodnotu. 670 00:37:32,650 --> 00:37:35,600 A ja vám ukážem, prečo tento je užitočné v len sekundy. 671 00:37:35,600 --> 00:37:40,418 >> Všimnite si, že tu máme túto ponuku znova. niečo v 1, dot 672 00:37:40,418 --> 00:37:44,130 dot dot, 2, čo znamená, že táto slučka bude prebiehať dvakrát. 673 00:37:44,130 --> 00:37:46,480 Ale to predstavuje fiktívny premennú. 674 00:37:46,480 --> 00:37:49,650 To znamená, že som to naozaj bude možno pomocou tohto premennej kdekoľvek 675 00:37:49,650 --> 00:37:51,070 vnútri tejto slučky. 676 00:37:51,070 --> 00:37:55,380 Chcem len tento riadok kódu spustiť dvakrát, 677 00:37:55,380 --> 00:37:58,980 bez toho aby museli vedieť, je hodnota tohto rozsahu. 678 00:37:58,980 --> 00:38:02,570 >> Takže v tomto prípade Bežím výsledok časy x dvakrát, ktoré v podstate 679 00:38:02,570 --> 00:38:06,560 Znamená to, že som kvadratúra túto hodnotu. 680 00:38:06,560 --> 00:38:10,230 A to sa stane práce, ako by sme očakávali. 681 00:38:10,230 --> 00:38:16,410 Sila 2, odovzdaním hodnoty 2.0 nám dáva výkon 4. 682 00:38:16,410 --> 00:38:18,810 3.2 práce pre 10,24. 683 00:38:18,810 --> 00:38:22,660 >> Teraz si môžeme robiť podobné vec pre silu 3. 684 00:38:22,660 --> 00:38:25,330 Ale teraz zmení iba rozsah. 685 00:38:25,330 --> 00:38:28,840 Pre dummy premenné v 1 až 3, násobiť 3 krát, 686 00:38:28,840 --> 00:38:29,830 a urobiť to isté. 687 00:38:29,830 --> 00:38:32,240 >> Takže to môže cítiť trochu neprirodzený. 688 00:38:32,240 --> 00:38:34,270 Ale je to dôležitá vec, ktorá tu 689 00:38:34,270 --> 00:38:37,770 je to, že pri pohľade na tieto dve funkcie, je tu 690 00:38:37,770 --> 00:38:43,600 len jedna vec, to je niečo iné, ktorá je táto hodnota v rozmedzí. 691 00:38:43,600 --> 00:38:46,910 Všetko ostatné o týchto dvoch Funkcie, výkon 3 a sila 2, 692 00:38:46,910 --> 00:38:50,440 sú v skutočnosti, identické, pretože pracujú rovnakým spôsobom. 693 00:38:50,440 --> 00:38:53,460 >> Takže v tomto bode, trochu poplach je potrebné ísť preč. 694 00:38:53,460 --> 00:38:56,200 Dúfajme, že to, čo hovoríte, Viete, to cíti trochu 695 00:38:56,200 --> 00:38:59,250 ako zdvojenie úsilia. 696 00:38:59,250 --> 00:39:02,950 Možno, že existuje spôsob, že by som bolo možné zapouzdřit to všetko 697 00:39:02,950 --> 00:39:06,630 a zabezpečiť funkciu alebo vytvoriť funkciu, ktorá 698 00:39:06,630 --> 00:39:11,550 robí presne to, čo chcem, bez museli písať to explicitne. 699 00:39:11,550 --> 00:39:15,732 A to je to, čo sila o uzavretí nám umožňuje robiť. 700 00:39:15,732 --> 00:39:16,940 Takže poďme sa pozrieť na to. 701 00:39:16,940 --> 00:39:18,700 A ja budem stráviť pár minút na to, pretože to 702 00:39:18,700 --> 00:39:20,310 je docela dôležité pre Swift. 703 00:39:20,310 --> 00:39:22,900 Vidíme to po celú dobu. 704 00:39:22,900 --> 00:39:24,550 Chystáme sa definovanie funkcie. 705 00:39:24,550 --> 00:39:26,380 Bude to byť nazývaný powerOf. 706 00:39:26,380 --> 00:39:29,470 Bude to akceptovať Parameter volal y typu int. 707 00:39:29,470 --> 00:39:32,220 Ale pozrite sa na návratový typ. 708 00:39:32,220 --> 00:39:38,730 Návratový typ je v zátvorky, dvojitú šípku Double. 709 00:39:38,730 --> 00:39:43,370 Čo znamená, že túto funkciu, táto funkcia powerOf, 710 00:39:43,370 --> 00:39:46,550 vracia funkcie. 711 00:39:46,550 --> 00:39:50,845 To znamená prijatie Double a vrátenie Double. 712 00:39:50,845 --> 00:39:53,720 Takže to môže znieť druh šialený, ale poďme nalistujte trochu 713 00:39:53,720 --> 00:39:55,060 a pozrieť sa, čo sa stane. 714 00:39:55,060 --> 00:39:57,910 Sme vnútri tejto funkcie powerOf. 715 00:39:57,910 --> 00:40:00,760 Sme vytvorenie novej funkcie volal exponentiator, 716 00:40:00,760 --> 00:40:02,900 ale nezáleží na tom, čo to je. 717 00:40:02,900 --> 00:40:06,410 >> Všimnite si, že tento má vstupná hodnota x. 718 00:40:06,410 --> 00:40:09,910 A to je pričom v dvojlôžkovej a vrátenie Double. 719 00:40:09,910 --> 00:40:16,320 A to je rovnaký kód, ktorý sme videli vyššie, okrem toho, že na hodnotu 2 720 00:40:16,320 --> 00:40:20,060 alebo hodnotu 3, a to hornú hranicu v tomto rozmedzí, 721 00:40:20,060 --> 00:40:23,210 bol nahradený táto hodnota y, ktorý 722 00:40:23,210 --> 00:40:27,230 bol prvý parameter našej powerOf funkcie. 723 00:40:27,230 --> 00:40:31,700 A v tomto bode, my vrátiť exponentiator. 724 00:40:31,700 --> 00:40:33,345 Sme vrátenie funkcie. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> Je to niečo ako malý myseľ vyfukovanie. 727 00:40:39,550 --> 00:40:44,360 Ale poďme si predstaviť, čo sa stane, Keď som túto funkciu volať powerOf 728 00:40:44,360 --> 00:40:47,610 a prechádzajú do neho nejakú hodnotu ako 2. 729 00:40:47,610 --> 00:40:50,020 Čo to znamená, že Mám teraz hodnotu 730 00:40:50,020 --> 00:40:55,130 2 pre y, čo znamená, že túto hodnotu y v tejto funkcii exponentiator 731 00:40:55,130 --> 00:40:56,410 bude to, že hodnota 2. 732 00:40:56,410 --> 00:41:01,290 Ale Vraciam to Funkcie exponentiator. 733 00:41:01,290 --> 00:41:05,900 >> Takže upozornenie, čo Swift hovorí, že vytvorili v tomto prípade. 734 00:41:05,900 --> 00:41:10,550 nech námestí je definícia, že je to funkcia, ktorá prijíma Double 735 00:41:10,550 --> 00:41:12,610 a vráti double. 736 00:41:12,610 --> 00:41:16,590 Vytvoril som funkciu že štvorcov niečo 737 00:41:16,590 --> 00:41:19,782 použitie tohto mechanizmu tady. 738 00:41:19,782 --> 00:41:22,490 A naozaj to, čo sa deje, je že sa vracia túto funkciu 739 00:41:22,490 --> 00:41:26,390 exponentiator, ale táto hodnota y je zabalený vnútri nej. 740 00:41:26,390 --> 00:41:31,080 A tak teraz zakaždým, keď som použiť premenná alebo táto konštanta s názvom 741 00:41:31,080 --> 00:41:35,180 štvorec, to bude to správať ako funkciu. 742 00:41:35,180 --> 00:41:39,960 A tak som sa potom volať, že premenné ako by som nazval funkciu, 743 00:41:39,960 --> 00:41:43,830 a odovzdať do neho číslo, ako je v tomto prípade 3. 744 00:41:43,830 --> 00:41:45,910 A ja sa potom námestí túto hodnotu. 745 00:41:45,910 --> 00:41:53,340 Takže 3 druhú potom stáť 9, ako môžeme vidieť tu. 746 00:41:53,340 --> 00:41:56,530 >> Naozaj blázon, ale teraz Umožňuje mi príležitosť 747 00:41:56,530 --> 00:41:59,040 vytvoriť iné powerOf funkcie. 748 00:41:59,040 --> 00:42:03,680 Ako môžem povedať, v poriadku, no teraz chcem vytvoriť novú funkciu, powerOf (3), 749 00:42:03,680 --> 00:42:06,290 a uložiť, že na A konštantný nazvaný kocky. 750 00:42:06,290 --> 00:42:10,220 A teraz kocky bude byť samostatná funkcie, ktoré potom bude 751 00:42:10,220 --> 00:42:14,800 trvať nejakú hodnotu ako vstup a kocky hodnota ako môžeme vidieť na dolnom riadku 752 00:42:14,800 --> 00:42:16,420 sem. 753 00:42:16,420 --> 00:42:18,590 kocka 2 bude mať za následok 8. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> Dúfajme, že celkom pekné veci. 756 00:42:22,680 --> 00:42:25,920 Vy ste nikdy nevideli. 757 00:42:25,920 --> 00:42:29,990 Odporúčam vám pozrieť sa do uzávery a skúmať to trochu viac. 758 00:42:29,990 --> 00:42:33,570 Je to naozaj silný vec vidíme veľa v JavaScripte a niektorých iných jazykov. 759 00:42:33,570 --> 00:42:37,160 Je to naozaj veľmi dôležité pochopenie API rovnako 760 00:42:37,160 --> 00:42:38,620 že sa dostaneme do pár sekúnd. 761 00:42:38,620 --> 00:42:39,456 Ano? 762 00:42:39,456 --> 00:42:43,740 >> Divákov: Ak tak urobíte powerOf (2), zátvorka, a potom 763 00:42:43,740 --> 00:42:48,764 ďalšie zátvorka, ďalší input-- ste v podstate výmenou námestí. 764 00:42:48,764 --> 00:42:50,930 DAN AMRMENDARIZ: Tak sa pozrite na posledný riadok tu. 765 00:42:50,930 --> 00:42:55,930 Je to v skutočnosti úplne možné tomu, že reťazenie, ako ste navrhol. 766 00:42:55,930 --> 00:43:00,990 Takže powerOf (5), znamená to, že ideme mať exponentiator z 5 sem. 767 00:43:00,990 --> 00:43:04,160 Takže to je v podstate bude byť to isté ako 4 až piate sile, 768 00:43:04,160 --> 00:43:07,200 preto, že sme vytvorili exponentiating fungujú tak, že na piatej silové, 769 00:43:07,200 --> 00:43:09,920 a my sme prechádza do , Ktoré fungujú na hodnotu 4. 770 00:43:09,920 --> 00:43:12,619 A dostaneme túto hodnotu že očakávame, 1024. 771 00:43:12,619 --> 00:43:14,785 Divákov: A nie je to meno, tak to uľahčuje 772 00:43:14,785 --> 00:43:16,570 čítať, námestie čokoľvek. 773 00:43:16,570 --> 00:43:17,903 >> DAN AMRMENDARIZ: Správne, presne tak. 774 00:43:17,903 --> 00:43:21,120 Takže predtým, než som len dať to do tu, takže konštantné 775 00:43:21,120 --> 00:43:23,808 že to robilo to ľahké, že názov. 776 00:43:23,808 --> 00:43:24,308 Ano? 777 00:43:24,308 --> 00:43:26,942 >> Publikum: V tejto súvislosti powerOf, je to časť 778 00:43:26,942 --> 00:43:30,774 programovacieho jazyka na rozdiel od toho, ako 779 00:43:30,774 --> 00:43:33,952 myslieť na powerOf v [nepočuteľných]? 780 00:43:33,952 --> 00:43:35,660 DAN AMRMENDARIZ: So V tomto prípade, powerOf 781 00:43:35,660 --> 00:43:39,280 je jednoducho názov z Funkcie, ktoré som definovaná tu. 782 00:43:39,280 --> 00:43:41,801 Takže to nie je vlastné na jazyk sám, 783 00:43:41,801 --> 00:43:43,550 ale namiesto toho, je to len funkcia, ktorá má 784 00:43:43,550 --> 00:43:45,628 že názov preto, že som dať mu to meno. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 Nejaké ďalšie otázky? 787 00:43:51,920 --> 00:43:52,800 Dobre. 788 00:43:52,800 --> 00:43:54,750 >> Teraz je to skvelé. 789 00:43:54,750 --> 00:43:58,170 Ale vy nebudete vidieť Mnoho záverečných funkcií, ktoré 790 00:43:58,170 --> 00:44:03,440 sú ako to, kde môžete definovať, vnútri jednej funkcie, inej funkcii. 791 00:44:03,440 --> 00:44:04,320 A môžete to urobiť. 792 00:44:04,320 --> 00:44:06,430 Ale je to trochu nie je naozaj nutné, je to tak? 793 00:44:06,430 --> 00:44:09,189 Rovnako ako prečo sa definovať to Funkcia tzv exponentiator 794 00:44:09,189 --> 00:44:10,480 a potom sa hneď vrátiť. 795 00:44:10,480 --> 00:44:15,220 Prečo nemôžem jednoducho hneď vrátiť túto funkciu? 796 00:44:15,220 --> 00:44:18,890 >> A v skutočnosti, to je práve myšlienkou koncepcie s názvom 797 00:44:18,890 --> 00:44:22,410 anonymné funkcie, kde anonymné funkcie nie sú v skutočnosti 798 00:44:22,410 --> 00:44:25,270 majú meno, pretože oni Nemusíte mať jeden. 799 00:44:25,270 --> 00:44:28,700 A tak je v tomto prípade, v 7B, môžeme nájsť presne to. 800 00:44:28,700 --> 00:44:31,470 Je to všetko rovnaký kód, robí presne to isté, 801 00:44:31,470 --> 00:44:35,570 ale teraz sme to zmenil ľahko tak že táto funkcia powerOf okamžite 802 00:44:35,570 --> 00:44:37,750 vráti funkciu. 803 00:44:37,750 --> 00:44:44,150 Všimnite si, že po návrate, tam je otvorená zložené zátvorky. 804 00:44:44,150 --> 00:44:46,410 Je to očakáva tento vstup Double. 805 00:44:46,410 --> 00:44:48,560 Je to očakáva, že produkcia Double. 806 00:44:48,560 --> 00:44:52,175 A potom sa v kľúčové slovo oddeľuje kód sám o sebe. 807 00:44:52,175 --> 00:44:53,550 Tak toto je anonymný funkcia. 808 00:44:53,550 --> 00:44:57,030 To nie je v skutočnosti mať meno, zatiaľ čo predtým to bolo volané exponentiator. 809 00:44:57,030 --> 00:45:00,229 Ale ako sme videli, len naozaj neuviedla exponentiator 810 00:45:00,229 --> 00:45:01,270 mimo tejto funkcie. 811 00:45:01,270 --> 00:45:02,470 Takže na tom nezáležalo. 812 00:45:02,470 --> 00:45:06,300 Takže to anonymné funkcie takzvaný pretože to je bezmenný, 813 00:45:06,300 --> 00:45:09,107 ale je to stále používa v kontexte tohto kódu. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> Ďalší pár z nich som bude pokračovať dúfajme 816 00:45:16,079 --> 00:45:17,370 fúkanie vaša myseľ trochu. 817 00:45:17,370 --> 00:45:20,410 Môžeme zjednodušiť to ešte viac. 818 00:45:20,410 --> 00:45:24,490 Vzhľadom k tomu, ako bol bystro poukázal už skôr, 819 00:45:24,490 --> 00:45:29,100 Možno sme skutočne vedieť, o vyvodil z tohto kódu, čo 820 00:45:29,100 --> 00:45:31,750 Výstup tohto kódu bude. 821 00:45:31,750 --> 00:45:38,180 A v skutočnosti, v tomto anonymný funkcie, možno v podstate odvodiť typy dát. 822 00:45:38,180 --> 00:45:41,650 >> Takže v tomto jednom, my už treba explicitne definovať 823 00:45:41,650 --> 00:45:44,850 typ dát, ktorá je bytia Vstup a výstup z tejto funkcie 824 00:45:44,850 --> 00:45:45,890 na pár dôvodov. 825 00:45:45,890 --> 00:45:51,390 Jedným z nich je, že sme je definovaný, a to až u Prototyp funkcie obvodového, 826 00:45:51,390 --> 00:45:55,770 aký typ dát tohto anonymných funkcie by sa vstup a výstup. 827 00:45:55,770 --> 00:45:57,900 A z druhého, sme možno vyvodiť z kódu 828 00:45:57,900 --> 00:46:01,930 tu dole, že prijímame vstup, ktorý je typu Double 829 00:46:01,930 --> 00:46:03,670 a vrátenie Double. 830 00:46:03,670 --> 00:46:07,890 >> Všimnite si, že tu máme nie je výslovne definované názvy argumentov 831 00:46:07,890 --> 00:46:11,220 že táto funkcia je prijímať. 832 00:46:11,220 --> 00:46:16,180 A tak vidíme, môžeme odkazovať na tieto parametre pomocou $ 0, $ 1, 833 00:46:16,180 --> 00:46:20,140 tak ďalej a tak ďalej, v závislosti na počet tohto parametra používa 834 00:46:20,140 --> 00:46:20,850 v tejto funkcii. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> To je niečo, čo sa deje vidieť veľa, je to otvorený kučeravé držiak 837 00:46:29,740 --> 00:46:32,797 Definícia po ktorom nasleduje $ 0, a potom niektoré operácie, 838 00:46:32,797 --> 00:46:34,130 a potom uzavretý zložené zátvorky. 839 00:46:34,130 --> 00:46:38,630 To je anonymný funkcia ktorý vykonáva túto operáciu. 840 00:46:38,630 --> 00:46:42,940 To má tento parameter kde je to typ je odvodený. 841 00:46:42,940 --> 00:46:44,860 To prvé parameter je $. 0 842 00:46:44,860 --> 00:46:49,010 A niektoré operácie je deje, že $. 0 843 00:46:49,010 --> 00:46:52,100 >> Divákov: Takže znak dolára znamená parameter v podstate, 844 00:46:52,100 --> 00:46:53,429 a 0 znamená prvý? 845 00:46:53,429 --> 00:46:54,720 DAN Armendariz: To je správne. 846 00:46:54,720 --> 00:46:59,100 Takže znak dolára v podstate znamená, parameter, a 0 znamená prvý. 847 00:46:59,100 --> 00:47:02,760 Ale funguje to konkrétne Tento prípad, kedy som sa volal 848 00:47:02,760 --> 00:47:07,940 argumenty v mojom anonymný funkcie. 849 00:47:07,940 --> 00:47:11,119 >> Divákov: Má Perl alebo niečo máte Tento znak dolára, dolár 0 tam? 850 00:47:11,119 --> 00:47:12,702 DAN Armendariz: Má, ktorý je mi ľúto? 851 00:47:12,702 --> 00:47:15,360 Divákov: Má mať Perl Tento dolára 0, dolár 1-- 852 00:47:15,360 --> 00:47:17,318 DAN Armendariz: Nie som príliš oboznámení s Perl, 853 00:47:17,318 --> 00:47:21,340 ale PHP, čo definuje premenné založený na dolári. 854 00:47:21,340 --> 00:47:26,120 A tam môžu byť niektoré jazyky že majú vlastnosti, ako je táto. 855 00:47:26,120 --> 00:47:28,240 V skutočnosti, Swift vypožičiava mnoho funkcií, ako je tento 856 00:47:28,240 --> 00:47:29,489 z mnohých ďalších jazykov. 857 00:47:29,489 --> 00:47:32,380 Vidíme náznaky Python v ňom. 858 00:47:32,380 --> 00:47:35,800 Táto definícia typu Zdá sa, že pochádza z OCaml. 859 00:47:35,800 --> 00:47:38,932 A máme len veľa veci z mnohých rôznych jazykov. 860 00:47:38,932 --> 00:47:40,640 To je jeden z pekné vecí o Swift 861 00:47:40,640 --> 00:47:43,390 je, že to trvá veľa z najlepších nápady od banda jazykov 862 00:47:43,390 --> 00:47:47,229 a shoehorns ich všetky dohromady do jedného super-jazyka. 863 00:47:47,229 --> 00:47:49,520 V skutočnosti, ak dovolíte, aby pokračovať fúka svoju myseľ, 864 00:47:49,520 --> 00:47:51,000 takže sme robili všetko. 865 00:47:51,000 --> 00:47:56,690 Môžeme snáď zjednodušiť to trochu bit by si uvedomil, že, samozrejme, 866 00:47:56,690 --> 00:48:02,120 Swift má exponentiating funkcia postavená v roku. 867 00:48:02,120 --> 00:48:04,660 Keby som importovať Darwin, ktorý je len knižnica 868 00:48:04,660 --> 00:48:09,680 Ponúka tejto funkcie s názvom pow, teraz Môžem zjednodušiť svoj výkon funkcie 869 00:48:09,680 --> 00:48:11,830 byť nasledovné. 870 00:48:11,830 --> 00:48:15,860 To sa bude vracať táto anonymný funkcie. 871 00:48:15,860 --> 00:48:17,950 >> Ale pozrite sa na to, ako jednoduché to je teraz. 872 00:48:17,950 --> 00:48:22,780 To je anonymný funkcia, ktorá prijíma nejaký druh dát, 873 00:48:22,780 --> 00:48:26,600 a bude jedno Argument špecificky, 874 00:48:26,600 --> 00:48:29,320 odvolával sa na $ 0, ktorá je typu double. 875 00:48:29,320 --> 00:48:32,680 To sa chystá vrátiť typu Double. 876 00:48:32,680 --> 00:48:35,760 Avšak návrat vyhlásenie Teraz je implicitná. 877 00:48:35,760 --> 00:48:39,990 >> A to je to presne štýl, ktorý sa je veľmi, veľmi prevláda v Swift, 878 00:48:39,990 --> 00:48:40,790 všade. 879 00:48:40,790 --> 00:48:43,190 Ideme do vidieť po celú dobu v Swift. 880 00:48:43,190 --> 00:48:46,150 Takže som ukazovať toto všetko ste kvôli tejto syntaxe. 881 00:48:46,150 --> 00:48:49,070 To je veľmi časté vidieť, čo znamená, že ho 882 00:48:49,070 --> 00:48:51,420 je anonymný funkcia ktorý vykonáva 883 00:48:51,420 --> 00:48:54,640 niektoré operácie na týchto argumentov. 884 00:48:54,640 --> 00:48:56,940 A tam je implicitná výnos. 885 00:48:56,940 --> 00:49:01,850 Tak to je úplne to isté Pre nás to hovorím, tu. 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> Pretože táto kučeravé Držiak je funkcia, 888 00:49:08,150 --> 00:49:10,480 Sme vykonať túto operáciu Na prvý argument. 889 00:49:10,480 --> 00:49:12,170 Budeme sa vrátiť to. 890 00:49:12,170 --> 00:49:14,815 Ale toto vonkajšie priznanie je vracať celú túto funkciu, 891 00:49:14,815 --> 00:49:19,855 že celá anonymný funkcie že sme práve vytvorili. 892 00:49:19,855 --> 00:49:21,689 Nejaké ďalšie otázky? 893 00:49:21,689 --> 00:49:23,980 Dobre, ja nie chcete vedieť, vy ste na to pripravený, 894 00:49:23,980 --> 00:49:27,455 ale môžeme ísť ešte šialenejšie s Swift. 895 00:49:27,455 --> 00:49:28,560 Ste pripravení? 896 00:49:28,560 --> 00:49:29,930 OK, to je skvelé. 897 00:49:29,930 --> 00:49:35,310 >> Teraz sme vlastne mať možnosť k, v Swift, pretože, ako modulárne 898 00:49:35,310 --> 00:49:39,650 a, ako na základe protokolu, je, aby definovať svoje vlastné šalejú operátormi. 899 00:49:39,650 --> 00:49:44,060 Rovnako ako v tomto prípade sme mali no pohon pre exponentiation-- dobre, 900 00:49:44,060 --> 00:49:47,990 pre vykonávanie právomocí niečo. 901 00:49:47,990 --> 00:49:53,632 Ale môžem, v Swift, definovať nový subjekt, ktorý robí presne to. 902 00:49:53,632 --> 00:49:55,590 Takže v tomto prípade je banda syntaxe sem. 903 00:49:55,590 --> 00:49:59,980 A ja vám umožní pozrieť sa na to doma, keď sa pozriete na to. 904 00:49:59,980 --> 00:50:06,890 Ale my definovanie tohto Infix operátor, **, ktoré sa nám potom umožní, 905 00:50:06,890 --> 00:50:09,840 definovaním čo to Funkcie ** vlastne 906 00:50:09,840 --> 00:50:15,010 to, prijať ľavú ruku bočné a pravá strana, 907 00:50:15,010 --> 00:50:21,190 a potom sa vrátiť exponent, ktorý ľavá strana na pravej strane. 908 00:50:21,190 --> 00:50:24,850 >> A tak teraz zrazu I vytvorili nový čitateľa. 909 00:50:24,850 --> 00:50:29,490 Tak 2 ** 3 prostriedku 2 na tretiu mocninou. 910 00:50:29,490 --> 00:50:34,420 [Myseľ vyfukovanie SOUND] To by sama o sebe by vás mal byť rád, 911 00:50:34,420 --> 00:50:37,960 OK, skrutku C. idem Swift celú cestu. 912 00:50:37,960 --> 00:50:38,740 Toto je skvelé. 913 00:50:38,740 --> 00:50:40,140 To je celkom fantastické. 914 00:50:40,140 --> 00:50:42,240 >> Aj keď je to skvelý príklad. 915 00:50:42,240 --> 00:50:45,570 Ale ja mám nikdy raz vonku v tomto príklade vlastne 916 00:50:45,570 --> 00:50:46,800 definované vlastné operátor. 917 00:50:46,800 --> 00:50:49,710 Ale napriek tomu, to ukazuje Veľa moc Swift 918 00:50:49,710 --> 00:50:54,050 a prečo je to vlastne naozaj cool. 919 00:50:54,050 --> 00:50:55,832 OK, áno? 920 00:50:55,832 --> 00:50:57,790 Divákov: Ak ste definovanie vášho vlastného operátora, 921 00:50:57,790 --> 00:51:02,940 Ako vieš, že nemáte náhodou pokúsiť sa vytvoriť operátor, ktorý je 922 00:51:02,940 --> 00:51:06,040 v niekde v C, rovnako ako skryté niekde v Swift, 923 00:51:06,040 --> 00:51:12,210 ako ten, ktorý vám obskurní nemusí nevideli. 924 00:51:12,210 --> 00:51:15,050 >> DAN Armendariz: Takže, ak sa snažíte definovať vlastné operátormi, 925 00:51:15,050 --> 00:51:20,970 existuje riziko, definovanie jeden cez existujúce operátora. 926 00:51:20,970 --> 00:51:24,870 Že ide do úrovne detailov, ktoré Nemyslím si, že máme čas prejsť. 927 00:51:24,870 --> 00:51:27,620 Ale, že je tu riziko. 928 00:51:27,620 --> 00:51:31,320 A to je v skutočnosti veľmi dôvod, prečo Nechcel som používať symbol striešky, ktorý 929 00:51:31,320 --> 00:51:36,210 keď sme písanie von moc, zvyčajne použite 4 malá strieška 5 alebo tak niečo 930 00:51:36,210 --> 00:51:40,560 ako to, že vo chvíli, keď sme Gchatting kamaráti alebo čokoľvek iného. 931 00:51:40,560 --> 00:51:43,660 Ale v tom prípade, že v skutočnosti by spôsobil kolíziu. 932 00:51:43,660 --> 00:51:46,450 A tak som sa vyhýbal to len preto, Náhodou som vedieť, v tomto prípade 933 00:51:46,450 --> 00:51:50,430 že skutočnosti, ktoré by túto kolízii. 934 00:51:50,430 --> 00:51:52,270 >> Dobre. 935 00:51:52,270 --> 00:51:55,080 Teraz bohužiaľ, pre posledných sedem minút, 936 00:51:55,080 --> 00:51:57,410 Musím sa držať fúkanie vaša myseľ trochu. 937 00:51:57,410 --> 00:52:00,230 Takže mi dovoľte, aby som vám ukázať niektoré ďalšie veci rovnako. 938 00:52:00,230 --> 00:52:03,710 >> Sme vám ukázané túto myšlienku s týmito anonymný funkcie, 939 00:52:03,710 --> 00:52:07,040 Tieto uzávery, ktoré umožňujú užívateľovi druh prejsť okolo funkcií. 940 00:52:07,040 --> 00:52:08,100 Môžete ich vrátiť. 941 00:52:08,100 --> 00:52:09,490 Môžete s nimi manipulovať. 942 00:52:09,490 --> 00:52:11,790 Môžete robiť všetky druhy šialené veci. 943 00:52:11,790 --> 00:52:14,850 >> Ale jedna vec, ktorá ďalší sa stane, že sú užitočné 944 00:52:14,850 --> 00:52:19,740 je schopnosť, na rozdiel na návrat týchto funkcií 945 00:52:19,740 --> 00:52:25,146 vo funkcii, odovzdať funkciu ako parameter na inú funkciu. 946 00:52:25,146 --> 00:52:30,430 Tie by mohli byť myslenia dobre, prečo na Zemi by som chcel niečo také urobiť? 947 00:52:30,430 --> 00:52:33,660 >> No, povedzme, že chcem, , Aby tento operátor, ktoré som 948 00:52:33,660 --> 00:52:40,260 pracoval tak tvrdo na vytvorenie a použitie to veľa rôznych čísel 949 00:52:40,260 --> 00:52:41,770 v poli. 950 00:52:41,770 --> 00:52:46,700 Takže v tomto prípade mám rad integers-- 1, 4, 7, 2, 5, 10, 56. 951 00:52:46,700 --> 00:52:48,080 A ja chcem, aby ich všetky zdvojnásobiť. 952 00:52:48,080 --> 00:52:50,430 Mimochodom, že by sme typicky to urobiť, je len písať 953 00:52:50,430 --> 00:52:53,440 jednoduchý pre sláčiky, ktoré iteruje cez všetky z nich 954 00:52:53,440 --> 00:52:57,140 a vykonávať nejaký druh square operácie nad nimi, 955 00:52:57,140 --> 00:53:02,700 zadávanie týchto nových hodnôt do nového variabilné, alebo skôr, nové pole sem. 956 00:53:02,700 --> 00:53:07,370 A hodnota výstupu Výsledkom je potom všetky tieto polí, 957 00:53:07,370 --> 00:53:10,200 alebo skôr všetky tie Prvky teraz na druhú. 958 00:53:10,200 --> 00:53:12,680 >> A mohli by sme urobiť to isté vec pre Cubing to, 959 00:53:12,680 --> 00:53:15,360 ale trochu poplach by mal ísť preč 960 00:53:15,360 --> 00:53:17,360 hovorí, že možno existuje nejaký spôsob, že by sme 961 00:53:17,360 --> 00:53:19,860 bolo možné zjednodušiť tento trochu. 962 00:53:19,860 --> 00:53:21,130 A v skutočnosti je. 963 00:53:21,130 --> 00:53:25,320 Čo keby sme mohli vytvárať funkciu, ktorá nám umožňuje 964 00:53:25,320 --> 00:53:28,350 akceptovať, ako dravec, funkcia? 965 00:53:28,350 --> 00:53:30,350 Takže v tomto prípade trvať pozrite sa na tieto argumenty. 966 00:53:30,350 --> 00:53:33,220 Chystáme sa prijať zoznam zdvojnásobí. 967 00:53:33,220 --> 00:53:35,030 A potom pôjdeme prijať funkciu 968 00:53:35,030 --> 00:53:40,990 v premennej nazvanej f, ktorá sa deje vziať s manželskou posteľou a vrátiť double. 969 00:53:40,990 --> 00:53:43,320 A celý výstup celého tejto funkcie 970 00:53:43,320 --> 00:53:47,310 volal mapper sa chystá vrátiť maticu s názvom double. 971 00:53:47,310 --> 00:53:52,380 >> Čo to by ma potom umožní urobiť, je iterovat cez tomto zozname 972 00:53:52,380 --> 00:53:56,350 a urobiť to isté, ale teraz aplikovať túto funkciu na každej 973 00:53:56,350 --> 00:53:58,970 z jednotlivých hodnôt v tomto zozname. 974 00:53:58,970 --> 00:54:00,750 Takže som naozaj neviem, čo je f. 975 00:54:00,750 --> 00:54:02,010 Nezáleží na tom, ku mne. 976 00:54:02,010 --> 00:54:06,530 Ale tak dlho, ako bude potrebné v dvojlôžkovej, vykonáva nejaké operácie na to, 977 00:54:06,530 --> 00:54:08,640 a potom sa vráti Dvojlôžková izba, tak by som potom 978 00:54:08,640 --> 00:54:13,415 schopný mapovať túto funkciu naprieč každý prvok v zozname. 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> A tento typ programov je tzv vyšších rádov funkcie, 981 00:54:20,930 --> 00:54:24,440 kde sme okolo funkcie asi ako parametre 982 00:54:24,440 --> 00:54:26,430 a robiť veci s funkciami. 983 00:54:26,430 --> 00:54:29,640 Je to niečo ako s ohľadom na všetky tieto myšlienky, ktoré sme sa naučili v CS50 984 00:54:29,640 --> 00:54:31,390 a brať ich triedenie o na ďalšiu úroveň. 985 00:54:31,390 --> 00:54:34,140 A to je všetko CS51 štýl veci. 986 00:54:34,140 --> 00:54:37,080 A tak pôjdeme do hĺbky viac v triedach, ako je to. 987 00:54:37,080 --> 00:54:38,930 >> Ale to je tiež tu dôležité, pretože my 988 00:54:38,930 --> 00:54:42,010 vidieť mnoho funkcií ktoré sú použité v Swift 989 00:54:42,010 --> 00:54:45,590 že v podstate robí to, kde sme 990 00:54:45,590 --> 00:54:48,300 niektoré čísla, niektoré polia čísel. 991 00:54:48,300 --> 00:54:50,850 Chystáme sa prejsť okolo toho poľa do nášho mapper. 992 00:54:50,850 --> 00:54:55,770 A my sme tiež bude prejsť nejakú funkciu, ktorá 993 00:54:55,770 --> 00:54:57,950 sme už definované tu. 994 00:54:57,950 --> 00:54:59,690 Bude to byť štvorec. 995 00:54:59,690 --> 00:55:02,220 A ideme do tej doby štvorec všetkých týchto čísel 996 00:55:02,220 --> 00:55:04,710 a obchod, ktorý do tohto výsledku tu. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> Takže v tomto prípade sme formulovali sme vlastné funkciu nazvanú mapper. 999 00:55:11,000 --> 00:55:15,370 Ale to presne vec je, V skutočnosti, zabudované do Swift. 1000 00:55:15,370 --> 00:55:18,960 Existuje celý rad Funkcia tzv mapa. 1001 00:55:18,960 --> 00:55:21,520 K dispozícii je funkcia máp, tam je zníženie funkcie, 1002 00:55:21,520 --> 00:55:25,630 a tam je filtračná funkcia, ktoré v podstate platí funkcie 1003 00:55:25,630 --> 00:55:30,782 ku každému prvku v Zoznam je upraviť nejakým spôsobom. 1004 00:55:30,782 --> 00:55:34,510 >> Divákov: Takže, pretože ste transformáciu dáta do iného formátu 1005 00:55:34,510 --> 00:55:36,134 cez function-- 1006 00:55:36,134 --> 00:55:37,050 DAN Armendariz: Správne. 1007 00:55:37,050 --> 00:55:39,420 Jo, takže funkcie že sme prijatím 1008 00:55:39,420 --> 00:55:41,790 transformuje dáta v nejakej ceste. 1009 00:55:41,790 --> 00:55:44,700 V tomto prípade sme boli buď kvadratúra, alebo sme boli Cubing to, 1010 00:55:44,700 --> 00:55:50,060 alebo naozaj, mohli by sme hrať žiadna operácia na nej vôbec. 1011 00:55:50,060 --> 00:55:54,150 >> Ale dovoľte mi potom ukáže, ako to bude vyzerať v praxi. 1012 00:55:54,150 --> 00:55:56,681 A opäť, Bežím trochu času. takže si nie som 1013 00:55:56,681 --> 00:55:59,430 bude môcť prejsť všetky zdrojového kódu tu v detaile. 1014 00:55:59,430 --> 00:56:00,721 Ale ja som povzbudiť vás k tomu, že. 1015 00:56:00,721 --> 00:56:03,850 Budeme to písať, akonáhle najskôr po tomto rozhovore. 1016 00:56:03,850 --> 00:56:07,610 >> Ale ak sa pozriete na to, Predpokladáme, že máme zoznam čísel, 1017 00:56:07,610 --> 00:56:10,260 pole čísel v tomto premenné volaných čísel. 1018 00:56:10,260 --> 00:56:16,670 Potom sme chcete vykonať túto Filter operácie na týchto čísel. 1019 00:56:16,670 --> 00:56:19,730 Takže filter je vyššia objednať funkcia, ktorá 1020 00:56:19,730 --> 00:56:24,660 prijíma poľa a tiež funkcia. 1021 00:56:24,660 --> 00:56:28,760 A na každom prvku v tom, že pole, vykonáva funkciu. 1022 00:56:28,760 --> 00:56:31,990 >> Ak sa, že výnosy funkcie pravda, udržuje túto položku. 1023 00:56:31,990 --> 00:56:36,100 Ak sa táto funkcia vráti hodnotu false, to zahodí túto položku. 1024 00:56:36,100 --> 00:56:40,480 A potom sa to vráti zoznam , Ktorá je potom tvorená all 1025 00:56:40,480 --> 00:56:44,360 z týchto položiek, ktoré boli filtrované. 1026 00:56:44,360 --> 00:56:47,150 >> Takže inými slovami, je to rovnaký nápad sa gradebook. 1027 00:56:47,150 --> 00:56:50,800 Mohli by sme mať rôzne stupne akosti Do tohto čísla hodnotou tzv. 1028 00:56:50,800 --> 00:56:55,590 Mohol by to byť 100 a 70, a 40, tak ďalej a tak ďalej. 1029 00:56:55,590 --> 00:56:59,110 Čo tento filter robí, je upozornenie že je to, že syntaxe cukor 1030 00:56:59,110 --> 00:57:01,310 pre anonymné funkcie. 1031 00:57:01,310 --> 00:57:05,980 Jedná sa o anonymné funkcie príslovie že parameter, že som prijal 1032 00:57:05,980 --> 00:57:09,690 bude, ak o to je väčší ako 70 ° C, 1033 00:57:09,690 --> 00:57:15,837 potom to bude vráti true, čo znamená, že že položka bude mať na tohto filtra. 1034 00:57:15,837 --> 00:57:17,920 Takže buďme trochu konkrétnejšie o tom. 1035 00:57:17,920 --> 00:57:25,760 Mám Ak toto pole čísel a skladá sa z 100, 70 a 40, 1036 00:57:25,760 --> 00:57:29,730 Aj vykonať tento filter operácie na každom z nich. 1037 00:57:29,730 --> 00:57:33,270 Tak, že prvý je táto hodnota 100. 1038 00:57:33,270 --> 00:57:36,770 100 väčšie alebo rovné 70 je pravda, ktorý 1039 00:57:36,770 --> 00:57:41,950 Znamená to, že 100 je držaná v táto nová kópia tohto poľa. 1040 00:57:41,950 --> 00:57:44,290 70 tiež prechádza. 1041 00:57:44,290 --> 00:57:46,020 Ale 40 nie je. 1042 00:57:46,020 --> 00:57:54,290 Takže to, čo je vrátená v passingCount je pole prvkov 100 a 70-- 1043 00:57:54,290 --> 00:57:57,410 100, čiarka, 70. 1044 00:57:57,410 --> 00:57:59,870 To boli len dva položky, ktoré boli uchovávané. 1045 00:57:59,870 --> 00:58:03,740 A tak dôvod, prečo som sa rýchlo prešiel Mnoho z týchto druhov vyššieho rádu 1046 00:58:03,740 --> 00:58:08,680 veci sú, pretože to je to, že spoločná vec, ktorú uvidíte v Swift docela 1047 00:58:08,680 --> 00:58:16,810 často, vykonáva nejakú operáciu pomocou tejto anonymný syntaxe funkcie. 1048 00:58:16,810 --> 00:58:18,450 >> Tam je nejaký super veci. 1049 00:58:18,450 --> 00:58:24,730 Prepínače sú naozaj silný v Swift, Mám na mysli, rovnako ako blázon, blázon silný. 1050 00:58:24,730 --> 00:58:28,250 Môžete použiť prepínač, a môžete skutočne aplikovať 1051 00:58:28,250 --> 00:58:33,160 do rozsahov, čo je tak trochu blázon, a robiť fantázie podobné veci. 1052 00:58:33,160 --> 00:58:37,540 >> Ale v posledných niekoľkých minút, Chcem preskočiť pomerne ďaleko 1053 00:58:37,540 --> 00:58:46,940 a ukázať vám konkrétny príklad toho, ako môžeme vytvoriť v iOS pomocou Swift. 1054 00:58:46,940 --> 00:58:49,040 Takže keď robíte to, budete musieť vziať 1055 00:58:49,040 --> 00:58:51,990 A Look at-- na Apple dokumentácie, oni 1056 00:58:51,990 --> 00:58:56,084 majú veľa naozaj dobré tutoriály pre vytvorenie prvej aplikácie. 1057 00:58:56,084 --> 00:58:58,250 A ja povzbudiť vás k tomu že preto, že vás 1058 00:58:58,250 --> 00:59:04,110 cez všetky kroky, čo presne kliknite na vytvoriť aplikáciu iOS. 1059 00:59:04,110 --> 00:59:07,290 >> Ale tu máme túto aplikáciu iOS. 1060 00:59:07,290 --> 00:59:10,960 A je to naozaj celkom jednoduchá aplikácia. 1061 00:59:10,960 --> 00:59:13,840 Ak by som to plynúť, dovoľte mi ukázať vám, ako to vyzerá. 1062 00:59:13,840 --> 00:59:19,480 Všetko, čo to v podstate robí, je to vytiahne z internetu spis JSON 1063 00:59:19,480 --> 00:59:22,300 že som uložené na serveri. 1064 00:59:22,300 --> 00:59:26,310 A to JSON súbor definuje, obrazy, ktoré umožňujú 1065 00:59:26,310 --> 00:59:31,680 aby som potom prechádzať, na mojom app, obrázky z môjho webového servera. 1066 00:59:31,680 --> 00:59:32,880 >> Takže mám tu getNextImage. 1067 00:59:32,880 --> 00:59:37,100 To načíta obrázok z internetu, a potom ju zobrazí na displeji. 1068 00:59:37,100 --> 00:59:38,200 >> Takže je to celkom jednoduché. 1069 00:59:38,200 --> 00:59:41,550 Ale cieľom je ukázať, , Ako môžeme kombinovať veci 1070 00:59:41,550 --> 00:59:47,820 z posledných niekoľkých týždňov CS50 do skutočnej iOS aplikácie. 1071 00:59:47,820 --> 00:59:53,140 Inými slovami, možno jeden z veci, ktoré budete chcieť urobiť, 1072 00:59:53,140 --> 00:59:56,340 je mať aplikácia iOS, ktorý môžete vytiahnuť dáta z internetu 1073 00:59:56,340 --> 00:59:59,070 a ukázať užívateľovi nejaké informácie. 1074 00:59:59,070 --> 01:00:03,130 To je úplne bod z tohto zdrojového kódu tu. 1075 01:00:03,130 --> 01:00:07,890 >> Takže je tu veľa povedať o ako to urobiť skutočný iOS rozvoj. 1076 01:00:07,890 --> 01:00:12,860 Tam je veľa bláznivé syntaxe že sme nevideli ešte dosť 1077 01:00:12,860 --> 01:00:15,580 ako trieda, čo je to trieda v skutočnosti je. 1078 01:00:15,580 --> 01:00:19,470 Môžeme do značnej miery ignorovať že v súčasnej dobe. 1079 01:00:19,470 --> 01:00:23,250 >> Ale všimnite si, že sme obsahovali v rámci tohto rôzne vecí 1080 01:00:23,250 --> 01:00:27,720 že sme už videli, ako funkcie, ktoré majú špecifické mená. 1081 01:00:27,720 --> 01:00:32,650 A keď sme sa dať tie, Funguje správne názvy 1082 01:00:32,650 --> 01:00:36,530 ktorá sa očakáva od iOS, v skutočnosti to cíti trochu čarovné. 1083 01:00:36,530 --> 01:00:40,300 Ale keď si vytvoriť iOS aplikácie, tam 1084 01:00:40,300 --> 01:00:47,590 sú špecifické názvy funkcií, ktoré sú volány samotný telefón 1085 01:00:47,590 --> 01:00:52,440 pretože aplikácia sa nahráva vyskúšať vytvoriť proces, ktorý v skutočnosti 1086 01:00:52,440 --> 01:00:54,787 beží vaše aplikácie. 1087 01:00:54,787 --> 01:00:58,120 Takže znova, je tu veľa vecí, ktoré som musí zakrývať tu, aby nás 1088 01:00:58,120 --> 01:01:00,570 hovoriť o tom konkrétne. 1089 01:01:00,570 --> 01:01:06,050 Ale ja Odporúčame vám pozrieť sa na možné ostatné iOS semináre, ale aj niektoré 1090 01:01:06,050 --> 01:01:09,290 o tutoriály on-line, ktoré robia oveľa lepšiu prácu popisujúci 1091 01:01:09,290 --> 01:01:11,030 špecifické informácie. 1092 01:01:11,030 --> 01:01:15,760 >> Ale môžeme vidieť niekoľko vecí, ktoré sú zaujímavé odtiaľ kódu. 1093 01:01:15,760 --> 01:01:17,950 Všimnite si, že ak máme vyhlásenie. 1094 01:01:17,950 --> 01:01:20,400 Mimochodom, jeden dôležitý vec, o if 1095 01:01:20,400 --> 01:01:24,860 je to, že zátvoriek Logický výraz sú voliteľné. 1096 01:01:24,860 --> 01:01:30,800 Ale zložené zátvorky nie sú povinné, bez ohľadu na to, ako málo alebo veľa riadkov kódu 1097 01:01:30,800 --> 01:01:32,360 Máte v if. 1098 01:01:32,360 --> 01:01:38,670 Nemôžete mať if bez zložených zátvoriek v Swift. 1099 01:01:38,670 --> 01:01:41,000 >> A to je dobre, nejako hlúpe. 1100 01:01:41,000 --> 01:01:43,910 Ale je tu historické dôvody pre to. 1101 01:01:43,910 --> 01:01:46,180 Je to má, aby vás zachránil od seba. 1102 01:01:46,180 --> 01:01:49,899 Rovnako ako to napríklad, nemôžete eliminovať zložené zátvorky okolo toho 1103 01:01:49,899 --> 01:01:50,440 if. 1104 01:01:50,440 --> 01:01:52,730 Tie sú v skutočnosti potrebné. 1105 01:01:52,730 --> 01:01:54,480 Tak som povzbudiť, aby ste sa pozrieť na toto. 1106 01:01:54,480 --> 01:01:56,230 Ale je tu ešte jeden konštruovať, že chcem, 1107 01:01:56,230 --> 01:02:02,640 vám ukázať, že o Swift je nový Swift 2.0 nákupný 1108 01:02:02,640 --> 01:02:08,460 na staršie verzie Swift, čo je nasledujúci. 1109 01:02:08,460 --> 01:02:11,620 Poďme sa pozrieť, kde som dať sem? 1110 01:02:11,620 --> 01:02:16,630 >> Takže v tejto funkcii s názvom fetchJSON, táto funkcia 1111 01:02:16,630 --> 01:02:23,450 je zodpovedný za ťahanie, že JSON súbor z adresy URL, ktorý len tak sa stane 1112 01:02:23,450 --> 01:02:26,310 beží na mojom CS50 IDE. 1113 01:02:26,310 --> 01:02:28,580 Len som začal Apache, dám JSON súboru tam, 1114 01:02:28,580 --> 01:02:32,110 a som schopný vytiahnite, že dáta z internetu pomocou 1115 01:02:32,110 --> 01:02:36,430 táto funkcia a toto URL, ktorá je opatrená v telefóne. 1116 01:02:36,430 --> 01:02:40,490 Je to má poskytnúť pri knižnica, ktorá používate pri 1117 01:02:40,490 --> 01:02:43,140 robíte nejaké systému iOS pre vývoj aplikácií. 1118 01:02:43,140 --> 01:02:49,690 >> Všimnite si, že je to neobvyklé syntaxe konštrukt volal stráž. 1119 01:02:49,690 --> 01:02:53,530 A naozaj to všetko je v Swift je spôsob overovania 1120 01:02:53,530 --> 01:02:56,870 že niektoré veci majú boli splnené pred vami 1121 01:02:56,870 --> 01:03:00,000 pokračovať so zvyškom funkcie. 1122 01:03:00,000 --> 01:03:04,260 Takže som mohol mať, s použitím Tento voliteľný typ, 1123 01:03:04,260 --> 01:03:10,530 Mohol som našiel adresu URL spustenie tejto funkcie NSURL 1124 01:03:10,530 --> 01:03:16,640 a ukladanie, že do URL konštantný, a potom kontrola 1125 01:03:16,640 --> 01:03:20,820 aby zistil, či URL bola nulová, pretože to sa chystá vrátiť voliteľný typ. 1126 01:03:20,820 --> 01:03:25,660 A keby to bola nulová, potom by som vytlačiť chybu a potom sa vrátiť. 1127 01:03:25,660 --> 01:03:29,970 >> Ale namiesto toho, čo stráž necháva nás urobiť, je, že veľmi vec, 1128 01:03:29,970 --> 01:03:34,550 ale uistite sa, že je v skutočnosti platí, že url 1129 01:03:34,550 --> 01:03:38,020 bol správne nastavený NSURL. 1130 01:03:38,020 --> 01:03:41,810 A ak je to, potom je preskakuje to, a to 1131 01:03:41,810 --> 01:03:46,110 vám umožní pokračovať s url, ktoré boli riadne definované. 1132 01:03:46,110 --> 01:03:48,830 Ale ak je to tak, že url nie je správne definovaná, 1133 01:03:48,830 --> 01:03:52,550 ak je táto funkcia vracia chybu alebo nejaká iná nečakaná vec 1134 01:03:52,550 --> 01:03:58,030 skutočne nastane, tento guard konštrukt nám umožňuje potom výstup túto chybu 1135 01:03:58,030 --> 01:04:00,390 a okamžite vrátiť. 1136 01:04:00,390 --> 01:04:00,890 Ano? 1137 01:04:00,890 --> 01:04:04,839 >> Divákov: Takže je to trochu o Ako či potom iný? 1138 01:04:04,839 --> 01:04:07,130 DAN Armendariz: Je to druh Ako či potom iný, áno, 1139 01:04:07,130 --> 01:04:14,200 okrem toho, že táto adresa URL je potom definované pre všetko pod toto. 1140 01:04:14,200 --> 01:04:20,420 Ak prejde tento ochranný kryt, potom ho bude skutočne naplnená dátami 1141 01:04:20,420 --> 01:04:29,500 a použiteľné v zostávajúcej zdrojový kód vo vašej funkcii. 1142 01:04:29,500 --> 01:04:33,790 Tak som podozrenie, že budete začnete vidieť tento ochranný kryt rovnako. 1143 01:04:33,790 --> 01:04:36,670 A dbať na to. 1144 01:04:36,670 --> 01:04:46,270 >> Takže len pri pohľade na pár ďalších veci, to tu je to, čo, 1145 01:04:46,270 --> 01:04:53,377 myslíš, len podľa toho, čo sme hovorili o skôr? 1146 01:04:53,377 --> 01:04:56,650 >> Divákov: Myslíš, že to bude beh na zozname? 1147 01:04:56,650 --> 01:04:59,100 >> DAN Armendariz: Tak to je blízko. 1148 01:04:59,100 --> 01:05:02,360 Jedná sa o funkciu, že sa definuje. 1149 01:05:02,360 --> 01:05:07,240 A my sme zadanie tejto funkcie ako argument tejto funkcie tu. 1150 01:05:07,240 --> 01:05:09,120 >> Divákov: [Nepočuteľné], pokiaľ nie je nulová. 1151 01:05:09,120 --> 01:05:11,470 Takže je to v zozname, je to tak? 1152 01:05:11,470 --> 01:05:15,450 >> DAN Armendariz: Ak chyba nie je nulová, takže tak je-- musím posúvať. 1153 01:05:15,450 --> 01:05:18,060 No, pozrime sa, nemôžem prejdite na práve tu. 1154 01:05:18,060 --> 01:05:23,161 Chyba je argument, ktorý je byť odovzdaný tejto anonymné funkcie. 1155 01:05:23,161 --> 01:05:24,410 Jedná sa o anonymné funkcie. 1156 01:05:24,410 --> 01:05:25,480 To nemá žiadny názov. 1157 01:05:25,480 --> 01:05:29,850 Ale my prijímame tieto tri argumenty, dáta, reakcie, a chybe. 1158 01:05:29,850 --> 01:05:33,590 A to sa chystá vrátiť neplatné, takže že to nebude nič vracať. 1159 01:05:33,590 --> 01:05:37,910 A to je obsah tejto funkcie. 1160 01:05:37,910 --> 01:05:41,961 A potom máme prístup vo vnútri, že funkcií pre každý z týchto argumentov. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> Takže je to víchrica prehliadka jazyka. 1163 01:05:48,679 --> 01:05:50,470 Ale dúfam, že s tým, dúfajme, že, ako si vziať 1164 01:05:50,470 --> 01:05:54,490 pohľad na niektoré z tutoriálov špecifické pre iOS vývoji s Swift, 1165 01:05:54,490 --> 01:05:57,481 najmä ak idete do Apple developer web page-- 1166 01:05:57,481 --> 01:05:59,980 oni majú veľa naozaj dobré návody, ako začať. 1167 01:05:59,980 --> 01:06:05,010 Ale dúfajme, že práve táto hodina hovoriť o syntaxe sám dal 1168 01:06:05,010 --> 01:06:08,760 Si dosť, aby ste mohli začať s tým. 1169 01:06:08,760 --> 01:06:12,950 >> Budeme písať všetky tohto zdroja kód na webových stránkach semináre 1170 01:06:12,950 --> 01:06:17,800 čo najskôr, a tiež zábery takže máte odkaz pre všetky tie. 1171 01:06:17,800 --> 01:06:20,530 Ale veľa šťastia s vaše projekty. 1172 01:06:20,530 --> 01:06:23,640 A ďakujem vám všetkým moc prišli. 1173 01:06:23,640 --> 01:06:26,990 >> [APPLAUSE] 1174 01:06:26,990 --> 01:06:28,026