1 00:00:00,000 --> 00:00:03,332 >> [Přehrávání hudby] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> DAN AMRMENDARIZ: Každý, vítejte na CS50 seminář, 4 00:00:09,590 --> 00:00:11,690 iOS App Development s Swift. 5 00:00:11,690 --> 00:00:15,690 Jsem Dan Armendariz, a já jsem učitel informatiky tady na Harvardu. 6 00:00:15,690 --> 00:00:21,510 >> A další hodina bude vichřice prohlídka tolik věcí 7 00:00:21,510 --> 00:00:25,160 o tomto tématu, jak jsme se vejde. 8 00:00:25,160 --> 00:00:29,170 Budu se po celý zdrojového kódu že budete vidět online ještě dnes. 9 00:00:29,170 --> 00:00:31,990 Mohli bychom nebyli schopni skutečně jít nade vším 10 00:00:31,990 --> 00:00:34,810 že jsem, že jsem ukáže vám v této hodině. 11 00:00:34,810 --> 00:00:37,580 Ale aspoň doufám, že prostřednictvím připomínky zdrojového kódu, 12 00:00:37,580 --> 00:00:40,830 budete moci pokusit se zjistit, co přesně se děje na ty věci 13 00:00:40,830 --> 00:00:42,950 že nemáme dost dostat. 14 00:00:42,950 --> 00:00:46,970 >> Celkově lze říci, struktura dnešní diskuse bude následující. 15 00:00:46,970 --> 00:00:52,820 Začneme se dělat některé základní syntax s jazykem Swift, 16 00:00:52,820 --> 00:00:56,290 jít do některé z více pokročilé Syntaxe Swift jazyka. 17 00:00:56,290 --> 00:00:59,560 Vzhledem k tomu, jazyka je opravdu moderní a to 18 00:00:59,560 --> 00:01:02,110 má hodně vysoké úrovni rysy, věci, které máme ne 19 00:01:02,110 --> 00:01:06,600 je vidět na C v celé CS50, nebo Dokonce i některé jiné jazyky 20 00:01:06,600 --> 00:01:09,310 že jsme začali použití v CS50 jako je PHP, 21 00:01:09,310 --> 00:01:12,670 takže budu muset pokusit zavedly také některé témata, která 22 00:01:12,670 --> 00:01:18,580 jsou vztaženy k jazycích vyšší úrovně že nemusíte vidět do hloubky v CS50, 23 00:01:18,580 --> 00:01:21,380 ale uvidíte později počítačové vědy třídy. 24 00:01:21,380 --> 00:01:25,290 Takže to Bude to zhutnění hodinu. 25 00:01:25,290 --> 00:01:28,897 A prosím, neváhejte mě nechat vědět, pokud máte nějaké otázky. 26 00:01:28,897 --> 00:01:30,730 Takže pokud máte zájem v tom rozvoje 27 00:01:30,730 --> 00:01:34,442 s Swift, nebo opravdu jakýkoli iOS pro vývoj aplikací, 28 00:01:34,442 --> 00:01:35,900 existuje několik požadavků. 29 00:01:35,900 --> 00:01:39,940 Za prvé, musíte používat Mac, běžící v příkladech 30 00:01:39,940 --> 00:01:43,880 že budeme používat dnes, relativně nová verze operačního systému 31 00:01:43,880 --> 00:01:46,580 X. V tomto případě, běžím X 10.5. 32 00:01:46,580 --> 00:01:48,600 Můžete být spuštěn 10.11, pokud chcete. 33 00:01:48,600 --> 00:01:52,430 Ale všechno, co budete viz zapojuje Xcode 7 a novější, 34 00:01:52,430 --> 00:01:56,271 který má nejnovější verzi Swift, který je Swift 2,0. 35 00:01:56,271 --> 00:01:58,270 To je vlastně docela důležitý rozdíl. 36 00:01:58,270 --> 00:02:01,510 Hodně syntaxe má změnilo docela významně 37 00:02:01,510 --> 00:02:05,890 v některých případech od Swift 1.0, který byl propuštěn v loňském roce, 38 00:02:05,890 --> 00:02:08,514 na Swift 2.0, který právě vyšel letos na podzim. 39 00:02:08,514 --> 00:02:09,889 Takže jdeme ukázat Swift 2.0. 40 00:02:09,889 --> 00:02:13,020 Spousta věcí, které hledáte pro online 41 00:02:13,020 --> 00:02:18,040 když se snažíte dostat další informace o různých věcí, 42 00:02:18,040 --> 00:02:20,710 možná budete chtít explicitně vyhledávat Swift 2 43 00:02:20,710 --> 00:02:24,950 spíše než jen obyčejný starý Swift, aby se ujistil, že dostanete syntaxe správná. 44 00:02:24,950 --> 00:02:26,920 >> Ve skutečnosti je tento obecně platí. 45 00:02:26,920 --> 00:02:31,210 K dispozici je rychlý množství vývoje děje v Swift jazyce 46 00:02:31,210 --> 00:02:35,110 Od té doby Apple to propuštěn, myslím, co, je to už něco přes rok 47 00:02:35,110 --> 00:02:36,370 teď. 48 00:02:36,370 --> 00:02:39,080 A věci se změnily dramaticky v tom čase. 49 00:02:39,080 --> 00:02:42,160 A tak nebuďte frustrovaní pokud, když jste rozhlížet 50 00:02:42,160 --> 00:02:48,310 pro témat na Swift nebo jak dosáhnout něco, pomocí některé příklad kódu 51 00:02:48,310 --> 00:02:51,210 nebo něco, že tomu tak není skutečně pracují na Swift 2.0. 52 00:02:51,210 --> 00:02:53,790 Ujistěte se, že jste hledali speciálně pro tuto verzi 53 00:02:53,790 --> 00:02:58,690 pokusit se minimalizovat efekty různých verze a ty druhy věcí. 54 00:02:58,690 --> 00:03:02,470 >> Budu se snažit poukázat jen některé věci které se budou lišit, aby starší verze. 55 00:03:02,470 --> 00:03:03,970 Ale je to něco, co si dát pozor. 56 00:03:03,970 --> 00:03:06,770 To asi bude jeden z největších bolestí hlavy 57 00:03:06,770 --> 00:03:11,010 že budete mít s Swift je zjištění, příklad kódu, který je starší, i jen 58 00:03:11,010 --> 00:03:14,050 o pár měsíců, se snaží používat to v modernějším projektu. 59 00:03:14,050 --> 00:03:15,430 A to prostě nefunguje. 60 00:03:15,430 --> 00:03:18,530 Začínáš chyby kompilátoru, syntax Chyby, všechny druhy bláznivé věci. 61 00:03:18,530 --> 00:03:21,580 Takže prostě být pacient s že, a doufejme, že budete 62 00:03:21,580 --> 00:03:24,200 mají docela pěkné zážitky s Swift celkově. 63 00:03:24,200 --> 00:03:28,430 >> Nyní můžete skutečně join-- a já doufám, jsme vlastně ještě This rok-- 64 00:03:28,430 --> 00:03:30,910 CS 50 je Apple app vývojový tým, který 65 00:03:30,910 --> 00:03:34,680 vám umožní instalovat žádné aplikace který vytvoříte na vašich zařízeních se systémem iOS. 66 00:03:34,680 --> 00:03:39,190 Takže se podívat na tuto adresu URL, pokud máte zájem o tom, že. 67 00:03:39,190 --> 00:03:41,450 >> Takže jen pár věci, o Swift sám. 68 00:03:41,450 --> 00:03:43,580 Jedná se o sestaven jazyk. 69 00:03:43,580 --> 00:03:45,870 Ale uvidíte, že některé z funkcí, které používáme 70 00:03:45,870 --> 00:03:50,650 tomu, aby mohla být použita také v trochu jako interpretovaný způsobem stejně. 71 00:03:50,650 --> 00:03:56,350 >> Mnoho syntaxe je půjčil z C. Je založen a napsaný v jazyce C. 72 00:03:56,350 --> 00:04:00,400 A tak jsme se vidět, že existuje spousta takeaways 73 00:04:00,400 --> 00:04:04,450 z vašich současných znalostí z C, který můžeme port Swift. 74 00:04:04,450 --> 00:04:07,290 >> Ale jsou tu věci, které dělat to velmi odlišné od C 75 00:04:07,290 --> 00:04:08,860 Je to velmi silně zadali. 76 00:04:08,860 --> 00:04:10,380 K dispozici je automatická správa paměti. 77 00:04:10,380 --> 00:04:13,170 Nebudete muset používat malloc nebo zdarma kdekoliv. 78 00:04:13,170 --> 00:04:15,110 Je určen pro obecnosti. 79 00:04:15,110 --> 00:04:19,480 Takže jinými slovy, můžete jej použít v nejrůznějších kontextech a situacích, od Apple Watch 80 00:04:19,480 --> 00:04:26,290 iPhone celou cestu až do OS X, a dokonce i některé servery, dokonce i některé skriptování. 81 00:04:26,290 --> 00:04:28,400 Ale uvidíme, že podpora pro skriptování 82 00:04:28,400 --> 00:04:31,360 není tam ještě dost as to je v jiných jazycích. 83 00:04:31,360 --> 00:04:34,930 Takže s největší pravděpodobností budete používat to výhradně pro rozvoj 84 00:04:34,930 --> 00:04:37,060 na počítači Mac nebo iPhone. 85 00:04:37,060 --> 00:04:40,150 >> A to má spoustu moderních prvků. 86 00:04:40,150 --> 00:04:43,380 A mnoho z těchto věcí jsou věci, které budeme se snažit řešit dnes, 87 00:04:43,380 --> 00:04:47,590 ale také naše témata, která upřímně řečeno, můžeme věnovat celé kurzy. 88 00:04:47,590 --> 00:04:50,140 Ve skutečnosti, CS 51, který je nabídl další semestr, 89 00:04:50,140 --> 00:04:53,990 se zaměřuje hodně na těchto tématech , které jsou popsány níže. 90 00:04:53,990 --> 00:04:56,781 Takže můžete strávit celý semestr pochopení těchto věcí. 91 00:04:56,781 --> 00:04:58,530 Ale budeme se snažit dostat přes ně 92 00:04:58,530 --> 00:05:00,800 alespoň tak, že vás může pochopit, co je 93 00:05:00,800 --> 00:05:03,700 děje, když se podíváte na Swift programu 94 00:05:03,700 --> 00:05:07,310 a musí být schopen zaseknout svou cestu přes to pro finální projekt. 95 00:05:07,310 --> 00:05:10,780 >> Nyní jeden z nejlepších způsobů, které můžete získat další informace na toto téma 96 00:05:10,780 --> 00:05:14,700 je upřímně řečeno právě prostřednictvím Apple za předpokladu, dokumentaci k Swift. 97 00:05:14,700 --> 00:05:16,930 Je tu spousta API které jsou k dispozici. 98 00:05:16,930 --> 00:05:21,170 A to je dobrá domácí základna pro vás hledat, konkrétní věci, které 99 00:05:21,170 --> 00:05:23,020 chcete udělat s API zahrnující iOS. 100 00:05:23,020 --> 00:05:26,350 Chcete-li používat fotoaparát příklad, můžete začít hledat zde, 101 00:05:26,350 --> 00:05:32,540 a také používají Google a Stack Overflow, jako byste normálně. 102 00:05:32,540 --> 00:05:36,670 >> Jakékoli otázky týkající se této předtím, než jsme se skočit přímo? 103 00:05:36,670 --> 00:05:37,880 Dobře. 104 00:05:37,880 --> 00:05:38,700 Pokračujme. 105 00:05:38,700 --> 00:05:42,620 >> Takže nejprve, mám Počet například souborů. 106 00:05:42,620 --> 00:05:46,040 A budu se snažit do kroku přes ně relativně rychle. 107 00:05:46,040 --> 00:05:49,190 Toto je soubor Ahoj světe pro Swift. 108 00:05:49,190 --> 00:05:51,050 Je to velmi jednoduché. 109 00:05:51,050 --> 00:05:54,360 Je tu mnohem více komentáře než existují konkrétní kód. 110 00:05:54,360 --> 00:05:57,100 Všimněte si, že skutečná kódu je na samém dně na řádku 14. 111 00:05:57,100 --> 00:05:57,980 To říká, že tisk. 112 00:05:57,980 --> 00:05:59,820 A pak je to volání funkce. 113 00:05:59,820 --> 00:06:03,010 Jsme přecházet do ní Řetězec s názvem Ahoj cs50. 114 00:06:03,010 --> 00:06:04,750 Všimněte si, že je žádné středníky. 115 00:06:04,750 --> 00:06:07,010 Všimněte si, že není int main. 116 00:06:07,010 --> 00:06:10,392 Je tu žádný z Cruft, že jsme měli s C. 117 00:06:10,392 --> 00:06:15,020 Když jsme pomocí Swift tímto způsobem, který je právě napsal v textovém souboru 118 00:06:15,020 --> 00:06:18,340 a uloženy na mém počítači, pak Mohu zkompilovat a spustit jej. 119 00:06:18,340 --> 00:06:20,920 >> Všimněte si, že tady nejsem nepoužíváte CS50 IDE. 120 00:06:20,920 --> 00:06:24,460 To předpokládá, že jsem běh a že jsem na OS X, 121 00:06:24,460 --> 00:06:27,870 a že jsem Xcode již nainstalován Na tomto stroji, aby pro tento 122 00:06:27,870 --> 00:06:29,080 skutečně funkci. 123 00:06:29,080 --> 00:06:33,349 Ale to je jen normální textový soubor že se pak můžeme sestavit a upravovat. 124 00:06:33,349 --> 00:06:34,890 Tak uvidíme, jak to vlastně funguje. 125 00:06:34,890 --> 00:06:37,430 Co když chci, aby to kompilaci? 126 00:06:37,430 --> 00:06:40,450 swiftc 1.swift. 127 00:06:40,450 --> 00:06:42,960 Po chvilce nebo dvou, to uvidí, že máme nyní 128 00:06:42,960 --> 00:06:45,360 sestavil toto do souboru s názvem 1. 129 00:06:45,360 --> 00:06:51,090 A teď jsme tištěný naši CS50, naše Hello World aplikace poněkud. 130 00:06:51,090 --> 00:06:54,690 >> Všimněte si jednu věc jako dobře, je, že ve výchozím nastavení, 131 00:06:54,690 --> 00:07:00,090 jsme neměli zadávat a / n vytisknout nový řádek. 132 00:07:00,090 --> 00:07:05,315 Ve výchozím nastavení je funkce v tisku Swift vytiskne novou linku pro vás. 133 00:07:05,315 --> 00:07:09,284 Můžete předat fakultativní doplňková Parametr to říct, že tak neučiní. 134 00:07:09,284 --> 00:07:10,950 Ale Google pro více informací o to. 135 00:07:10,950 --> 00:07:13,450 Ve výchozím nastavení, bude to dělat tiskovou linku. 136 00:07:13,450 --> 00:07:16,420 >> Dobře, tak pojďme dál pak se na některé jiné. 137 00:07:16,420 --> 00:07:18,620 Tak jak můžeme vlastně definovat proměnné? 138 00:07:18,620 --> 00:07:21,960 Můžeme si dělat, že je to za použití jedné ze dvou metod. 139 00:07:21,960 --> 00:07:26,122 A ten, který chci vám říci, o Prvním z nich je tato definice let. 140 00:07:26,122 --> 00:07:27,830 A to je důležité protože účinně 141 00:07:27,830 --> 00:07:30,240 to, co děláme, je definování konstantu. 142 00:07:30,240 --> 00:07:34,010 Chystáme se vytvořit proměnnou, nebo spíše konstantní s názvem název, 143 00:07:34,010 --> 00:07:38,200 poskytovat k ní některé data-- v Tento případ, řetězec Dan. 144 00:07:38,200 --> 00:07:40,630 Ale pomocí tohoto LET klíčových slov, říkáme 145 00:07:40,630 --> 00:07:43,860 že tento proměnná-- nebo Znovu constant-- nazvaný 146 00:07:43,860 --> 00:07:46,220 jméno je nikdy být změněn. 147 00:07:46,220 --> 00:07:50,120 Je to bude neměnná po celou dobu doba trvání tohoto programu 148 00:07:50,120 --> 00:07:53,100 nebo po celou dobu trvání kontextu 149 00:07:53,100 --> 00:07:55,390 že tato proměnná je k dispozici. 150 00:07:55,390 --> 00:08:00,096 >> To je velmi důležité, že když máte nějaké data, která nejsou 151 00:08:00,096 --> 00:08:02,970 se změní ve vašem programu, a uvidíte celou řadu příkladů 152 00:08:02,970 --> 00:08:06,790 o tom, kdy chceme použít nechat proti druhé syntaxe 153 00:08:06,790 --> 00:08:11,040 je důležité, abyste používali nechat všude tam, kde je to možné, protože to přináší informace 154 00:08:11,040 --> 00:08:13,740 jazyk, který je nebude změněn, 155 00:08:13,740 --> 00:08:16,590 a může ve skutečnosti provést hodně optimalizací 156 00:08:16,590 --> 00:08:19,560 zlepšit rychlost a bezpečnost vašeho programu. 157 00:08:19,560 --> 00:08:24,480 A bezpečnost, myslím nenechám že havárie s bláznivými chybami 158 00:08:24,480 --> 00:08:27,910 že bychom mohli být zvyklí vídat v C. 159 00:08:27,910 --> 00:08:32,460 >> Pak můžeme použít řetězec interpolace zapouzdřit to v řetězci. 160 00:08:32,460 --> 00:08:35,200 Takže můžeme vidět v tom print linka, tisk ahoj, 161 00:08:35,200 --> 00:08:38,950 a pak pomocí zpětného lomítka otevřených parens, a pak jméno mého proměnné, 162 00:08:38,950 --> 00:08:41,809 v tomto případě konstantní, zavřete závorek. 163 00:08:41,809 --> 00:08:46,400 Já jsem v podstatě pak dosazení Obsah této proměnné s názvem jméno 164 00:08:46,400 --> 00:08:50,240 uvnitř řetězce a poté tisk tam výsledek. 165 00:08:50,240 --> 00:08:54,070 >> Je tu ještě jedna další změny tohoto souboru což je to, co mám, na samém vrcholu, 166 00:08:54,070 --> 00:08:57,340 dal do shebang linii, která v podstatě jen specifikuje 167 00:08:57,340 --> 00:09:00,180 že chci použít Swift interpret, který 168 00:09:00,180 --> 00:09:04,190 Znamená to, že jsem se již nemusí sestavit tento konkrétní program. 169 00:09:04,190 --> 00:09:06,567 Můžu jen spustit jej jako jeho vlastního scénáře. 170 00:09:06,567 --> 00:09:09,400 Ale to je v tomto případě, za scény shromažďuje a poté 171 00:09:09,400 --> 00:09:10,030 spuštěn. 172 00:09:10,030 --> 00:09:13,540 Je to jen na nás neviditelná. 173 00:09:13,540 --> 00:09:15,880 >> Dobře, tak pojďme dál. 174 00:09:15,880 --> 00:09:19,650 Takže tam to trochu podvodu že se právě stalo předtím. 175 00:09:19,650 --> 00:09:23,230 Ukázal jsem ti, že mohli definovat konstantu. 176 00:09:23,230 --> 00:09:25,490 A já jsem mohl poskytnout některé údaje na to. 177 00:09:25,490 --> 00:09:29,240 Ale v tomto případě, si všimněte, že jsem to neudělal ve skutečnosti určit typ dat 178 00:09:29,240 --> 00:09:29,820 to je ono. 179 00:09:29,820 --> 00:09:32,780 A to proto, že kompilátor, Swift může 180 00:09:32,780 --> 00:09:36,910 odvodit typ dat jen na základě Na základě údajů, které jsem do něho. 181 00:09:36,910 --> 00:09:41,760 Protože ví, že na základě vyhodnocení této variabilní tady, tato data vpravo 182 00:09:41,760 --> 00:09:43,370 tu, to ví, že je řetězec. 183 00:09:43,370 --> 00:09:48,690 A tak tato konstanta jméno tudíž bude řetězec stejně. 184 00:09:48,690 --> 00:09:52,730 >> Ale můžeme být i explicitní o typu, který je 185 00:09:52,730 --> 00:09:55,790 budeme používat pro konstanty nebo proměnné 186 00:09:55,790 --> 00:10:01,590 pomocí této syntaxe instead-- ať název tlustého střeva String rovná 187 00:10:01,590 --> 00:10:05,530 Dan, což v tomto případě znamená, že jsme bude definovat konstantní názvem jméno. 188 00:10:05,530 --> 00:10:07,150 Bude to být typu String. 189 00:10:07,150 --> 00:10:10,550 A hodnota bude Dan. 190 00:10:10,550 --> 00:10:12,550 Nyní na druhou stranu, které můžeme vytvořit variables-- 191 00:10:12,550 --> 00:10:15,549 a to jsou měnitelné proměnné, které znamená, že jsou ve skutečnosti děje 192 00:10:15,549 --> 00:10:19,670 změnit jejich obsah někdy v trvání kontextu 193 00:10:19,670 --> 00:10:23,890 že tato proměnná je defined-- my pomocí klíčového slova var místo pronájmu. 194 00:10:23,890 --> 00:10:27,400 Ale opět, ve výchozím nastavení, pokud nevíte, že je třeba manipulovat, že data, 195 00:10:27,400 --> 00:10:30,510 zkuste použít nechat pro zlepšení výkonu. 196 00:10:30,510 --> 00:10:33,740 >> V tomto případě, mohu pak specifikovat typ dat 197 00:10:33,740 --> 00:10:37,650 že očekáváme, že budeme uvnitř tato nová proměnná s názvem štítek. 198 00:10:37,650 --> 00:10:38,800 Bude to být řetězec. 199 00:10:38,800 --> 00:10:43,030 A budeme se spojíte dva řetězce dohromady, řetězec ahoj, 200 00:10:43,030 --> 00:10:48,070 a řetězec představována variabilní, nebo spíše konstantní název. 201 00:10:48,070 --> 00:10:50,660 >> Takže to je pěkné, protože to je poněkud PHP jako v té my 202 00:10:50,660 --> 00:10:52,250 mají velmi snadné řetězení řetězců. 203 00:10:52,250 --> 00:10:56,350 Nemáme automaticky použít libovolný druh paměťového řízení 204 00:10:56,350 --> 00:11:00,580 zvětšit velikost a dělat nějaký druh legračních věcí tam. 205 00:11:00,580 --> 00:11:05,040 To funguje jak bychom vlastně očekávat. 206 00:11:05,040 --> 00:11:09,370 >> Dobře, nějaké otázky o tom myslíte? 207 00:11:09,370 --> 00:11:12,520 >> Nyní se další důvod, proč potřebujeme, budete mít možnost 208 00:11:12,520 --> 00:11:15,490 aby bylo možné definovat, co typ datových proměnných 209 00:11:15,490 --> 00:11:18,170 Je to proto, někdy ne Chcete inicializovat proměnné 210 00:11:18,170 --> 00:11:21,080 s některými dat na bod definice. 211 00:11:21,080 --> 00:11:23,500 Takže v tomto případě, řekněme že chci začít zadání 212 00:11:23,500 --> 00:11:25,040 Některé stupně do úrovňové knihu. 213 00:11:25,040 --> 00:11:27,530 No já vím, že jedním z proměnné, které chci být 214 00:11:27,530 --> 00:11:30,280 se chystá být proměnlivý stupeň. 215 00:11:30,280 --> 00:11:33,010 A víme také, že my chci, aby to bylo celé číslo. 216 00:11:33,010 --> 00:11:36,030 Ale možná my dosud mají, že stupeň k dispozici. 217 00:11:36,030 --> 00:11:39,570 >> V Swift, musíte definovat typ dat 218 00:11:39,570 --> 00:11:44,000 který je spojen s proměnná nebo nechat na konstantní 219 00:11:44,000 --> 00:11:47,840 Než můžete skutečně použít tuto proměnnou. 220 00:11:47,840 --> 00:11:51,170 Vzhledem k tomu, že je silně napsaný, budete muset připojit typ 221 00:11:51,170 --> 00:11:52,890 s těmito proměnnými. 222 00:11:52,890 --> 00:11:56,120 >> Takže v tomto případě, pokud jsem správně inicializována nejprve s nějakou hodnotu, 223 00:11:56,120 --> 00:12:00,520 pak musím říci, co Swift Očekávám, že typ dat být. 224 00:12:00,520 --> 00:12:02,650 A to bude i nadále že stejný typ dat 225 00:12:02,650 --> 00:12:05,780 v celé historii tohoto programu. 226 00:12:05,780 --> 00:12:10,050 >> Nyní můžete být v pokušení, jakmile Vytvořil jsem tento stupeň proměnnou 227 00:12:10,050 --> 00:12:13,530 a pokud ji má celé číslo 100, teď, pokud I 228 00:12:13,530 --> 00:12:18,540 chcete zkusit zřetězit řetězec s tímto celé číslo, 229 00:12:18,540 --> 00:12:21,610 by mohl být v pokušení i nadále používat že provozovatel řetězec zřetězení 230 00:12:21,610 --> 00:12:24,500 jako jsme to udělali jen pár řádků předtím. 231 00:12:24,500 --> 00:12:26,460 Ale naneštěstí, Tím se vlastně není 232 00:12:26,460 --> 00:12:29,270 pracovat, protože jste v podstatě provádí 233 00:12:29,270 --> 00:12:32,380 operace na dvou různých typů. 234 00:12:32,380 --> 00:12:36,856 >> Nyní je to velmi odlišné od jiných jazyky jako PHP, které jsou opravdu 235 00:12:36,856 --> 00:12:38,480 loosey goosey s jejich druhem typů. 236 00:12:38,480 --> 00:12:40,030 Jsou stejně jako, jo, co, je mi to jedno. 237 00:12:40,030 --> 00:12:42,710 Dej mi jeden typ, a možná budu dělat správnou věc. 238 00:12:42,710 --> 00:12:46,060 >> V tomto případě, je Swift velmi přísná o typech 239 00:12:46,060 --> 00:12:47,350 že máte co do činění s. 240 00:12:47,350 --> 00:12:50,700 Tento operátor shrnutí nebo operátor zřetězení 241 00:12:50,700 --> 00:12:54,400 má v podstatě několik různých možností. 242 00:12:54,400 --> 00:12:56,970 Můžete to udělat shrnutí s celými čísly, nebo 243 00:12:56,970 --> 00:13:00,870 může dělat zřetězení, a možná některé další věci stejně. 244 00:13:00,870 --> 00:13:05,550 Ale pokud tento subjekt neuznává co je na jedné straně toho, 245 00:13:05,550 --> 00:13:10,452 nebo spíše jejich kombinaci dva druhy, není to, co to je očekával, 246 00:13:10,452 --> 00:13:11,910 pak to bude způsobit selhání. 247 00:13:11,910 --> 00:13:16,690 >> Takže v tomto případě, co to znamená mít řetězec plus celé číslo? 248 00:13:16,690 --> 00:13:18,880 Výhodně v kontextu toho jsme pravděpodobně chtít 249 00:13:18,880 --> 00:13:21,990 udělat operaci řetězec zřetězení. 250 00:13:21,990 --> 00:13:26,420 Ale samozřejmě je počítač nemá tento druh kontextu. 251 00:13:26,420 --> 00:13:29,950 A proto je třeba poskytnout že dodatečné informace 252 00:13:29,950 --> 00:13:32,390 aby mu vědět, co to je to, že chceme dělat. 253 00:13:32,390 --> 00:13:36,860 >> Takže jinými slovy, skutečnost, že Swift je silně zadali 254 00:13:36,860 --> 00:13:39,520 znamená, že musíte udělat trochu další práce 255 00:13:39,520 --> 00:13:42,100 aby si to k provozu tak, že byste chtěli. 256 00:13:42,100 --> 00:13:43,710 Avšak v důsledku toho, že je bezpečnější. 257 00:13:43,710 --> 00:13:46,290 A až budete mít vzít v úvahu tyto typy, 258 00:13:46,290 --> 00:13:49,300 věci prostě upřímně začít se docela dobře fungovat. 259 00:13:49,300 --> 00:13:52,520 >> Takže v tomto případě, a pak by se nám provést zřetězení 260 00:13:52,520 --> 00:13:56,040 výslovným odléváním celé číslo do řetězce 261 00:13:56,040 --> 00:13:58,490 od zabalením do této kapitál funkce S String, 262 00:13:58,490 --> 00:14:03,510 a pak pomocí metody zřetězení operátor změnit naši štítek proměnné, 263 00:14:03,510 --> 00:14:06,280 a pak ho vytisknout. 264 00:14:06,280 --> 00:14:08,420 >> Zatím je vše dobré? 265 00:14:08,420 --> 00:14:12,020 Dobře, pojďme dál. 266 00:14:12,020 --> 00:14:16,300 >> Nyní existuje celá řada údajů typy, které můžeme použít v Swift. 267 00:14:16,300 --> 00:14:21,620 Jak jste si zvykli na, můžeme vytvořit proměnlivý pole. 268 00:14:21,620 --> 00:14:26,140 Pouze A to pole může obsahovat jediný typ. 269 00:14:26,140 --> 00:14:30,360 >> Takže v tomto případě, budeme vytvářet mutabilní pole celých čísel, které 270 00:14:30,360 --> 00:14:34,800 budeme nazývat známky, a my budeme schopni pro ukládání, že v tomto hranatých závorkách 271 00:14:34,800 --> 00:14:38,650 Formát jak jste Zvykli v různých jiných jazyků. 272 00:14:38,650 --> 00:14:41,150 Ale všimněte si, že tady jsme definuje několik věcí. 273 00:14:41,150 --> 00:14:45,350 stupně je proměnlivý proměnná-- nebudeme používat nechat klíčové slovo. 274 00:14:45,350 --> 00:14:49,620 Takže to znamená, že můžeme potom upravit Obsah tohoto pole. 275 00:14:49,620 --> 00:14:53,420 To je typu Array Int, a můžeme říct, že 276 00:14:53,420 --> 00:14:56,260 na základě zde těchto hranatých závorkách. 277 00:14:56,260 --> 00:14:58,930 >> Nyní jeden z pěkných věcí na tom je, že jsme 278 00:14:58,930 --> 00:15:02,310 mají přístup k mnoha dodatečné informace 279 00:15:02,310 --> 00:15:07,110 o pole jen pomocí některé jednoduché tečka notace. 280 00:15:07,110 --> 00:15:10,500 Tak například, grades.count poskytuje nám 281 00:15:10,500 --> 00:15:14,820 počet položek, které existují v tom, že pole, které pak můžeme přistupovat pěkně 282 00:15:14,820 --> 00:15:19,090 snadno jednoduše pomocí této dot notace. 283 00:15:19,090 --> 00:15:21,830 >> Chcete-li přidat další položky na tomto poli, 284 00:15:21,830 --> 00:15:27,220 nemůžete dělat styl PHP kde stačí explicitně definovat, 285 00:15:27,220 --> 00:15:30,910 při daném indexu, nějaká hodnota které chcete vložit. 286 00:15:30,910 --> 00:15:37,210 Místo toho použijte append metoda v typu pole 287 00:15:37,210 --> 00:15:40,920 připojit této položky, 95, do tohoto seznamu. 288 00:15:40,920 --> 00:15:45,990 >> Takže teď to pole má následující contents-- 100, 0, 90, 85. 289 00:15:45,990 --> 00:15:49,270 A teď jsme připojen 95 se, že stejně. 290 00:15:49,270 --> 00:15:51,830 >> Existují i ​​jiné způsoby můžeme připojit věci. 291 00:15:51,830 --> 00:15:55,030 Můžete skutečně používat operátor sčítání, 292 00:15:55,030 --> 00:15:59,200 který bude interpretován jako operace pole přidávacího. 293 00:15:59,200 --> 00:16:04,680 A pak můžete připojit další pole, jehož obsah je 70 a 80, 294 00:16:04,680 --> 00:16:05,560 do této matice. 295 00:16:05,560 --> 00:16:08,250 Takže teď máme obsah v této proměnné 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 jen pěkný malý syntaktický cukr, který Swift poskytuje k nám. 298 00:16:21,850 --> 00:16:23,850 >> Takže pokud chceme sečíst stupně, jsme snad 299 00:16:23,850 --> 00:16:27,340 bude chtít opakovat nad každou položku v této smyčky. 300 00:16:27,340 --> 00:16:32,150 A my to mají v Swift, pojem ze smyčky for, jak byste očekávali. 301 00:16:32,150 --> 00:16:35,350 Ale způsob, jakým jsme naznačují, rozsah se mírně liší. 302 00:16:35,350 --> 00:16:37,790 Takže v tomto případě, aby Stručně řečeno všechno, budeme 303 00:16:37,790 --> 00:16:40,650 chystáte vytvořit dočasný proměnná nazývá suma, aby nás 304 00:16:40,650 --> 00:16:42,580 udržet tento počet. 305 00:16:42,580 --> 00:16:44,430 >> A všimněte si naši FOR stavba zde smyčka. 306 00:16:44,430 --> 00:16:46,820 Pro index v 0 .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Takže tato konstrukce, 0 .. 00:17:01,860 říká, že budeme vytvářet rozsah čísel od 0 nahoru 310 00:17:01,860 --> 00:17:05,750 se ale s vyloučením grades.count. 311 00:17:05,750 --> 00:17:09,577 Takže to bude mít hodnotu 0, 1, 2, 3, 4, 5, až do nicméně mnoho jeden 312 00:17:09,577 --> 00:17:10,410 Před grades.count. 313 00:17:10,410 --> 00:17:14,160 >> Takže tohle je něco jiného než to, jak jsme se se obvykle používají pro smyčky 314 00:17:14,160 --> 00:17:18,569 tam, kde byste mít nějaký index proměnná, nastavte ji na hodnotu 0 na první, 315 00:17:18,569 --> 00:17:25,480 a pak integrovat že až někteří hodnota menší než počet položek 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 modifikace k tomu, ve skutečnosti, 318 00:17:29,820 --> 00:17:35,010 což nám umožňuje velmi snadno nastavit různé typy rozsahů. 319 00:17:35,010 --> 00:17:40,570 Pokud změníte tento rozsah do tři tečky, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 to představuje rozsah 0 na grades.count včetně, 321 00:17:45,120 --> 00:17:49,260 což znamená, že toto číslo je také pak zahrnuty v tomto rozsahu. 322 00:17:49,260 --> 00:17:52,110 >> Ale to je velmi šikovný Pro tyto přesné věci, 323 00:17:52,110 --> 00:17:54,590 když máme provést iterace přes smyčku 324 00:17:54,590 --> 00:17:59,630 protože tyto indexy jsou indexovány nula, jak jsme viděli v jiných jazycích 325 00:17:59,630 --> 00:18:02,360 také. 326 00:18:02,360 --> 00:18:05,210 Jakékoli otázky týkající se této pro smyčce? 327 00:18:05,210 --> 00:18:10,660 >> Takže tam je implicitní definice tohoto indexu proměnné, 328 00:18:10,660 --> 00:18:14,350 jejichž hodnota začíná na 0, a pokračuje v každé smyčky iteraci 329 00:18:14,350 --> 00:18:17,950 zvýšit o 1 až do bodu, která se rovná grades.count, 330 00:18:17,950 --> 00:18:20,380 na kterém místě, smyčka přeruší. 331 00:18:20,380 --> 00:18:23,730 >> Všimněte si, že v našem řetězci Interpolace tady, 332 00:18:23,730 --> 00:18:26,910 skutečně můžeme provést některé jednoduché manipulace na tyto hodnoty. 333 00:18:26,910 --> 00:18:31,230 Takže index plus 1 budou skutečně provést shrnutí uvedené hodnoty 334 00:18:31,230 --> 00:18:34,780 proto, že index je, v Tento případ, celé číslo. 335 00:18:34,780 --> 00:18:37,810 A v tu chvíli, že bude pak být převedena na řetězec 336 00:18:37,810 --> 00:18:42,230 a interpolovat do tohoto řetězce tady, a vytisknout tak, jak bychom očekávali. , 337 00:18:42,230 --> 00:18:44,520 >> A pěkná věc o pole je zde 338 00:18:44,520 --> 00:18:50,730 že jsme také schopni mít Načítání hodnot a nastavení hodnoty 339 00:18:50,730 --> 00:18:54,080 pomocí hranatou závorku zápis jako jsme viděli v jiných jazycích. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> Dobře, takže odsud, máme nyní vypočítat náš součet všech našich tříd. 342 00:19:01,030 --> 00:19:02,780 Nyní druh příští logickým krokem by bylo 343 00:19:02,780 --> 00:19:07,580 udělat operaci divize najít se průměr těchto tříd. 344 00:19:07,580 --> 00:19:10,150 Ale něco důležitého Zde se děje, které 345 00:19:10,150 --> 00:19:15,020 je to, že tato částka je možná celé číslo. 346 00:19:15,020 --> 00:19:18,020 Ale my potřebujeme provést některé druh dvojího divize. 347 00:19:18,020 --> 00:19:20,600 A to bude nesmírně důležité, když 348 00:19:20,600 --> 00:19:24,140 Chceme k provedení této operace, protože to, co říkáme 349 00:19:24,140 --> 00:19:28,430 je to, že musíme skutečně provést rozdělení na dva dvoulůžkové. 350 00:19:28,430 --> 00:19:31,370 A znovu, protože Swift je velmi silně napsaný, 351 00:19:31,370 --> 00:19:36,760 musíme explicitně nastavit všechny položky k čtyřhře předtím jsme vlastně 352 00:19:36,760 --> 00:19:38,300 provedení této operace. 353 00:19:38,300 --> 00:19:40,550 >> Tak, aby pro nás vykonávat dvojí rozdělení, 354 00:19:40,550 --> 00:19:43,730 že to není dostačující jen jeden z těchto položek za double. 355 00:19:43,730 --> 00:19:46,400 Oba mají být double v pořadí pro SWIFT 356 00:19:46,400 --> 00:19:50,860 být jisti, že tento je to, co chceme dělat. 357 00:19:50,860 --> 00:19:54,360 Tak jsme se pak explicitně obsadit částka, kterou jsme vypočítán výše 358 00:19:54,360 --> 00:19:58,970 a počet tříd až zdvojnásobí, a proveďte této operace a obchod 359 00:19:58,970 --> 00:20:02,390 že do této nové proměnné, nebo spíše tato nová konstanta s názvem průměr, 360 00:20:02,390 --> 00:20:06,810 který bude mít jaký typ, si to představit? 361 00:20:06,810 --> 00:20:07,587 Dvoulůžkový pokoj, jo. 362 00:20:07,587 --> 00:20:09,420 Takže v tomto případě jsme Nemusíte to specifikovat 363 00:20:09,420 --> 00:20:13,450 protože to může být odvozena z Provoz jaký typ průměru dat 364 00:20:13,450 --> 00:20:14,730 bude. 365 00:20:14,730 --> 00:20:19,025 A Swift je obecně docela dobrý o tom, že schopný odvodit typy. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> Chcete vidět běžet, nebo mohu jít dál? 368 00:20:24,200 --> 00:20:25,640 Chci jít dál. 369 00:20:25,640 --> 00:20:28,130 Jakékoliv dotazy týkající se něco z toho? 370 00:20:28,130 --> 00:20:28,630 Skvělý. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Teď budeme začít se dostat do dobré stuff-- definování funkcí, 373 00:20:35,010 --> 00:20:39,090 a několik dalších typů, které jsou jedinečné Swift, že nemáte 374 00:20:39,090 --> 00:20:41,620 viděný v jiných jazycích až do tohoto bodu, 375 00:20:41,620 --> 00:20:46,290 ale jsou přítomny v jiné jazyky, které můžete najít později. 376 00:20:46,290 --> 00:20:48,210 Takže první, pokud chcete, pro definování funkce, 377 00:20:48,210 --> 00:20:52,170 ji definovat společně s funky slovem funkce, a pak název funkce, 378 00:20:52,170 --> 00:20:56,710 a pak se v závorkách, argumenty Chceme, aby funkci přijmout. 379 00:20:56,710 --> 00:21:00,280 Tyto argumenty musí také specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 musí rovněž určit typ dat, která jsou, pokud lze dovodit. 381 00:21:05,010 --> 00:21:07,500 A uvidíme, že jen málo námitka v jen trochu. 382 00:21:07,500 --> 00:21:09,920 >> Takže v tomto případě máme Funkce tzv printGradeCount. 383 00:21:09,920 --> 00:21:12,840 Budeme akceptovat proměnná-- nebo spíše v tomto případě, 384 00:21:12,840 --> 00:21:14,450 constant-- volal zadávání známek. 385 00:21:14,450 --> 00:21:18,517 A to bude mít zadejte pole celých čísel. 386 00:21:18,517 --> 00:21:20,600 Teď je tu něco, že je opravdu důležité zde 387 00:21:20,600 --> 00:21:21,849 že chci, abyste pochopili. 388 00:21:21,849 --> 00:21:27,560 To je to, že ve výchozím nastavení, jsou tyto argumenty které jsou vstupy do této funkce je 389 00:21:27,560 --> 00:21:34,380 definované s implicitní nechat klíčové slovo, což znamená, že nemůžu změnit to 390 00:21:34,380 --> 00:21:39,850 gradebook variabilní zde. 391 00:21:39,850 --> 00:21:43,360 A to nějak dává smysl, protože jste předávání dat dovnitř. 392 00:21:43,360 --> 00:21:45,860 A možná to nechci který má být změněn z pod tebou. 393 00:21:45,860 --> 00:21:50,800 Je možné výslovně uvést že se jedná o proměnnou tím, že 394 00:21:50,800 --> 00:21:52,070 VaR klíčové slovo zde. 395 00:21:52,070 --> 00:21:56,832 Ale to je chyták, že jsme všiml lidé dělali v minulosti 396 00:21:56,832 --> 00:21:59,790 je, že se předpokládá, že to bude být proměnná, když ve skutečnosti to 397 00:21:59,790 --> 00:22:02,640 je konstanta. 398 00:22:02,640 --> 00:22:07,340 >> Dobře, takže tady pak, v tomto případě, nejsme určující žádný typ návratu. 399 00:22:07,340 --> 00:22:09,460 Ukážeme vám, jak na to že za chvíli. 400 00:22:09,460 --> 00:22:12,340 Ale všimněte si, že tady máme jen jednoduchý, pokud stavu. 401 00:22:12,340 --> 00:22:14,560 V případě, že je gradebook prázdný, což v tomto případě 402 00:22:14,560 --> 00:22:19,310 je jen vlastnost tohoto integer pole, pak vytisknout něco. 403 00:22:19,310 --> 00:22:23,100 V opačném případě budeme dělat něco jiného. 404 00:22:23,100 --> 00:22:25,000 >> Velice jednoduché tak daleko myslím. 405 00:22:25,000 --> 00:22:27,960 Ale mě zastavit, pokud máte nějaké otázky. 406 00:22:27,960 --> 00:22:33,350 >> Nyní je tato funkce, průměr, také bere některé parametry, nebo spíše jeden argument, 407 00:22:33,350 --> 00:22:37,507 což je gradebook, a tentokrát se chystá vrátit dvojí typ. 408 00:22:37,507 --> 00:22:39,340 Vzhledem k tomu, že je výpočetní průměr a to je 409 00:22:39,340 --> 00:22:45,010 bude skutečně vrátit, že Vypočítaný průměr volající linky. 410 00:22:45,010 --> 00:22:50,070 >> V tomto případě jsme specifikovat vrátit typ po šipkou. 411 00:22:50,070 --> 00:22:53,260 A to mohou cítit trochu divný na prvním místě. 412 00:22:53,260 --> 00:22:55,610 Vyrostl jsi zvyklá ke stanovení návrat 413 00:22:55,610 --> 00:22:57,720 zadejte před název funkce. 414 00:22:57,720 --> 00:23:00,310 Ale pokud si myslíte, že to co se týče matematiky, 415 00:23:00,310 --> 00:23:03,320 jako když máte matematiku , které definují funkci, 416 00:23:03,320 --> 00:23:06,807 máte funkci s některými vstupy, a to produkuje výstup. 417 00:23:06,807 --> 00:23:08,890 A to je přesně to, co toto má napodobit. 418 00:23:08,890 --> 00:23:12,460 A je tu pár dalších jazyků které mají podobnou syntaxi stejně, 419 00:23:12,460 --> 00:23:15,674 ale asi nikdo, že jste viděli na CS50. 420 00:23:15,674 --> 00:23:17,090 Ale stále nemají být zmateni tím. 421 00:23:17,090 --> 00:23:21,650 Šipka znamená, že to, co se děje které mají být vráceny v tomto případě. 422 00:23:21,650 --> 00:23:23,650 OK, tak jak budeme vypočítat tento průměr? 423 00:23:23,650 --> 00:23:25,649 No, pokud se gradebook prázdný, no a pak jsme 424 00:23:25,649 --> 00:23:30,731 vracet 0, což možná rozumný způsob, jak zacházet toto. 425 00:23:30,731 --> 00:23:32,980 Nevím, pojďme přijít zpět, že v trochu. 426 00:23:32,980 --> 00:23:34,688 To může ve skutečnosti není být rozumný způsob, 427 00:23:34,688 --> 00:23:38,310 vypočítat průměr, pokud máme prázdnou zadávání známek. 428 00:23:38,310 --> 00:23:41,260 >> Pak prostě budeme hrát naši shrnutí. 429 00:23:41,260 --> 00:23:43,900 Všimněte si, že tady jsme vlastně mají alternativní verzi 430 00:23:43,900 --> 00:23:49,190 pro smyčce, což nám umožňuje iteraci nad každou jednotlivou položku v poli 431 00:23:49,190 --> 00:23:53,630 a umístit každý prvek do vlastního proměnné. 432 00:23:53,630 --> 00:23:56,200 Zadáním pro platové třídy gradebook, co říkáme 433 00:23:56,200 --> 00:24:00,560 je to, že budeme implicitně vytvořte novou konstantu nazvanou 434 00:24:00,560 --> 00:24:05,180 třída, která bude reprezentovat každý jedinečný položka v Gradebook 435 00:24:05,180 --> 00:24:06,769 pokaždé, když cyklus for iteruje. 436 00:24:06,769 --> 00:24:08,560 Takže poprvé, že je to běh, bude třída 437 00:24:08,560 --> 00:24:09,800 jako první položka v Gradebook. 438 00:24:09,800 --> 00:24:12,300 Podruhé, že to bude Druhým bodem, tak dále a tak dále 439 00:24:12,300 --> 00:24:15,970 až gradebook má vyčerpala prvků. 440 00:24:15,970 --> 00:24:20,390 Pak budeme moci sečíst, že třída do našeho součtu proměnné 441 00:24:20,390 --> 00:24:22,570 a vrátit Náš průměrný jak jsme viděli dříve. 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 OK, nějaké otázky? 444 00:24:26,950 --> 00:24:27,699 Ano? 445 00:24:27,699 --> 00:24:28,990 Diváků: Mám dvě otázky. 446 00:24:28,990 --> 00:24:33,586 Číslo jedna, hypoteticky, může spuštění celé číslo na tohle? 447 00:24:33,586 --> 00:24:35,604 Nemusí to být double, je to pravda? 448 00:24:35,604 --> 00:24:37,520 DAN AMRMENDARIZ: Můžete zopakovat na tuto otázku? 449 00:24:37,520 --> 00:24:39,587 Diváků: Mohu celé číslo, jako je průměr? 450 00:24:39,587 --> 00:24:41,670 DAN AMRMENDARIZ: Můžete dělat celé číslo jako průměr? 451 00:24:41,670 --> 00:24:45,015 Takže vrátit celé číslo Průměrná namísto double? 452 00:24:45,015 --> 00:24:48,204 >> Publikum: Return-- vás mají, že právě teď níže. 453 00:24:48,204 --> 00:24:49,870 DAN AMRMENDARIZ: Přímo tady, návrat 0.0? 454 00:24:49,870 --> 00:24:51,790 Publikum: Jo, jen vrátit 0. 455 00:24:51,790 --> 00:24:56,590 Takže to bude buď 80 nebo 85, ale ne 85,2. 456 00:24:56,590 --> 00:24:59,465 >> DAN AMRMENDARIZ: Takže v tomto případě, takže je tu pár různými způsoby 457 00:24:59,465 --> 00:25:00,090 odpovědět, že. 458 00:25:00,090 --> 00:25:02,760 Dovolte mi, abych na ně odpovědět v pořadí. 459 00:25:02,760 --> 00:25:06,740 Takže když jsem se, aby tento návrat 0, a 0 je celé číslo. 460 00:25:06,740 --> 00:25:09,730 A tak, že způsobí, že Chyba typu pro tento případ 461 00:25:09,730 --> 00:25:13,210 protože se očekává dvojité ale se pak vrací celé číslo. 462 00:25:13,210 --> 00:25:16,770 Pokud bych se chtěl vrátit celé číslo, můžu. 463 00:25:16,770 --> 00:25:20,450 Mohu nastavit návratový typ do int, vrátit 0 zde 464 00:25:20,450 --> 00:25:22,047 a neprovede dvojitou divize. 465 00:25:22,047 --> 00:25:23,880 Ale pak bychom byli dělá celočíselné dělení. 466 00:25:23,880 --> 00:25:27,080 A tak jsme pak by se dostat Průměrný že bychom možná očekávali. 467 00:25:27,080 --> 00:25:29,210 Ale ano, můžeme modifikovat typy tímto způsobem. 468 00:25:29,210 --> 00:25:32,598 >> Publikum: A za druhé, vás mají jeden dvoulůžkový na vrcholu. 469 00:25:32,598 --> 00:25:35,502 Ale dole, když vás dělat vrátit Dvoulůžkový, 470 00:25:35,502 --> 00:25:38,280 to je už automaticky vrácení Double formátu. 471 00:25:38,280 --> 00:25:42,278 Proč stále musíte definovat s šipkou na vrcholu s manželskou? 472 00:25:42,278 --> 00:25:45,010 >> DAN AMRMENDARIZ: So V případě, že je to součást 473 00:25:45,010 --> 00:25:50,580 z the-- tak opakovat otázku, protože je to implicitní z návratu 474 00:25:50,580 --> 00:25:56,030 typy zde, jaký typ to vlastně je, musíme být explicitní s Swift 475 00:25:56,030 --> 00:25:59,970 o tom, co chceme vrátit z této funkce 476 00:25:59,970 --> 00:26:02,690 tak, že když se provádí psaní kontrola, to může ujistěte se, 477 00:26:02,690 --> 00:26:05,850 že to, co jsme vlastně napsal dole vlastně odpovídá to. 478 00:26:05,850 --> 00:26:10,225 Takže je to něco jako šeku sami se nějak situace. 479 00:26:10,225 --> 00:26:11,050 Ale tam are-- 480 00:26:11,050 --> 00:26:12,560 >> Diváků: [Neslyšitelné] šíp? 481 00:26:12,560 --> 00:26:19,490 >> DAN AMRMENDARIZ: existují případy, kdy můžeme určit, že můžeme implicitně 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 případě, vůbec se mi nelíbí si myslí, že by to fungovalo. 484 00:26:23,940 --> 00:26:26,190 Je tu nějaký jiný syntax že uvidíme později. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> Dobře, takže tento zdroj kód je trochu jiný 487 00:26:35,280 --> 00:26:41,839 protože tento analyzuje argumenty z funkce, která voláme. 488 00:26:41,839 --> 00:26:44,130 Dovolte mi, abych vám ukázat, jak to funguje Než jsme se vlastně dál 489 00:26:44,130 --> 00:26:48,050 na některé zajímavé věci že se děje v Swift. 490 00:26:48,050 --> 00:26:51,870 >> Takže v tomto případě, když jsem jen spustit tento kódu, Všimněte si, že to, co dělá 491 00:26:51,870 --> 00:26:54,900 je-- zatímco to druh dává mi divný chybu. 492 00:26:54,900 --> 00:26:59,730 Musím předat pár celá čísla jako argument příkazového řádku. 493 00:26:59,730 --> 00:27:06,220 Tak uvidíme, 150 a 80, a stiskněte klávesu Enter zjistit, co je to vlastně dělá. 494 00:27:06,220 --> 00:27:09,890 Je to přijetí každého z tyto hodnoty jsou celá čísla. 495 00:27:09,890 --> 00:27:12,040 Je vkládání je do Gradebook. 496 00:27:12,040 --> 00:27:14,470 A pak je to předvádění že průměrný výpočet 497 00:27:14,470 --> 00:27:16,650 a výstup, který, jak bychom očekávali. 498 00:27:16,650 --> 00:27:19,950 >> Ale samozřejmě že se něco děje na této zamítá něčím 499 00:27:19,950 --> 00:27:23,300 něco jako celé číslo. 500 00:27:23,300 --> 00:27:27,300 Jak jste si možná pamatujete z doby, kdy jsme byli jednání s argumenty příkazového řádku 501 00:27:27,300 --> 00:27:32,640 v C a dalších jazycích, úplně první 0-tý položka v tomto argumentu příkazového řádku 502 00:27:32,640 --> 00:27:35,774 Seznam je název příkazu že jsme vlastně popraven. 503 00:27:35,774 --> 00:27:38,690 Takže v tomto případě, já jsem jen opakování přes všechny argumenty příkazového řádku se. 504 00:27:38,690 --> 00:27:41,650 Ale já nedělám žádný druh Fancy zkontrolujte, přeskočit, že první z nich. 505 00:27:41,650 --> 00:27:45,920 Jsem jen explicitně nebo implicitně, že jsem kontroly, které z těchto typů 506 00:27:45,920 --> 00:27:49,900 jsou celá čísla, než jsem ve skutečnosti provedení tohoto výpočtu. 507 00:27:49,900 --> 00:27:52,420 >> A to je v podstatě co se tady děje. 508 00:27:52,420 --> 00:27:55,860 Pro každý argument argumenty procesu, 509 00:27:55,860 --> 00:27:59,210 Budu vykonávat nějakou kontrolu. 510 00:27:59,210 --> 00:28:01,970 A v tomto případě, jdu pokusit se nejdříve převést 511 00:28:01,970 --> 00:28:07,620 tento argument na celé číslo od provedením explicitní obsadit, 512 00:28:07,620 --> 00:28:12,310 proto, že je, na vstupu, řetězec a nikoli ve skutečnosti celé číslo. 513 00:28:12,310 --> 00:28:18,140 >> Ale to je trochu divný syntaxe, pokud nechat dílek odpovídá Int (argumentu). 514 00:28:18,140 --> 00:28:21,120 Co se vlastně děje zde je extrémně 515 00:28:21,120 --> 00:28:24,390 důležité, aby vaše pomocí Swift. 516 00:28:24,390 --> 00:28:27,610 To je to, co je s použitím volal volitelný typ. 517 00:28:27,610 --> 00:28:34,790 >> Takže tato funkce Int (argumentu), vrátí nejen celé číslo, ale vrátí 518 00:28:34,790 --> 00:28:37,470 co se nazývá volitelný celé číslo. 519 00:28:37,470 --> 00:28:41,200 A tak to je druh typu na vrcholu typu. 520 00:28:41,200 --> 00:28:45,900 Můžete nějak si to představit jako je to vrací jako balíček. 521 00:28:45,900 --> 00:28:47,750 A když otevřete, že balíček, buď 522 00:28:47,750 --> 00:28:53,930 má celé číslo, které je výsledkem, nebo má v ní absolutně vůbec nic. 523 00:28:53,930 --> 00:28:58,140 A to je užitečný jako kontroly chybový mechanismus, protože v tomto případě 524 00:28:58,140 --> 00:29:02,080 můžeme zjistit, byl tento typ konverze úspěšná? 525 00:29:02,080 --> 00:29:05,810 Pokud by to bylo, pak to je ve skutečnosti bude mít celé číslo uvnitř. 526 00:29:05,810 --> 00:29:08,750 V opačném případě, že to bude mít nějaký hodnota, kterou budeme nazývat nevyužity, 527 00:29:08,750 --> 00:29:10,920 vyjadřující není celé číslo vůbec. 528 00:29:10,920 --> 00:29:13,270 Je to opravdu reprezentativní ničeho. 529 00:29:13,270 --> 00:29:18,130 >> A tak, pokud konstrukce nám umožňuje rozbalit ten balíček, 530 00:29:18,130 --> 00:29:19,850 že volitelná vazba. 531 00:29:19,850 --> 00:29:25,560 A pokud jsme schopni rozbalovat, že balit a najít celé číslo uvnitř, 532 00:29:25,560 --> 00:29:27,720 pak to, co říkáme Zde je, že jsme se pak 533 00:29:27,720 --> 00:29:33,090 dovolit, aby hodnota, která bude uvedena do tato konstanta s názvem stupeň. 534 00:29:33,090 --> 00:29:36,590 A tato část if, horní část if 535 00:29:36,590 --> 00:29:40,390 poběží, protože to Vybalte byl úspěšný. 536 00:29:40,390 --> 00:29:43,290 >> Pokud to jen tak se stane, že došlo k chybě možná 537 00:29:43,290 --> 00:29:47,040 V tomto explicitní konverzi typu z řetězce na celé číslo, možná 538 00:29:47,040 --> 00:29:49,160 je to hodnota ABC např. 539 00:29:49,160 --> 00:29:52,120 A to vlastně nebude převést na celé číslo. 540 00:29:52,120 --> 00:29:55,520 Pak se vrátí nil, což není celé číslo. 541 00:29:55,520 --> 00:29:57,570 A to if i poté nezdaří. 542 00:29:57,570 --> 00:30:01,930 třída nebude existovat, protože nemá celočíselné obsah. 543 00:30:01,930 --> 00:30:06,391 A to bude spustit tento jiný blok místo. 544 00:30:06,391 --> 00:30:06,890 Ano? 545 00:30:06,890 --> 00:30:09,652 >> Diváků: Nil je N-I-L? 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ: nil je N-I-L, ano. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> Takže to je možná jeden z nejtěžších věcí, o Swift, 549 00:30:20,310 --> 00:30:23,690 zvláště když jste v plevele na app iOS 550 00:30:23,690 --> 00:30:27,442 a jste vlastně pokoušíte udělat nějaké rozvoje tam. 551 00:30:27,442 --> 00:30:29,400 Je to bude řvát na tebe asi nepovinná. 552 00:30:29,400 --> 00:30:33,050 Je to bude vás s žádostí o otazníky a vykřičníky. 553 00:30:33,050 --> 00:30:37,100 Ale jakmile jste zjistili out-- pokud vás věnovat nějaký čas přemýšlením, 554 00:30:37,100 --> 00:30:41,990 co se děje s volitelnými typy, ušetříte si spoustu bolesti hlavy 555 00:30:41,990 --> 00:30:46,040 jak se snažíte napsat aplikaci v Swift. 556 00:30:46,040 --> 00:30:47,660 >> Je to vlastně velmi výkonné funkce. 557 00:30:47,660 --> 00:30:49,826 A budete mít jen vzít mé slovo pro to nyní. 558 00:30:49,826 --> 00:30:52,620 Ale uvidíme tuto konstrukci a někteří jiní to líbí 559 00:30:52,620 --> 00:30:56,740 V některých jiných zdrojového kódu, který vám ukážeme v jen trochu. 560 00:30:56,740 --> 00:31:00,440 >> Jsou nějaké prvními otázkami tady? 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 jídlo s sebou volitelný typ je jakýsi metatype. 563 00:31:08,690 --> 00:31:12,500 To má buď hodnotu, a pokud ano, pak to 564 00:31:12,500 --> 00:31:18,110 bude možná muset tuto hodnotu spojenou s tím, nebo to nemá žádnou hodnotu vůbec, 565 00:31:18,110 --> 00:31:19,620 a je reprezentována nulovou. 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 Zbytek je možná jak byste očekávali. 568 00:31:28,870 --> 00:31:32,900 >> Takže pojďme rozjet obtížnost ještě jednou. 569 00:31:32,900 --> 00:31:37,070 A tentokrát, pojďme se podívat na některé Jiné typy dat, které skutečně existují. 570 00:31:37,070 --> 00:31:41,290 Jedním z nich je slovníky, který je velmi podobný Pythonu slovníků. 571 00:31:41,290 --> 00:31:48,270 Je to trochu podobné hash tabulky v C. Je to v podstatě mapování kláves 572 00:31:48,270 --> 00:31:49,820 kde klíče mohou být řetězce. 573 00:31:49,820 --> 00:31:52,670 A když se podíváte na ty klíče, tyto klávesy bude mít hodnotu. 574 00:31:52,670 --> 00:31:56,020 Takže to není úplně pole, ale místo toho, více úzce spojena 575 00:31:56,020 --> 00:31:58,810 na mapu hash nebo hash tabulky. 576 00:31:58,810 --> 00:32:02,420 >> Podívejme se, jak se to má do práce, než jsme vlastně 577 00:32:02,420 --> 00:32:05,210 jít do zdrojového kódu samotného. 578 00:32:05,210 --> 00:32:07,680 Pokud bych jen spustit to, nic se neděje. 579 00:32:07,680 --> 00:32:12,430 To mi říká, že jsem očekával některé parametry následujícího typu. 580 00:32:12,430 --> 00:32:16,050 Takže budu poskytovat to nějaký problém nastavit jména, 581 00:32:16,050 --> 00:32:18,490 tak pset0, možná jsem 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 pak se na zkoušku, I dělal opravdu dobře a dostal 30. 584 00:32:24,630 --> 00:32:27,180 A pardon, jsem trefil prostor zde. 585 00:32:27,180 --> 00:32:30,940 >> Když jsem stiskněte klávesu Enter, můžete vidět že provádí některé výpočty. 586 00:32:30,940 --> 00:32:33,740 To říká, že jsou tři gradebook stupně, pset1, pset0, zkouška. 587 00:32:33,740 --> 00:32:36,120 A gradebook má tento specifický průměr. 588 00:32:36,120 --> 00:32:38,370 Takže znovu, pracujeme s tímto Gradebook myšlenkou, 589 00:32:38,370 --> 00:32:44,650 ale budeme pokračovat v iteraci s složitosti naší funkce. 590 00:32:44,650 --> 00:32:47,650 >> Takže na začátku, jsme jen bude vytvořit funkci, která 591 00:32:47,650 --> 00:32:49,390 je zodpovědný za tisk použití. 592 00:32:49,390 --> 00:32:51,920 A tam je to východ funkci, která bude jen 593 00:32:51,920 --> 00:32:53,710 násilně ukončit aplikaci. 594 00:32:53,710 --> 00:32:56,530 To není něco, budete používat v iOS app. 595 00:32:56,530 --> 00:32:59,750 Toto je pouze v tomto případě, s argument příkazového řádku. 596 00:32:59,750 --> 00:33:01,990 Dále začneme směrem k Xcode. 597 00:33:01,990 --> 00:33:07,760 Ale to je specifický pro příkazu čáry program Swift. 598 00:33:07,760 --> 00:33:11,490 >> Pojďme se podívat na některé z zajímavé věci zde. 599 00:33:11,490 --> 00:33:15,150 Pojďme se podívat, jen pár zajímavé věci zmínit snad 600 00:33:15,150 --> 00:33:19,930 je to, že ve své funkci tisk počtu stupňů, 601 00:33:19,930 --> 00:33:26,090 můžete připomenout, že jsem měl ten seznam z items-- pset1, pset0 a zkouškou. 602 00:33:26,090 --> 00:33:29,130 Můžete skutečně rychle a to snadno udělat 603 00:33:29,130 --> 00:33:34,490 tím, že na zadávání známek, což je Slovník, který má klíče a hodnoty. 604 00:33:34,490 --> 00:33:38,730 Najít všechny klíče je přes Metoda, kterou zde dot klíče, 605 00:33:38,730 --> 00:33:43,180 a poté použijte tuto joinWithSeparator, které se pak všechny klíče 606 00:33:43,180 --> 00:33:48,590 které jsme psali v, pset1-- nebo Omlouvám se, pset0, pset1, a exam-- 607 00:33:48,590 --> 00:33:53,030 a zřetězit je dohromady pomocí čárku a mezeru 608 00:33:53,030 --> 00:33:55,400 vytvořit jeden dlouhý řetězec. 609 00:33:55,400 --> 00:34:00,190 To připojit operace je jen fenomenálně užitečné v různých souvislostech. 610 00:34:00,190 --> 00:34:03,450 A tak je to právě tato joinWithSeparator. 611 00:34:03,450 --> 00:34:06,939 >> A to je jedna věc, která je změnilo od Swift 1 Swift 2. 612 00:34:06,939 --> 00:34:08,730 Tam bývala Python style-- pokud jste 613 00:34:08,730 --> 00:34:13,219 obeznámeni s Python-- python styl připojit metodou na řetězcích. 614 00:34:13,219 --> 00:34:15,699 Ale to už není případ Swift 2. 615 00:34:15,699 --> 00:34:19,400 Chcete-li použít, pokud chcete, zřetězit řadu věcí 616 00:34:19,400 --> 00:34:23,380 spolu s řetězcem. 617 00:34:23,380 --> 00:34:27,889 >> Tak snad pak v naší diskuse o průměru dříve, 618 00:34:27,889 --> 00:34:32,659 to dělá trochu větší smysl pro nás nastavit průměrnou funkci 619 00:34:32,659 --> 00:34:36,610 být případná dvojná spíše než jen explicitní double. 620 00:34:36,610 --> 00:34:39,239 Vzhledem k tomu, že jsme měli neobvyklý stav, kdy, 621 00:34:39,239 --> 00:34:41,550 Co když gradebook vlastně nemá žádné hodnoty v rámci ní? 622 00:34:41,550 --> 00:34:44,280 Jaký by měl průměrný výnos? 623 00:34:44,280 --> 00:34:46,350 >> No, možná budete v C by udělal něco 624 00:34:46,350 --> 00:34:50,040 jako předpokladu hodnotu Sentinel jako 0,0, nebo možná záporné číslo, 625 00:34:50,040 --> 00:34:53,690 nebo něco, co jen reprezentovat skutečnost, že tam byla nějaká chyba podmínku 626 00:34:53,690 --> 00:34:57,910 a vy možná nejsou ve skutečnosti mít schopnost vypočítat uvedený průměr. 627 00:34:57,910 --> 00:35:05,590 No krása zadáním volitelný typ by se to udělat. 628 00:35:05,590 --> 00:35:09,540 A já jsem teď říkal všechna tato slova, ale to vlastně nepoužívá Volitelně. 629 00:35:09,540 --> 00:35:12,970 Ale uvidíme, že v právě minuty, kde můžeme nastavit průměr 630 00:35:12,970 --> 00:35:17,230 být nepovinný datový typ tak, aby pokud to vlastně vrací některé údaje, pak 631 00:35:17,230 --> 00:35:18,470 vrátíme se, že data. 632 00:35:18,470 --> 00:35:20,570 V opačném případě se vrátíme nil, říká, že toto 633 00:35:20,570 --> 00:35:22,200 nemá žádný smysluplný výpočet. 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> Pojďme k něčemu jinému. 636 00:35:28,570 --> 00:35:35,910 Takže z tady, jsme se při pohledu na všechny tyto příklady v příkazovém řádku. 637 00:35:35,910 --> 00:35:39,470 Ale opravdu to, co budete se bude zabývat, je Xcode. 638 00:35:39,470 --> 00:35:43,720 A jedna z pěkné věci o Xcode je, a konkrétně v Swift, 639 00:35:43,720 --> 00:35:47,450 je, že máme tento čemu se říká dětské hřiště. 640 00:35:47,450 --> 00:35:51,470 A dětské hřiště, je vůbec app iOS. 641 00:35:51,470 --> 00:35:54,751 Ale to vám umožní experimentovat s Swift ve velmi jednoduchým způsobem. 642 00:35:54,751 --> 00:35:56,000 Můžete zadat všechny vaše kódu. 643 00:35:56,000 --> 00:35:58,140 Je to pěkně syntaxi zde zvýrazněny. 644 00:35:58,140 --> 00:36:01,600 Při vytvoření nového souboru, zeptá se vy, pokud chcete vytvořit dětské hřiště. 645 00:36:01,600 --> 00:36:08,720 Ale pěkná věc, o Playground je to, že na pravé části okna, 646 00:36:08,720 --> 00:36:12,020 to vlastně ukáže, Výstup z kódu. 647 00:36:12,020 --> 00:36:16,110 Takže když jsem se posunout dolů, můžeme vidět, co výstup různých řádků kódu 648 00:36:16,110 --> 00:36:17,200 ve skutečnosti se stane být. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> Takže v tomto případě, jdeme změnili směr jen trochu 651 00:36:26,790 --> 00:36:30,960 a mluvit o něčem, co je opravdu důležité této vysoké úrovně způsobem 652 00:36:30,960 --> 00:36:34,020 že Swift provozuje, a to je tento nápad, uzávěrů. 653 00:36:34,020 --> 00:36:36,960 A pravděpodobně jste viděl trochu v JavaScriptu. 654 00:36:36,960 --> 00:36:40,770 Pro ty z vás, které jsou v CS50, uzávěry 655 00:36:40,770 --> 00:36:47,240 jsou velmi populární, velmi dobrý způsob, jak dělat na vysoké úrovni, co v moderních jazycích. 656 00:36:47,240 --> 00:36:50,270 Ale je to také trochu obtížné zabalit hlavu kolem poprvé. 657 00:36:50,270 --> 00:36:52,269 Takže pokud se podíváme na to Poprvé, to je v pořádku. 658 00:36:52,269 --> 00:36:56,740 Stačí se podívat na zdrojový kód a vidět pokud můžete přijít na to doma. 659 00:36:56,740 --> 00:37:01,050 >> Takže v tomto případě, řekněme, že jsme chcete vytvořit mnoho exponentů 660 00:37:01,050 --> 00:37:04,134 s nějakou pevnou hodnotu. 661 00:37:04,134 --> 00:37:05,800 Takže v tomto případě mohu vytvořit funkci. 662 00:37:05,800 --> 00:37:09,270 Budu říkat moc 2, jejichž jediným cílem v životě 663 00:37:09,270 --> 00:37:15,770 je vzít nějaký vstup a double to, a vrátí tuto hodnotu. 664 00:37:15,770 --> 00:37:21,210 Všimněte si, že jsem tady přijímá jeden typ dat. 665 00:37:21,210 --> 00:37:23,137 Bude to být proměnná s názvem x. 666 00:37:23,137 --> 00:37:23,970 To je typu Double. 667 00:37:23,970 --> 00:37:26,190 A já jdu vrátit dvojitým zde. 668 00:37:26,190 --> 00:37:29,100 A já jsem prostě jít dělat velmi, upřímně řečeno, docela 669 00:37:29,100 --> 00:37:32,650 naivní způsobem zdvojnásobit tuto hodnotu. 670 00:37:32,650 --> 00:37:35,600 A já vám ukážu, proč tento je užitečné v jen sekundy. 671 00:37:35,600 --> 00:37:40,418 >> Všimněte si, že zde máme tuto nabídku znovu. něco v 1, dot 672 00:37:40,418 --> 00:37:44,130 dot dot, 2, což znamená, že tato smyčka bude probíhat dvakrát. 673 00:37:44,130 --> 00:37:46,480 Ale to představuje fiktivní proměnnou. 674 00:37:46,480 --> 00:37:49,650 To znamená, že jsem to opravdu bude lze pomocí tohoto proměnné kdekoliv 675 00:37:49,650 --> 00:37:51,070 uvnitř této smyčky. 676 00:37:51,070 --> 00:37:55,380 Chci jen tento řádek kódu spustit dvakrát, 677 00:37:55,380 --> 00:37:58,980 aniž by museli vědět, je hodnota tohoto rozmezí. 678 00:37:58,980 --> 00:38:02,570 >> Takže v tomto případě Běžím výsledek časy x dvakrát, které v podstatě 679 00:38:02,570 --> 00:38:06,560 Znamená to, že jsem kvadratura tuto hodnotu. 680 00:38:06,560 --> 00:38:10,230 A to se stane práce, jak bychom očekávali. 681 00:38:10,230 --> 00:38:16,410 Síla 2, předáním hodnoty 2.0 nám dává výkon 4. 682 00:38:16,410 --> 00:38:18,810 3.2 práce pro 10,24. 683 00:38:18,810 --> 00:38:22,660 >> Teď si můžeme dělat podobné věc pro sílu 3. 684 00:38:22,660 --> 00:38:25,330 Ale teď změní pouze rozsah. 685 00:38:25,330 --> 00:38:28,840 Pro dummy proměnné v 1 až 3, násobit 3 krát, 686 00:38:28,840 --> 00:38:29,830 a udělat to samé. 687 00:38:29,830 --> 00:38:32,240 >> Takže to může cítit trochu nepřirozený. 688 00:38:32,240 --> 00:38:34,270 Ale je to důležitá věc, která zde 689 00:38:34,270 --> 00:38:37,770 je to, že při pohledu na tyto dvě funkce, je tu 690 00:38:37,770 --> 00:38:43,600 jen jedna věc, to je něco jiného, která je tato hodnota v rozmezí. 691 00:38:43,600 --> 00:38:46,910 Vše ostatní o těchto dvou Funkce, výkon 3 a síla 2, 692 00:38:46,910 --> 00:38:50,440 jsou ve skutečnosti, shodné, nebot pracují stejným způsobem. 693 00:38:50,440 --> 00:38:53,460 >> Takže v tomto bodě, trochu poplach je třeba jít pryč. 694 00:38:53,460 --> 00:38:56,200 Doufejme, že to, co říkáte, Víte, to cítí trochu 695 00:38:56,200 --> 00:38:59,250 jako zdvojení úsilí. 696 00:38:59,250 --> 00:39:02,950 Možná, že existuje způsob, že bych bylo možné zapouzdřit to vše 697 00:39:02,950 --> 00:39:06,630 a zajistit funkci nebo vytvořit funkci, která 698 00:39:06,630 --> 00:39:11,550 dělá přesně to, co chci, aniž museli psát to explicitně. 699 00:39:11,550 --> 00:39:15,732 A to je to, co síla o uzavření nám umožňuje dělat. 700 00:39:15,732 --> 00:39:16,940 Takže pojďme se podívat na to. 701 00:39:16,940 --> 00:39:18,700 A já budu strávit pár minut na to, protože to 702 00:39:18,700 --> 00:39:20,310 je docela důležité pro Swift. 703 00:39:20,310 --> 00:39:22,900 Vidíme to po celou dobu. 704 00:39:22,900 --> 00:39:24,550 Chystáme se definování funkce. 705 00:39:24,550 --> 00:39:26,380 Bude to být nazýván powerOf. 706 00:39:26,380 --> 00:39:29,470 Bude to akceptovat Parametr volal y typu int. 707 00:39:29,470 --> 00:39:32,220 Ale podívejte se na návratový typ. 708 00:39:32,220 --> 00:39:38,730 Návratový typ je v závorky, dvojitou šipku Double. 709 00:39:38,730 --> 00:39:43,370 Což znamená, že tuto funkci, tato funkce powerOf, 710 00:39:43,370 --> 00:39:46,550 vrací funkce. 711 00:39:46,550 --> 00:39:50,845 To znamená přijetí Double a vrácení Double. 712 00:39:50,845 --> 00:39:53,720 Takže to může znít druh šílený, ale pojďme nalistujte trochu 713 00:39:53,720 --> 00:39:55,060 a podívat se, co se stane. 714 00:39:55,060 --> 00:39:57,910 Jsme uvnitř této funkce powerOf. 715 00:39:57,910 --> 00:40:00,760 Jsme vytvoření nové funkce volal exponentiator, 716 00:40:00,760 --> 00:40:02,900 ale nezáleží na tom, co to je. 717 00:40:02,900 --> 00:40:06,410 >> Všimněte si, že tento má vstupní hodnota x. 718 00:40:06,410 --> 00:40:09,910 A to je přičemž v dvoulůžkovém a vrácení Double. 719 00:40:09,910 --> 00:40:16,320 A to je stejný kód, který jsme viděli výše, kromě toho, že na hodnotu 2 720 00:40:16,320 --> 00:40:20,060 nebo hodnotu 3, a to horní hranici v tomto rozmezí, 721 00:40:20,060 --> 00:40:23,210 byl nahrazen tato hodnota y, který 722 00:40:23,210 --> 00:40:27,230 byl první parametr naší powerOf funkce. 723 00:40:27,230 --> 00:40:31,700 A v tomto bodě, my vrátit exponentiator. 724 00:40:31,700 --> 00:40:33,345 Jsme vrácení funkce. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> Je to něco jako malý mysl vyfukování. 727 00:40:39,550 --> 00:40:44,360 Ale pojďme si představit, co se stane, Když jsem tuto funkci volat powerOf 728 00:40:44,360 --> 00:40:47,610 a přecházejí do něj nějakou hodnotu jako 2. 729 00:40:47,610 --> 00:40:50,020 Co to znamená, že Mám nyní hodnotu 730 00:40:50,020 --> 00:40:55,130 2 pro y, což znamená, že tuto hodnotu y v této funkci 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 Vracím to Funkce exponentiator. 733 00:41:01,290 --> 00:41:05,900 >> Takže upozornění, co Swift říká, že vytvořili v tomto případě. 734 00:41:05,900 --> 00:41:10,550 nechť náměstí je definice, že je to funkce, která přijímá Double 735 00:41:10,550 --> 00:41:12,610 a vrátí double. 736 00:41:12,610 --> 00:41:16,590 Vytvořil jsem funkci že čtverců něco 737 00:41:16,590 --> 00:41:19,782 použití tohoto mechanismu tady. 738 00:41:19,782 --> 00:41:22,490 A opravdu to, co se děje, je že se vrací tuto funkci 739 00:41:22,490 --> 00:41:26,390 exponentiator, ale tato hodnota y je zabalen uvnitř ní. 740 00:41:26,390 --> 00:41:31,080 A tak teď pokaždé, když jsem použít proměnná nebo tato konstanta s názvem 741 00:41:31,080 --> 00:41:35,180 čtverec, to bude to chovat jako funkci. 742 00:41:35,180 --> 00:41:39,960 A tak jsem se pak volat, že proměnné jako bych nazval funkci, 743 00:41:39,960 --> 00:41:43,830 a předat do něj číslo, jako je v tomto případě 3. 744 00:41:43,830 --> 00:41:45,910 A já se pak náměstí tuto hodnotu. 745 00:41:45,910 --> 00:41:53,340 Takže 3 druhou pak stát 9, jak můžeme vidět zde. 746 00:41:53,340 --> 00:41:56,530 >> Opravdu blázen, ale teď Umožňuje mi příležitost 747 00:41:56,530 --> 00:41:59,040 vytvořit jiné powerOf funkce. 748 00:41:59,040 --> 00:42:03,680 Jako mohu říci, v pořádku, no teď chci vytvořit novou funkci, powerOf (3), 749 00:42:03,680 --> 00:42:06,290 a uložit, že na A konstantní nazvaný krychle. 750 00:42:06,290 --> 00:42:10,220 A teď krychle bude být samostatná funkce, které pak bude 751 00:42:10,220 --> 00:42:14,800 trvat nějakou hodnotu jako vstup a krychle hodnota jako můžeme vidět na dolním řádku 752 00:42:14,800 --> 00:42:16,420 zde. 753 00:42:16,420 --> 00:42:18,590 kostka 2 bude mít za následek 8. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> Doufejme, že docela pěkné věci. 756 00:42:22,680 --> 00:42:25,920 Vy jste nikdy neviděli. 757 00:42:25,920 --> 00:42:29,990 Doporučuji vám podívat se do uzávěry a zkoumat to trochu víc. 758 00:42:29,990 --> 00:42:33,570 Je to opravdu silný věc vidíme hodně v JavaScriptu a některých jiných jazyků. 759 00:42:33,570 --> 00:42:37,160 Je to opravdu velmi důležité pochopení API stejně 760 00:42:37,160 --> 00:42:38,620 že se dostaneme do pár sekund. 761 00:42:38,620 --> 00:42:39,456 Ano? 762 00:42:39,456 --> 00:42:43,740 >> Diváků: Pokud tak učiníte powerOf (2), závorka, a poté 763 00:42:43,740 --> 00:42:48,764 další závorka, další input-- jste v podstatě výměnou náměstí. 764 00:42:48,764 --> 00:42:50,930 DAN AMRMENDARIZ: Tak se podívejte na poslední řádek zde. 765 00:42:50,930 --> 00:42:55,930 Je to ve skutečnosti zcela možné tomu, že řetězení, jak jste navrhl. 766 00:42:55,930 --> 00:43:00,990 Takže powerOf (5), znamená to, že jedeme mít exponentiator z 5 sem. 767 00:43:00,990 --> 00:43:04,160 Takže to je v podstatě bude být totéž jako 4 až páté síle, 768 00:43:04,160 --> 00:43:07,200 proto, že jsme vytvořili exponentiating fungují tak, že na páté silové, 769 00:43:07,200 --> 00:43:09,920 a my jsme přechází do , které fungují na hodnotu 4. 770 00:43:09,920 --> 00:43:12,619 A dostaneme tuto hodnotu že očekáváme, 1024. 771 00:43:12,619 --> 00:43:14,785 Diváků: A není to jméno, tak to usnadňuje 772 00:43:14,785 --> 00:43:16,570 číst, náměstí cokoliv. 773 00:43:16,570 --> 00:43:17,903 >> DAN AMRMENDARIZ: Správně, přesně tak. 774 00:43:17,903 --> 00:43:21,120 Takže předtím, než jsem jen dát to do tady, takže konstantní 775 00:43:21,120 --> 00:43:23,808 že to dělalo to snadné, že název. 776 00:43:23,808 --> 00:43:24,308 Ano? 777 00:43:24,308 --> 00:43:26,942 >> Publikum: V této souvislosti powerOf, je to část 778 00:43:26,942 --> 00:43:30,774 programovacího jazyka na rozdíl od toho, jak 779 00:43:30,774 --> 00:43:33,952 myslet na powerOf v [neslyšitelných]? 780 00:43:33,952 --> 00:43:35,660 DAN AMRMENDARIZ: So V tomto případě, powerOf 781 00:43:35,660 --> 00:43:39,280 je jednoduše název z Funkce, které jsem definována tady. 782 00:43:39,280 --> 00:43:41,801 Takže to není vlastní na jazyk sám, 783 00:43:41,801 --> 00:43:43,550 ale místo toho, je to jen funkce, která má 784 00:43:43,550 --> 00:43:45,628 že název proto, že jsem dát mu to jméno. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 Nějaké další otázky? 787 00:43:51,920 --> 00:43:52,800 Dobře. 788 00:43:52,800 --> 00:43:54,750 >> Nyní je to skvělé. 789 00:43:54,750 --> 00:43:58,170 Ale vy nebudete vidět Mnoho závěrečných funkcí, které 790 00:43:58,170 --> 00:44:03,440 jsou jako to, kde můžete definovat, uvnitř jedné funkce, jiné funkci. 791 00:44:03,440 --> 00:44:04,320 A můžete to udělat. 792 00:44:04,320 --> 00:44:06,430 Ale je to trochu není opravdu nutné, je to tak? 793 00:44:06,430 --> 00:44:09,189 Stejně jako proč se definovat to Funkce tzv exponentiator 794 00:44:09,189 --> 00:44:10,480 a pak se hned vrátit. 795 00:44:10,480 --> 00:44:15,220 Proč nemůžu prostě hned vrátit tuto funkci? 796 00:44:15,220 --> 00:44:18,890 >> A ve skutečnosti, to je právě myšlenkou koncepce s názvem 797 00:44:18,890 --> 00:44:22,410 anonymní funkce, kde anonymní funkce nejsou ve skutečnosti 798 00:44:22,410 --> 00:44:25,270 mají jméno, protože oni Nemusíte mít jeden. 799 00:44:25,270 --> 00:44:28,700 A tak je v tomto případě, v 7B, můžeme najít přesně to. 800 00:44:28,700 --> 00:44:31,470 Je to všechno stejný kód, dělá přesně totéž, 801 00:44:31,470 --> 00:44:35,570 ale teď jsme to změnil lehce tak že tato funkce powerOf okamžitě 802 00:44:35,570 --> 00:44:37,750 vrátí funkci. 803 00:44:37,750 --> 00:44:44,150 Všimněte si, že po návratu, tam je otevřená složené závorky. 804 00:44:44,150 --> 00:44:46,410 Je to očekává tento vstup Double. 805 00:44:46,410 --> 00:44:48,560 Je to očekává, že produkce Double. 806 00:44:48,560 --> 00:44:52,175 A pak se v klíčové slovo odděluje kód sám o sobě. 807 00:44:52,175 --> 00:44:53,550 Tak tohle je anonymní funkce. 808 00:44:53,550 --> 00:44:57,030 To není ve skutečnosti mít jméno, zatímco předtím to bylo voláno exponentiator. 809 00:44:57,030 --> 00:45:00,229 Ale jak jsme viděli, jen opravdu neuvedla exponentiator 810 00:45:00,229 --> 00:45:01,270 vně této funkce. 811 00:45:01,270 --> 00:45:02,470 Takže na tom nezáleželo. 812 00:45:02,470 --> 00:45:06,300 Takže to anonymní funkce takzvaný protože to je bezejmenný, 813 00:45:06,300 --> 00:45:09,107 ale je to stále používá v kontextu tohoto kódu. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> Další pár z nich jsem bude pokračovat doufejme 816 00:45:16,079 --> 00:45:17,370 foukání vaše mysl trochu. 817 00:45:17,370 --> 00:45:20,410 Můžeme zjednodušit to ještě více. 818 00:45:20,410 --> 00:45:24,490 Vzhledem k tomu, jak byl bystře již dříve poukázal, 819 00:45:24,490 --> 00:45:29,100 Možná jsme skutečně vědět, o vyvodil z tohoto kódu, co 820 00:45:29,100 --> 00:45:31,750 Výstup tohoto kódu bude. 821 00:45:31,750 --> 00:45:38,180 A ve skutečnosti, v tomto anonymní funkce, lze v podstatě odvodit typy dat. 822 00:45:38,180 --> 00:45:41,650 >> Takže v tomto jednom, my už je třeba explicitně definovat 823 00:45:41,650 --> 00:45:44,850 typ dat, která je bytí Vstup a výstup z této funkce 824 00:45:44,850 --> 00:45:45,890 na pár důvodů. 825 00:45:45,890 --> 00:45:51,390 Jedním z nich je, že jsme je definován, a to až u Prototyp funkce obvodového, 826 00:45:51,390 --> 00:45:55,770 jaký typ dat tohoto anonymních funkce by se vstup a výstup. 827 00:45:55,770 --> 00:45:57,900 A z druhého, jsme lze vyvodit z kódu 828 00:45:57,900 --> 00:46:01,930 tady dole, že přijímáme vstup, který je typu Double 829 00:46:01,930 --> 00:46:03,670 a vrácení Double. 830 00:46:03,670 --> 00:46:07,890 >> Všimněte si, že tu máme není výslovně definované názvy argumentů 831 00:46:07,890 --> 00:46:11,220 že tato funkce je přijímat. 832 00:46:11,220 --> 00:46:16,180 A tak vidíme, můžeme odkazovat na tyto parametry pomocí $ 0, $ 1, 833 00:46:16,180 --> 00:46:20,140 tak dále a tak dále, v závislosti na počet tohoto parametru používá 834 00:46:20,140 --> 00:46:20,850 v této funkci. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> To je něco, co se děje vidět hodně, je to otevřený kudrnaté držák 837 00:46:29,740 --> 00:46:32,797 Definice po němž následuje $ 0, a pak některé operace, 838 00:46:32,797 --> 00:46:34,130 a pak uzavřený složené závorky. 839 00:46:34,130 --> 00:46:38,630 To je anonymní funkce který provádí tuto operaci. 840 00:46:38,630 --> 00:46:42,940 To má tento parametr kde je to typ je odvozený. 841 00:46:42,940 --> 00:46:44,860 To první parametr je $. 0 842 00:46:44,860 --> 00:46:49,010 A některé operace je děje, že $. 0 843 00:46:49,010 --> 00:46:52,100 >> Diváků: Takže znak dolaru znamená parametr v podstatě, 844 00:46:52,100 --> 00:46:53,429 a 0 znamená první? 845 00:46:53,429 --> 00:46:54,720 DAN Armendariz: To je správné. 846 00:46:54,720 --> 00:46:59,100 Takže znak dolaru v podstatě znamená, parametr, a 0 znamená první. 847 00:46:59,100 --> 00:47:02,760 Ale funguje to konkrétně Tento případ, kdy jsem se jmenoval 848 00:47:02,760 --> 00:47:07,940 argumenty v mém anonymní funkce. 849 00:47:07,940 --> 00:47:11,119 >> Diváků: Má Perl nebo něco máte Tento znak dolaru, dolar 0 tam? 850 00:47:11,119 --> 00:47:12,702 DAN Armendariz: Má, který je mi líto? 851 00:47:12,702 --> 00:47:15,360 Diváků: Má mít Perl Tento dolaru 0, dolar 1-- 852 00:47:15,360 --> 00:47:17,318 DAN Armendariz: Nejsem příliš obeznámeni s Perl, 853 00:47:17,318 --> 00:47:21,340 ale PHP, co definuje proměnné založený na dolaru. 854 00:47:21,340 --> 00:47:26,120 A tam mohou být některé jazyky že mají vlastnosti, jako je tato. 855 00:47:26,120 --> 00:47:28,240 Ve skutečnosti, Swift vypůjčuje mnoho funkcí, jako je tento 856 00:47:28,240 --> 00:47:29,489 z mnoha dalších jazyků. 857 00:47:29,489 --> 00:47:32,380 Vidíme náznaky Python v něm. 858 00:47:32,380 --> 00:47:35,800 Tato definice typu Zdá se, že pochází z OCaml. 859 00:47:35,800 --> 00:47:38,932 A máme jen spoustu věci z mnoha různých jazyků. 860 00:47:38,932 --> 00:47:40,640 To je jeden z pěkné věcí o Swift 861 00:47:40,640 --> 00:47:43,390 je, že to trvá hodně z nejlepších nápady od banda jazyků 862 00:47:43,390 --> 00:47:47,229 a shoehorns je všechny dohromady do jednoho super-jazyka. 863 00:47:47,229 --> 00:47:49,520 Ve skutečnosti, pokud dovolíte, aby pokračovat fouká svou mysl, 864 00:47:49,520 --> 00:47:51,000 takže jsme dělali vše. 865 00:47:51,000 --> 00:47:56,690 Můžeme snad zjednodušit to trochu bit by si uvědomil, že, samozřejmě, 866 00:47:56,690 --> 00:48:02,120 Swift má exponentiating funkce postavena v roce. 867 00:48:02,120 --> 00:48:04,660 Kdybych importovat Darwin, který je jen knihovna 868 00:48:04,660 --> 00:48:09,680 Nabízí této funkce s názvem pow, nyní Mohu zjednodušit svůj výkon funkce 869 00:48:09,680 --> 00:48:11,830 být následující. 870 00:48:11,830 --> 00:48:15,860 To se bude vracet tato anonymní funkce. 871 00:48:15,860 --> 00:48:17,950 >> Ale podívejte se na to, jak jednoduché to je teď. 872 00:48:17,950 --> 00:48:22,780 To je anonymní funkce, která přijímá nějaký druh dat, 873 00:48:22,780 --> 00:48:26,600 a bude jedno Argument specificky, 874 00:48:26,600 --> 00:48:29,320 odkazoval se na $ 0, která je typu double. 875 00:48:29,320 --> 00:48:32,680 To se chystá vrátit typu Double. 876 00:48:32,680 --> 00:48:35,760 Avšak návrat prohlášení Nyní je implicitní. 877 00:48:35,760 --> 00:48:39,990 >> A to je to přesně styl, který se je velmi, velmi převládající v Swift, 878 00:48:39,990 --> 00:48:40,790 všude. 879 00:48:40,790 --> 00:48:43,190 Jedeme do vidět po celou dobu v Swift. 880 00:48:43,190 --> 00:48:46,150 Takže jsem ukazovat tohle všechno jste kvůli této syntaxe. 881 00:48:46,150 --> 00:48:49,070 To je velmi časté vidět, což znamená, že jej 882 00:48:49,070 --> 00:48:51,420 je anonymní funkce který provádí 883 00:48:51,420 --> 00:48:54,640 některé operace na těchto argumentů. 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 naprosto totéž Pro nás to říkám, tady. 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> Protože tato kudrnaté Držák je funkce, 888 00:49:08,150 --> 00:49:10,480 Jsme provést tuto operaci Na první argument. 889 00:49:10,480 --> 00:49:12,170 Budeme se vrátit to. 890 00:49:12,170 --> 00:49:14,815 Ale toto vnější přiznání je vracet celou tuhle funkci, 891 00:49:14,815 --> 00:49:19,855 že celá anonymní funkce že jsme právě vytvořili. 892 00:49:19,855 --> 00:49:21,689 Nějaké další otázky? 893 00:49:21,689 --> 00:49:23,980 Dobře, já ne-li vědět, vy jste na to připraven, 894 00:49:23,980 --> 00:49:27,455 ale můžeme jít ještě šílenější s Swift. 895 00:49:27,455 --> 00:49:28,560 Jste připraveni? 896 00:49:28,560 --> 00:49:29,930 OK, to je skvělé. 897 00:49:29,930 --> 00:49:35,310 >> Teď jsme vlastně mít možnost k, v Swift, protože, jak modulární 898 00:49:35,310 --> 00:49:39,650 a, jak na základě protokolu, je, aby definovat své vlastní šílí operátory. 899 00:49:39,650 --> 00:49:44,060 Stejně jako v tomto případě jsme měli no pohon pro exponentiation-- dobře, 900 00:49:44,060 --> 00:49:47,990 pro provádění pravomocí něco. 901 00:49:47,990 --> 00:49:53,632 Ale můžu, v Swift, definovat nový subjekt, který dělá přesně to. 902 00:49:53,632 --> 00:49:55,590 Takže v tomto případě je banda syntaxe sem. 903 00:49:55,590 --> 00:49:59,980 A já vám umožní podívat se na to doma, když se podíváte na to. 904 00:49:59,980 --> 00:50:06,890 Ale my definování tohoto infix operátor, **, které se nám pak umožní, 905 00:50:06,890 --> 00:50:09,840 definováním co to Funkce ** vlastně 906 00:50:09,840 --> 00:50:15,010 to, přijmout levou ruku boční a pravá strana, 907 00:50:15,010 --> 00:50:21,190 a pak se vrátit exponent, který levá strana na pravé straně. 908 00:50:21,190 --> 00:50:24,850 >> A tak teď najednou I vytvořili nový čitatele. 909 00:50:24,850 --> 00:50:29,490 Tak 2 ** 3 prostředku 2 na třetí mocninou. 910 00:50:29,490 --> 00:50:34,420 [Mysl vyfukování SOUND] To by sama o sobě by vás měl být rád, 911 00:50:34,420 --> 00:50:37,960 OK, šroub C. jdu Swift celou cestu. 912 00:50:37,960 --> 00:50:38,740 To je skvělé. 913 00:50:38,740 --> 00:50:40,140 To je docela fantastické. 914 00:50:40,140 --> 00:50:42,240 >> I když je to skvělý příklad. 915 00:50:42,240 --> 00:50:45,570 Ale já mám nikdy jednou venku v tomto příkladu vlastně 916 00:50:45,570 --> 00:50:46,800 definované vlastní operátor. 917 00:50:46,800 --> 00:50:49,710 Ale přesto, to ukazuje Hodně moc Swift 918 00:50:49,710 --> 00:50:54,050 a proč je to vlastně opravdu cool. 919 00:50:54,050 --> 00:50:55,832 OK, ano? 920 00:50:55,832 --> 00:50:57,790 Diváků: Pokud jste definování vašeho vlastního operátora, 921 00:50:57,790 --> 00:51:02,940 Jak víš, že nemáte náhodou pokusit se vytvořit operátor, který je 922 00:51:02,940 --> 00:51:06,040 v někde v C, stejně jako skryté někde v Swift, 923 00:51:06,040 --> 00:51:12,210 jako ten, který vám obskurní nemusí neviděli. 924 00:51:12,210 --> 00:51:15,050 >> DAN Armendariz: Takže, pokud se snažíte definovat vlastní operátory, 925 00:51:15,050 --> 00:51:20,970 existuje riziko, definování jeden přes existující operátora. 926 00:51:20,970 --> 00:51:24,870 Že jde do úrovně detailů, které Nemyslím si, že máme čas projít. 927 00:51:24,870 --> 00:51:27,620 Ale, že je zde riziko. 928 00:51:27,620 --> 00:51:31,320 A to je ve skutečnosti velmi důvod, proč Nechtěl jsem používat symbol stříšky, který 929 00:51:31,320 --> 00:51:36,210 když jsme psaní ven moc, obvykle použijte 4 malá stříška 5 nebo tak něco 930 00:51:36,210 --> 00:51:40,560 jako to, že ve chvíli, kdy jsme Gchatting kamarádi nebo cokoliv jiného. 931 00:51:40,560 --> 00:51:43,660 Ale v tom případě, že ve skutečnosti by způsobil kolizi. 932 00:51:43,660 --> 00:51:46,450 A tak jsem se vyhýbal to jen proto, Náhodou jsem vědět, v tomto případě 933 00:51:46,450 --> 00:51:50,430 že skutečnosti, které by tuto kolizi. 934 00:51:50,430 --> 00:51:52,270 >> Dobře. 935 00:51:52,270 --> 00:51:55,080 Nyní bohužel, pro posledních sedm minut, 936 00:51:55,080 --> 00:51:57,410 Musím se držet foukání vaše mysl trochu. 937 00:51:57,410 --> 00:52:00,230 Takže mi dovolte, abych vám ukázat některé další věci stejně. 938 00:52:00,230 --> 00:52:03,710 >> Jsme vám ukázáno tuto myšlenku s těmito anonymní funkce, 939 00:52:03,710 --> 00:52:07,040 Tyto uzávěry, které umožňují uživateli druh projít kolem funkcí. 940 00:52:07,040 --> 00:52:08,100 Můžete je vrátit. 941 00:52:08,100 --> 00:52:09,490 Můžete s nimi manipulovat. 942 00:52:09,490 --> 00:52:11,790 Můžete dělat všechny druhy šílené věci. 943 00:52:11,790 --> 00:52:14,850 >> Ale jedna věc, která další se stane, že jsou užitečné 944 00:52:14,850 --> 00:52:19,740 je schopnost, na rozdíl na návrat těchto funkcí 945 00:52:19,740 --> 00:52:25,146 ve funkci, předat funkci jako parametr k jiné funkci. 946 00:52:25,146 --> 00:52:30,430 Ty by mohly být myšlení dobře, proč na Zemi bych chtěl něco takového udělat? 947 00:52:30,430 --> 00:52:33,660 >> No, řekněme, že chci, , aby tento operátor, které jsem 948 00:52:33,660 --> 00:52:40,260 pracoval tak tvrdě na vytvoření a použití to spoustu různých čí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 případě mám řadu integers-- 1, 4, 7, 2, 5, 10, 56. 951 00:52:46,700 --> 00:52:48,080 A já chci, aby je všechny zdvojnásobit. 952 00:52:48,080 --> 00:52:50,430 Mimochodem, že bychom typicky to udělat, je jen psát 953 00:52:50,430 --> 00:52:53,440 jednoduchý pro smyčce, které iteruje přes všechny z nich 954 00:52:53,440 --> 00:52:57,140 a provádět nějaký druh square operace nad nimi, 955 00:52:57,140 --> 00:53:02,700 zadávání těchto nových hodnot do nového variabilní, nebo spíše, nové pole sem. 956 00:53:02,700 --> 00:53:07,370 A hodnota výstupu Výsledkem je pak všechny tyto polí, 957 00:53:07,370 --> 00:53:10,200 nebo spíše všechny ty Prvky teď na druhou. 958 00:53:10,200 --> 00:53:12,680 >> A mohli bychom udělat to samé věc pro Cubing to, 959 00:53:12,680 --> 00:53:15,360 ale trochu poplach by měl jít pryč 960 00:53:15,360 --> 00:53:17,360 říká, že možná existuje nějaký způsob, že bychom 961 00:53:17,360 --> 00:53:19,860 bylo možné zjednodušit tento trochu. 962 00:53:19,860 --> 00:53:21,130 A ve skutečnosti je. 963 00:53:21,130 --> 00:53:25,320 Co kdybychom mohli vytvářet funkci, která nám umožňuje 964 00:53:25,320 --> 00:53:28,350 akceptovat, jako dravec, funkce? 965 00:53:28,350 --> 00:53:30,350 Takže v tomto případě trvat podívejte se na tyto argumenty. 966 00:53:30,350 --> 00:53:33,220 Chystáme se přijmout seznam zdvojnásobí. 967 00:53:33,220 --> 00:53:35,030 A pak půjdeme přijmout funkci 968 00:53:35,030 --> 00:53:40,990 v proměnné nazvané f, která se děje vzít s manželskou postelí a vrátit double. 969 00:53:40,990 --> 00:53:43,320 A celý výstup celého této funkce 970 00:53:43,320 --> 00:53:47,310 volal mapper se chystá vrátit matici s názvem double. 971 00:53:47,310 --> 00:53:52,380 >> Co to by mě pak umožní udělat, je iterovat přes tomto seznamu 972 00:53:52,380 --> 00:53:56,350 a udělat to samé, ale teď aplikovat tuto funkci na každé 973 00:53:56,350 --> 00:53:58,970 z jednotlivých hodnot v tomto seznamu. 974 00:53:58,970 --> 00:54:00,750 Takže jsem opravdu nevím, co je f. 975 00:54:00,750 --> 00:54:02,010 Nezáleží na tom, ke mně. 976 00:54:02,010 --> 00:54:06,530 Ale tak dlouho, jak bude potřeba v dvoulůžkovém, provádí nějaké operace na to, 977 00:54:06,530 --> 00:54:08,640 a pak se vrátí Dvoulůžkový pokoj, tak bych pak 978 00:54:08,640 --> 00:54:13,415 schopný mapovat tuto funkci napříč každý prvek v seznamu. 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> A tento typ programů je tzv vyšších řádů funkce, 981 00:54:20,930 --> 00:54:24,440 kde jsme kolem funkce asi jako parametry 982 00:54:24,440 --> 00:54:26,430 a dělat věci s funkcemi. 983 00:54:26,430 --> 00:54:29,640 Je to něco jako s ohledem na všechny tyto myšlenky, které jsme se naučili v CS50 984 00:54:29,640 --> 00:54:31,390 a brát je třídění o na další úroveň. 985 00:54:31,390 --> 00:54:34,140 A to je všechno CS51 styl věci. 986 00:54:34,140 --> 00:54:37,080 A tak půjdeme do hloubky více ve třídách, jako je to. 987 00:54:37,080 --> 00:54:38,930 >> Ale to je také zde důležité, protože my 988 00:54:38,930 --> 00:54:42,010 vidět mnoho funkcí které jsou použity v Swift 989 00:54:42,010 --> 00:54:45,590 že v podstatě dělá to, kde jsme 990 00:54:45,590 --> 00:54:48,300 některá čísla, některá pole čísel. 991 00:54:48,300 --> 00:54:50,850 Chystáme se projít kolem toho pole do našeho mapper. 992 00:54:50,850 --> 00:54:55,770 A my jsme také bude projít nějakou funkci, která 993 00:54:55,770 --> 00:54:57,950 jsme již definovány tady. 994 00:54:57,950 --> 00:54:59,690 Bude to být čtverec. 995 00:54:59,690 --> 00:55:02,220 A jdeme do té doby čtverec všech těchto čísel 996 00:55:02,220 --> 00:55:04,710 a obchod, který do tohoto výsledku zde. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> Takže v tomto případě jsme formulovali jsme vlastní funkci nazvanou mapper. 999 00:55:11,000 --> 00:55:15,370 Ale to přesně věc je, Ve skutečnosti, zabudované do Swift. 1000 00:55:15,370 --> 00:55:18,960 Existuje celá řada Funkce tzv mapa. 1001 00:55:18,960 --> 00:55:21,520 K dispozici je funkce map, tam je snížení funkce, 1002 00:55:21,520 --> 00:55:25,630 a tam je filtrační funkce, které v podstatě platí funkce 1003 00:55:25,630 --> 00:55:30,782 ke každému prvku v Seznam je upravit nějakým způsobem. 1004 00:55:30,782 --> 00:55:34,510 >> Diváků: Takže, protože jste transformaci data do jiného formátu 1005 00:55:34,510 --> 00:55:36,134 přes function-- 1006 00:55:36,134 --> 00:55:37,050 DAN Armendariz: Správně. 1007 00:55:37,050 --> 00:55:39,420 Jo, takže funkce že jsme přijetím 1008 00:55:39,420 --> 00:55:41,790 transformuje data v nějaké cestě. 1009 00:55:41,790 --> 00:55:44,700 V tomto případě jsme byli buď kvadratura, nebo jsme byli Cubing to, 1010 00:55:44,700 --> 00:55:50,060 nebo opravdu, mohli bychom hrát žádná operace na ní vůbec. 1011 00:55:50,060 --> 00:55:54,150 >> Ale dovolte mi pak ukáže, jak to bude vypadat v praxi. 1012 00:55:54,150 --> 00:55:56,681 A opět, Běžím trochu času. takže si nejsem 1013 00:55:56,681 --> 00:55:59,430 bude moci projít všechny zdrojového kódu zde v detailu. 1014 00:55:59,430 --> 00:56:00,721 Ale já jsem povzbudit vás k tomu, že. 1015 00:56:00,721 --> 00:56:03,850 Budeme to psát, jakmile nejdříve po tomto rozhovoru. 1016 00:56:03,850 --> 00:56:07,610 >> Ale pokud se podíváte na to, Předpokládáme, že máme seznam čísel, 1017 00:56:07,610 --> 00:56:10,260 pole čísel v tomto proměnné volaných čísel. 1018 00:56:10,260 --> 00:56:16,670 Pak jsme chcete provést tuto Filtr operace na těchto čísel. 1019 00:56:16,670 --> 00:56:19,730 Takže filtr je vyšší objednat funkce, která 1020 00:56:19,730 --> 00:56:24,660 přijímá pole a také funkce. 1021 00:56:24,660 --> 00:56:28,760 A na každém prvku v tom, že pole, vykonává tuto funkci. 1022 00:56:28,760 --> 00:56:31,990 >> Pokud se, že výnosy funkce pravda, udržuje tuto položku. 1023 00:56:31,990 --> 00:56:36,100 Pokud se tato funkce vrátí hodnotu false, to zahodí tuto položku. 1024 00:56:36,100 --> 00:56:40,480 A pak se to vrátí seznam , která je pak tvořena all 1025 00:56:40,480 --> 00:56:44,360 z těchto položek, které byly filtrovány. 1026 00:56:44,360 --> 00:56:47,150 >> Takže jinými slovy, je to stejný nápad se gradebook. 1027 00:56:47,150 --> 00:56:50,800 Mohli bychom mít různé stupně jakosti Do tohoto čísla hodnotou tzv. 1028 00:56:50,800 --> 00:56:55,590 Mohl by to být 100 a 70, a 40, tak dále a tak dále. 1029 00:56:55,590 --> 00:56:59,110 Co tento filtr dělá, je upozornění že je to, že syntaktický cukr 1030 00:56:59,110 --> 00:57:01,310 pro anonymní funkce. 1031 00:57:01,310 --> 00:57:05,980 Jedná se o anonymní funkce rčení že parametr, že jsem přijal 1032 00:57:05,980 --> 00:57:09,690 bude, pokud o to je větší než 70 ° C, 1033 00:57:09,690 --> 00:57:15,837 pak to bude vrátí true, což znamená, že že položka bude mít na tohoto filtru. 1034 00:57:15,837 --> 00:57:17,920 Takže buďme trochu konkrétnější o tom. 1035 00:57:17,920 --> 00:57:25,760 Mám-li toto pole čísel a skládá se z 100, 70 a 40, 1036 00:57:25,760 --> 00:57:29,730 I provést tento filtr operace na každém z nich. 1037 00:57:29,730 --> 00:57:33,270 Tak, že první je tato hodnota 100. 1038 00:57:33,270 --> 00:57:36,770 100 větší nebo rovno 70 je pravda, který 1039 00:57:36,770 --> 00:57:41,950 Znamená to, že 100 je držena v tato nová kopie tohoto pole. 1040 00:57:41,950 --> 00:57:44,290 70 také prochází. 1041 00:57:44,290 --> 00:57:46,020 Ale 40 není. 1042 00:57:46,020 --> 00:57:54,290 Takže to, co je vrácena v passingCount je pole prvků 100 a 70-- 1043 00:57:54,290 --> 00:57:57,410 100, čárka, 70. 1044 00:57:57,410 --> 00:57:59,870 To byly jen dva položky, které byly uchovávány. 1045 00:57:59,870 --> 00:58:03,740 A tak důvod, proč jsem se rychle prošel Mnoho z těchto druhů vyššího řádu 1046 00:58:03,740 --> 00:58:08,680 věci jsou, protože to je to, že společná věc, kterou uvidíte v Swift docela 1047 00:58:08,680 --> 00:58:16,810 často, provádí nějakou operaci pomocí této anonymní syntaxe funkce. 1048 00:58:16,810 --> 00:58:18,450 >> Tam je nějaký super věci. 1049 00:58:18,450 --> 00:58:24,730 Přepínače jsou opravdu silný v Swift, Mám na mysli, stejně jako blázen, blázen silný. 1050 00:58:24,730 --> 00:58:28,250 Můžete použít přepínač, a můžete skutečně aplikovat 1051 00:58:28,250 --> 00:58:33,160 do rozsahů, což je tak trochu blázen, a dělat fantazie podobné věci. 1052 00:58:33,160 --> 00:58:37,540 >> Ale v posledních několika minut, Chci přeskočit poměrně daleko 1053 00:58:37,540 --> 00:58:46,940 a ukázat vám konkrétní příklad toho, jak můžeme vytvořit v iOS pomocí Swift. 1054 00:58:46,940 --> 00:58:49,040 Takže když děláte to, budete muset vzít 1055 00:58:49,040 --> 00:58:51,990 A Look at-- na Apple dokumentace, oni 1056 00:58:51,990 --> 00:58:56,084 mají spoustu opravdu dobré tutoriály pro vytvoření první aplikace. 1057 00:58:56,084 --> 00:58:58,250 A já povzbudit vás k tomu že proto, že vás 1058 00:58:58,250 --> 00:59:04,110 přes všechny kroky, co přesně klikněte na vytvořit aplikaci iOS. 1059 00:59:04,110 --> 00:59:07,290 >> Ale tady máme tuto aplikaci iOS. 1060 00:59:07,290 --> 00:59:10,960 A je to opravdu docela jednoduchá aplikace. 1061 00:59:10,960 --> 00:59:13,840 Pokud bych to běžet, dovolte mi ukázat vám, jak to vypadá. 1062 00:59:13,840 --> 00:59:19,480 Vše, co to v podstatě dělá, je to vytáhne z internetu spis JSON 1063 00:59:19,480 --> 00:59:22,300 že jsem uloženy na serveru. 1064 00:59:22,300 --> 00:59:26,310 A to JSON soubor definuje, obrazy, které umožňují 1065 00:59:26,310 --> 00:59:31,680 abych pak procházet, na mém app, obrázky z mého webového serveru. 1066 00:59:31,680 --> 00:59:32,880 >> Takže mám tady getNextImage. 1067 00:59:32,880 --> 00:59:37,100 To načte obrázek z internetu, a pak ji zobrazí na displeji. 1068 00:59:37,100 --> 00:59:38,200 >> Takže je to docela jednoduché. 1069 00:59:38,200 --> 00:59:41,550 Ale cílem je ukázat, , jak můžeme kombinovat věci 1070 00:59:41,550 --> 00:59:47,820 z posledních několika týdnů CS50 do skutečné iOS aplikace. 1071 00:59:47,820 --> 00:59:53,140 Jinými slovy, možná jeden z věci, které budete chtít udělat, 1072 00:59:53,140 --> 00:59:56,340 je mít aplikace iOS, který můžete vytáhnout data z internetu 1073 00:59:56,340 --> 00:59:59,070 a ukázat uživateli nějaké informace. 1074 00:59:59,070 --> 01:00:03,130 To je zcela bod z tohoto zdrojového kódu zde. 1075 01:00:03,130 --> 01:00:07,890 >> Takže je tu hodně říci o jak to udělat skutečný iOS rozvoj. 1076 01:00:07,890 --> 01:00:12,860 Tam je hodně bláznivé syntaxe že jsme neviděli ještě dost 1077 01:00:12,860 --> 01:00:15,580 jako třída, co je to třída ve skutečnosti je. 1078 01:00:15,580 --> 01:00:19,470 Můžeme do značné míry ignorovat že v současné době. 1079 01:00:19,470 --> 01:00:23,250 >> Ale všimněte si, že jsme obsahovaly v rámci tohoto různé věcí 1080 01:00:23,250 --> 01:00:27,720 že jsme již viděli, jako funkce, které mají specifická jména. 1081 01:00:27,720 --> 01:00:32,650 A když jsme se dát ty, Funguje správné názvy 1082 01:00:32,650 --> 01:00:36,530 která se očekává od iOS, ve skutečnosti to cítí trochu kouzelné. 1083 01:00:36,530 --> 01:00:40,300 Ale když si vytvořit iOS aplikace, tam 1084 01:00:40,300 --> 01:00:47,590 jsou specifické názvy funkcí, které jsou volány samotný telefon 1085 01:00:47,590 --> 01:00:52,440 protože aplikace se nahrává vyzkoušet vytvořit proces, který ve skutečnosti 1086 01:00:52,440 --> 01:00:54,787 běží vaše aplikace. 1087 01:00:54,787 --> 01:00:58,120 Takže znovu, je tu spousta věcí, které jsem musí zakrývat tu, aby nás 1088 01:00:58,120 --> 01:01:00,570 mluvit o tom konkrétně. 1089 01:01:00,570 --> 01:01:06,050 Ale já Doporučujeme vám podívat se na možná ostatní iOS semináře, ale i některé 1090 01:01:06,050 --> 01:01:09,290 o tutoriály on-line, které dělají mnohem lepší práci popisující 1091 01:01:09,290 --> 01:01:11,030 specifické informace. 1092 01:01:11,030 --> 01:01:15,760 >> Ale můžeme vidět několik věcí, které jsou zajímavé odtud kódu. 1093 01:01:15,760 --> 01:01:17,950 Všimněte si, že máme-li prohlášení. 1094 01:01:17,950 --> 01:01:20,400 Mimochodem, jeden důležitý věc, o if 1095 01:01:20,400 --> 01:01:24,860 je to, že závorek Logický výraz jsou volitelné. 1096 01:01:24,860 --> 01:01:30,800 Ale složené závorky nejsou povinné, bez ohledu na to, jak málo nebo mnoho řádků 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 mít if bez složených závorek v Swift. 1099 01:01:38,670 --> 01:01:41,000 >> A to je dobře, nějak hloupé. 1100 01:01:41,000 --> 01:01:43,910 Ale je tu historické důvody pro to. 1101 01:01:43,910 --> 01:01:46,180 Je to má, aby vás zachránil od sebe. 1102 01:01:46,180 --> 01:01:49,899 Stejně jako to například, nemůžete eliminovat složené závorky kolem toho 1103 01:01:49,899 --> 01:01:50,440 if. 1104 01:01:50,440 --> 01:01:52,730 Ty jsou ve skutečnosti zapotřebí. 1105 01:01:52,730 --> 01:01:54,480 Tak jsem povzbudit, abyste se podívat na tohle. 1106 01:01:54,480 --> 01:01:56,230 Ale je tu ještě jeden konstruovat, že chci, 1107 01:01:56,230 --> 01:02:02,640 vám ukázat, že o Swift je nový Swift 2.0 porovnání 1108 01:02:02,640 --> 01:02:08,460 na starší verze Swift, což je následující. 1109 01:02:08,460 --> 01:02:11,620 Pojďme se podívat, kde jsem dát sem? 1110 01:02:11,620 --> 01:02:16,630 >> Takže v této funkci s názvem fetchJSON, tato funkce 1111 01:02:16,630 --> 01:02:23,450 je zodpovědný za tahání, že JSON soubor z adresy URL, který jen tak se stane 1112 01:02:23,450 --> 01:02:26,310 běží na mém CS50 IDE. 1113 01:02:26,310 --> 01:02:28,580 Jen jsem začal Apache, dám JSON souboru tam, 1114 01:02:28,580 --> 01:02:32,110 a jsem schopen vytáhněte, že data z internetu pomocí 1115 01:02:32,110 --> 01:02:36,430 tato funkce a toto URL, která je opatřena v telefonu. 1116 01:02:36,430 --> 01:02:40,490 Je to předkládané dopravcem při knihovna, která používáte při 1117 01:02:40,490 --> 01:02:43,140 děláte nějaké systému iOS pro vývoj aplikací. 1118 01:02:43,140 --> 01:02:49,690 >> Všimněte si, že je to neobvyklé syntaktický konstrukt volal stráž. 1119 01:02:49,690 --> 01:02:53,530 A opravdu to vše je v Swift je způsob ověřování 1120 01:02:53,530 --> 01:02:56,870 že některé věci mají byly splněny před vámi 1121 01:02:56,870 --> 01:03:00,000 pokračovat se zbytkem funkce. 1122 01:03:00,000 --> 01:03:04,260 Takže jsem mohl mít, s použitím Tento volitelný typ, 1123 01:03:04,260 --> 01:03:10,530 Mohl jsem našel adresu URL spuštění této funkce NSURL 1124 01:03:10,530 --> 01:03:16,640 a ukládání, že do URL konstantní, a poté kontrola 1125 01:03:16,640 --> 01:03:20,820 aby zjistil, zda URL byla nulová, protože to se chystá vrátit volitelný typ. 1126 01:03:20,820 --> 01:03:25,660 A kdyby to byla nulová, pak bych vytisknout chybu a pak se vrátit. 1127 01:03:25,660 --> 01:03:29,970 >> Ale místo toho, co stráž nechává nás udělat, je, že velmi věc, 1128 01:03:29,970 --> 01:03:34,550 ale ujistěte se, že je ve skutečnosti platí, že url 1129 01:03:34,550 --> 01:03:38,020 byl správně nastaven NSURL. 1130 01:03:38,020 --> 01:03:41,810 A pokud je to, pak je přeskakuje to, a to 1131 01:03:41,810 --> 01:03:46,110 vám umožní pokračovat s url, které byly řádně definovány. 1132 01:03:46,110 --> 01:03:48,830 Ale je-li tomu tak, že url není správně definována, 1133 01:03:48,830 --> 01:03:52,550 pokud je tato funkce vrací chybu nebo nějaká jiná nečekaná věc 1134 01:03:52,550 --> 01:03:58,030 skutečně nastane, tento guard konstrukt nám umožňuje pak výstup tuto chybu 1135 01:03:58,030 --> 01:04:00,390 a okamžitě vrátit. 1136 01:04:00,390 --> 01:04:00,890 Ano? 1137 01:04:00,890 --> 01:04:04,839 >> Diváků: Takže je to trochu o Jako jestli pak jiný? 1138 01:04:04,839 --> 01:04:07,130 DAN Armendariz: Je to druh Jako jestli pak jiný, ano, 1139 01:04:07,130 --> 01:04:14,200 kromě toho, že tato adresa URL je pak definovány pro všechno pod toto. 1140 01:04:14,200 --> 01:04:20,420 Pokud projde tento ochranný kryt, poté jej bude skutečně naplněna daty 1141 01:04:20,420 --> 01:04:29,500 a použitelné ve zbývající zdrojový kód ve vaší funkci. 1142 01:04:29,500 --> 01:04:33,790 Tak jsem podezření, že budete začnete vidět tento ochranný kryt stejně. 1143 01:04:33,790 --> 01:04:36,670 A dbát na to. 1144 01:04:36,670 --> 01:04:46,270 >> Takže jen při pohledu na pár dalších věci, to tady je to, co, 1145 01:04:46,270 --> 01:04:53,377 myslíš, jen podle toho, co jsme hovořili o dříve? 1146 01:04:53,377 --> 01:04:56,650 >> Diváků: Myslíš, že to bude běh na seznamu? 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á se o funkci, že se definuje. 1149 01:05:02,360 --> 01:05:07,240 A my jsme zadání této funkce jako argument této funkce zde. 1150 01:05:07,240 --> 01:05:09,120 >> Diváků: [Neslyšitelné], pokud není nulová. 1151 01:05:09,120 --> 01:05:11,470 Takže je to v seznamu, je to tak? 1152 01:05:11,470 --> 01:05:15,450 >> DAN Armendariz: Pokud chyba není nulová, takže tak je-- musím posouvat. 1153 01:05:15,450 --> 01:05:18,060 No, podívejme se, nemůžu přejděte na právě zde. 1154 01:05:18,060 --> 01:05:23,161 Chyba je argument, který je být předaný této anonymní funkce. 1155 01:05:23,161 --> 01:05:24,410 Jedná se o anonymní funkce. 1156 01:05:24,410 --> 01:05:25,480 To nemá žádný název. 1157 01:05:25,480 --> 01:05:29,850 Ale my přijímáme tyto tři argumenty, data, reakce, a chybě. 1158 01:05:29,850 --> 01:05:33,590 A to se chystá vrátit neplatné, takže že to nebude nic vracet. 1159 01:05:33,590 --> 01:05:37,910 A to je obsah této funkce. 1160 01:05:37,910 --> 01:05:41,961 A pak máme přístup uvnitř, že funkcí pro každý z těchto argumentů. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> Takže je to vichřice prohlídka jazyka. 1163 01:05:48,679 --> 01:05:50,470 Ale doufám, že s tím, doufejme, že, jak si vzít 1164 01:05:50,470 --> 01:05:54,490 pohled na některé z tutoriálů specifické pro iOS vývoji s Swift, 1165 01:05:54,490 --> 01:05:57,481 zvláště pokud jdete do Apple developer web page-- 1166 01:05:57,481 --> 01:05:59,980 oni mají spoustu opravdu dobré návody, jak začít. 1167 01:05:59,980 --> 01:06:05,010 Ale doufejme, že právě tato hodina mluvit o syntaxi sám dal 1168 01:06:05,010 --> 01:06:08,760 Jsi dost, abyste mohli začít s tím. 1169 01:06:08,760 --> 01:06:12,950 >> Budeme psát všechny tohoto zdroje kód na webových stránkách semináře 1170 01:06:12,950 --> 01:06:17,800 co nejdříve, a také snímky takže máte odkaz pro všechny ty. 1171 01:06:17,800 --> 01:06:20,530 Ale hodně štěstí s vaše projekty. 1172 01:06:20,530 --> 01:06:23,640 A děkuji vám všem moc přišli. 1173 01:06:23,640 --> 01:06:26,990 >> [POTLESK] 1174 01:06:26,990 --> 01:06:28,026