1 00:00:00,000 --> 00:00:03,332 >> [MUZYKI] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> DAN AMRMENDARIZ: Każdy, Zapraszamy na seminarium CS50, 4 00:00:09,590 --> 00:00:11,690 iOS App Development z Swift. 5 00:00:11,690 --> 00:00:15,690 Jestem Dan Armendariz, a ja jestem nauczycielem Informatyki tutaj na Harvardzie. 6 00:00:15,690 --> 00:00:21,510 >> I następna godzina będzie wicher zwiedzanie tyle rzeczy 7 00:00:21,510 --> 00:00:25,160 na ten temat, jak możemy zmieścić. 8 00:00:25,160 --> 00:00:29,170 Będę pisać cały kod źródłowy które można zobaczyć dziś w Internecie. 9 00:00:29,170 --> 00:00:31,990 Możemy nie być w stanie faktycznie go ponad wszystko 10 00:00:31,990 --> 00:00:34,810 że jestem, że jestem pokazując, w tej godzinie. 11 00:00:34,810 --> 00:00:37,580 Ale przynajmniej mam nadzieję, że dzięki komentarze kodu źródłowego, 12 00:00:37,580 --> 00:00:40,830 będzie można spróbować dowiedzieć się, co dokładnie dzieje się na tych rzeczach 13 00:00:40,830 --> 00:00:42,950 że nie dość dostać. 14 00:00:42,950 --> 00:00:46,970 >> Ogólnie rzecz biorąc, struktura dzisiejsza rozmowa będzie następująca. 15 00:00:46,970 --> 00:00:52,820 Zaczniemy robi kilka podstawowych Składnia z językiem Swift, 16 00:00:52,820 --> 00:00:56,290 wchodząc w niektóre z bardziej zaawansowanych Składnia języka Swift. 17 00:00:56,290 --> 00:00:59,560 Ponieważ język jest naprawdę nowoczesny i go 18 00:00:59,560 --> 00:01:02,110 ma dużo wysokim poziomie cechy, rzeczy, że nie 19 00:01:02,110 --> 00:01:06,600 postrzegane w C przez CS50, lub nawet niektórych innych językach 20 00:01:06,600 --> 00:01:09,310 że zaczęliśmy używając w CS50 jak PHP, 21 00:01:09,310 --> 00:01:12,670 więc będę musiał spróbować wprowadzić także kilka tematów, które 22 00:01:12,670 --> 00:01:18,580 są związane z języków wyższego poziomu że nie może zobaczyć w głębi w CS50, 23 00:01:18,580 --> 00:01:21,380 ale widać na później lekcje informatyki. 24 00:01:21,380 --> 00:01:25,290 Więc to będzie szczelnie zapakowane godzinę. 25 00:01:25,290 --> 00:01:28,897 I prosimy o mnie niech znać, jeśli masz jakiekolwiek pytania. 26 00:01:28,897 --> 00:01:30,730 Więc jeśli jesteś zainteresowany w ten rozwój 27 00:01:30,730 --> 00:01:34,442 ze Swifta, czy naprawdę dowolny iOS app rozwój, 28 00:01:34,442 --> 00:01:35,900 istnieje kilka wymagań. 29 00:01:35,900 --> 00:01:39,940 Przede wszystkim, trzeba być przy użyciu Mac, działa w przykładach 30 00:01:39,940 --> 00:01:43,880 że mamy zamiar używać dzisiaj, stosunkowo nowa wersja OS 31 00:01:43,880 --> 00:01:46,580 X. W tym przypadku używam X 10.5. 32 00:01:46,580 --> 00:01:48,600 Możesz być uruchomiony 10.11, jeśli chcesz. 33 00:01:48,600 --> 00:01:52,430 Ale wszystko, co masz zamiar zobaczyć się z udziałem Xcode 7 i nowsze wersje, 34 00:01:52,430 --> 00:01:56,271 który ma najnowszą wersję Swift, który jest Swift 2.0. 35 00:01:56,271 --> 00:01:58,270 To jest rzeczywiście dość ważne rozróżnienie. 36 00:01:58,270 --> 00:02:01,510 Wiele składni ma zmienił dość znacznie 37 00:02:01,510 --> 00:02:05,890 w niektórych przypadkach z Swift 1.0, który ukazał się w zeszłym roku, 38 00:02:05,890 --> 00:02:08,514 do Swifta 2.0, po prostu wyszedł ten upadek. 39 00:02:08,514 --> 00:02:09,889 Tak więc mamy zamiar pokazać Swift 2.0. 40 00:02:09,889 --> 00:02:13,020 Wiele rzeczy, które szukasz w Internecie 41 00:02:13,020 --> 00:02:18,040 gdy próbujesz uzyskać dodatkowe Informacje o różnych rzeczy 42 00:02:18,040 --> 00:02:20,710 Może chcesz jawnie szukaj Swift 2 43 00:02:20,710 --> 00:02:24,950 a nie po prostu starego Swifta, aby pewność, że otrzymasz składnia poprawne. 44 00:02:24,950 --> 00:02:26,920 >> W istocie, na ogół jest to prawda. 45 00:02:26,920 --> 00:02:31,210 Jest szybki ilość rozwoju dzieje się w języku Swift 46 00:02:31,210 --> 00:02:35,110 odkąd Apple wydała go, myślę, co, to było nieco ponad rok 47 00:02:35,110 --> 00:02:36,370 ale już. 48 00:02:36,370 --> 00:02:39,080 I wszystko się zmieniło znacznie w tym czasie. 49 00:02:39,080 --> 00:02:42,160 I tak nie być sfrustrowany w przypadku, gdy jesteś rozglądając 50 00:02:42,160 --> 00:02:48,310 tematy na Swifta lub jak wykonać coś za pomocą jakiś przykładowy kod 51 00:02:48,310 --> 00:02:51,210 lub coś, co nie działa faktycznie pracują na Swift 2.0. 52 00:02:51,210 --> 00:02:53,790 Upewnij się, że szukasz specjalnie dla tej wersji 53 00:02:53,790 --> 00:02:58,690 starać się zminimalizować skutki odmienne wersje i te różne rzeczy. 54 00:02:58,690 --> 00:03:02,470 >> Postaram się wskazać tylko kilka rzeczy które różnią się od starszych wersji. 55 00:03:02,470 --> 00:03:03,970 Ale to jest coś, na które trzeba uważać. 56 00:03:03,970 --> 00:03:06,770 To prawdopodobnie będzie jeden z największych bólów głowy 57 00:03:06,770 --> 00:03:11,010 że będziesz miał z Swift jest znalezienie przykład kodu, który jest starszy, nawet tylko 58 00:03:11,010 --> 00:03:14,050 przez kilka miesięcy, starając się wykorzystać to w bardziej nowoczesnej projektu. 59 00:03:14,050 --> 00:03:15,430 A to po prostu nie działa. 60 00:03:15,430 --> 00:03:18,530 Stajesz się błędy kompilatora, składni błędy, wszystkie rodzaje szalonej rzeczy. 61 00:03:18,530 --> 00:03:21,580 Więc po prostu być cierpliwy które, mam nadzieję, że i wy będziecie 62 00:03:21,580 --> 00:03:24,200 posiada całkiem miłe doświadczenie z Swift ogólnej. 63 00:03:24,200 --> 00:03:28,430 >> Teraz możesz naprawdę join-- i mam nadzieję, faktycznie jeszcze ten rok-- 64 00:03:28,430 --> 00:03:30,910 CS 50 w Apple App Zespół programistów, które 65 00:03:30,910 --> 00:03:34,680 będzie można instalować żadnych aplikacji które można stworzyć na urządzeniach z systemem iOS. 66 00:03:34,680 --> 00:03:39,190 Więc spójrz na tym adresem URL jesteś zainteresowany robić. 67 00:03:39,190 --> 00:03:41,450 >> Więc tylko kilka rzeczy o samej Swift. 68 00:03:41,450 --> 00:03:43,580 To jest skompilowany języka. 69 00:03:43,580 --> 00:03:45,870 Ale widać, że niektóre funkcje, które stosujemy 70 00:03:45,870 --> 00:03:50,650 pozwalają na stosowanie go także w nieco jak interpretowany sposób, jak również. 71 00:03:50,650 --> 00:03:56,350 >> Wiele składni została zapożyczona z C. Jest on oparty oraz napisany w C. 72 00:03:56,350 --> 00:04:00,400 I tak widzimy, że istnieje wiele wynos 73 00:04:00,400 --> 00:04:04,450 z istniejącej wiedzy z C, które możemy port Swift. 74 00:04:04,450 --> 00:04:07,290 >> Ale są rzeczy, które sprawiają, że bardzo różni się od C 75 00:04:07,290 --> 00:04:08,860 To jest bardzo silnie wpisane. 76 00:04:08,860 --> 00:04:10,380 Jest automatyczne zarządzanie pamięcią. 77 00:04:10,380 --> 00:04:13,170 Nie będziemy musieli używać malloc lub wolny wszędzie. 78 00:04:13,170 --> 00:04:15,110 Jest przeznaczony dla ogółu. 79 00:04:15,110 --> 00:04:19,480 Więc innymi słowy, można go używać w wszelkiego rodzaju kontekstach, od Apple Obserwować 80 00:04:19,480 --> 00:04:26,290 iPhone aż do OS X, oraz nawet niektóre serwery, nawet niektóre skrypty. 81 00:04:26,290 --> 00:04:28,400 Ale zobaczymy, że obsługa skryptów 82 00:04:28,400 --> 00:04:31,360 nie jest całkiem tam jeszcze, jak to jest w innych językach. 83 00:04:31,360 --> 00:04:34,930 Więc prawdopodobnie będziesz za pomocą to wyłącznie do rozwoju 84 00:04:34,930 --> 00:04:37,060 na komputerze Mac lub iPhone. 85 00:04:37,060 --> 00:04:40,150 >> I to ma wiele nowoczesnych funkcji. 86 00:04:40,150 --> 00:04:43,380 I wiele z tych rzeczy są rzeczy, które będziemy próbować zająć dzisiaj, 87 00:04:43,380 --> 00:04:47,590 ale także nasze tematy, które szczerze mówiąc, możemy poświęcić całe kursy. 88 00:04:47,590 --> 00:04:50,140 W rzeczywistości, CS 51, który jest oferowane następny semestr, 89 00:04:50,140 --> 00:04:53,990 skupia się wiele na te tematy które są opisane poniżej. 90 00:04:53,990 --> 00:04:56,781 Więc można spędzić cały semestr zrozumienie tych rzeczy. 91 00:04:56,781 --> 00:04:58,530 Ale mamy zamiar spróbować aby przez nich 92 00:04:58,530 --> 00:05:00,800 przynajmniej na tyle, że Ciebie może zrozumieć, co jest 93 00:05:00,800 --> 00:05:03,700 dzieje, gdy patrzysz w Swift programu 94 00:05:03,700 --> 00:05:07,310 i być w stanie włamać się na swój sposób przez to do ostatecznego projektu. 95 00:05:07,310 --> 00:05:10,780 >> Teraz jeden z najlepszych sposobów, że można uzyskać dodatkowe informacje na ten temat 96 00:05:10,780 --> 00:05:14,700 jest szczerze mówiąc po prostu przez Apple pod warunkiem dokumentacji Swift. 97 00:05:14,700 --> 00:05:16,930 Jest wiele interfejsów API , które są dostępne. 98 00:05:16,930 --> 00:05:21,170 I to jest dobra baza dla Ciebie szukać, konkretnych rzeczy, które 99 00:05:21,170 --> 00:05:23,020 chcą zrobić z API udziałem iOS. 100 00:05:23,020 --> 00:05:26,350 Jeżeli chcesz korzystać z aparatu Przykładowo, można zacząć szukać tutaj, 101 00:05:26,350 --> 00:05:32,540 a także korzystać z Google i stos Przepełnienie tak jak zwykle. 102 00:05:32,540 --> 00:05:36,670 >> Wszelkie pytania na ten temat zanim przejść w prawo? 103 00:05:36,670 --> 00:05:37,880 W porządku. 104 00:05:37,880 --> 00:05:38,700 Przejdźmy dalej. 105 00:05:38,700 --> 00:05:42,620 >> Więc po pierwsze, mam liczba przykładowych plików. 106 00:05:42,620 --> 00:05:46,040 I mam zamiar spróbować kroku przez nich stosunkowo szybko. 107 00:05:46,040 --> 00:05:49,190 Jest to plik Hello World dla Swifta. 108 00:05:49,190 --> 00:05:51,050 To bardzo proste. 109 00:05:51,050 --> 00:05:54,360 Jest sposób więcej komentarzy niż jest rzeczywisty kod. 110 00:05:54,360 --> 00:05:57,100 Zauważ, rzeczywisty kod jest w samym dole na linii 14. 111 00:05:57,100 --> 00:05:57,980 Mówi drukiem. 112 00:05:57,980 --> 00:05:59,820 I to jest to wywołanie funkcji. 113 00:05:59,820 --> 00:06:03,010 Jesteśmy przechodząc do niego z Ciąg nazywa Witaj CS50. 114 00:06:03,010 --> 00:06:04,750 Zauważ, że nie ma żadnych średników. 115 00:06:04,750 --> 00:06:07,010 Zauważ, że nie ma int main. 116 00:06:07,010 --> 00:06:10,392 Tam żaden z śmieciem, że mieliśmy z C 117 00:06:10,392 --> 00:06:15,020 Gdy używamy szybki w ten sposób która jest po prostu napisane w pliku tekstowym 118 00:06:15,020 --> 00:06:18,340 i przechowywane na komputerze, a następnie Mogę go skompilować i uruchomić go. 119 00:06:18,340 --> 00:06:20,920 >> Zauważ, że tu jestem nie przy użyciu IDE CS50. 120 00:06:20,920 --> 00:06:24,460 Zakłada się, że jestem uruchomiony i że jestem na OS X 121 00:06:24,460 --> 00:06:27,870 i że mam Xcode już zainstalowany na tej maszynie, aby ta 122 00:06:27,870 --> 00:06:29,080 rzeczywiście funkcjonować. 123 00:06:29,080 --> 00:06:33,349 Ale to jest po prostu normalnym plikiem tekstowym które możemy następnie skompilować i edytować. 124 00:06:33,349 --> 00:06:34,890 Zobaczmy więc, jak to rzeczywiście działa. 125 00:06:34,890 --> 00:06:37,430 Co zrobić, jeśli chcę go skompilować? 126 00:06:37,430 --> 00:06:40,450 swiftc 1.swift. 127 00:06:40,450 --> 00:06:42,960 Po chwili lub dwóch, to zobaczą, że mamy teraz 128 00:06:42,960 --> 00:06:45,360 skompilowany to do pliku o nazwie 1. 129 00:06:45,360 --> 00:06:51,090 A teraz mamy wydrukowane nasze CS50, nasza aplikacja Hello World raczej. 130 00:06:51,090 --> 00:06:54,690 >> Zauważ jedną rzecz jako dobrze jest, że domyślnie, 131 00:06:54,690 --> 00:07:00,090 nie mieliśmy do wejścia a / n, aby wydrukować nową linię. 132 00:07:00,090 --> 00:07:05,315 Domyślnie funkcja drukowania w Swift drukuje nową linię dla Ciebie. 133 00:07:05,315 --> 00:07:09,284 Możesz przekazać opcjonalny dodatkowy Parametr aby poinformować go, aby tego nie robić. 134 00:07:09,284 --> 00:07:10,950 Ale Google więcej informacji na temat tego. 135 00:07:10,950 --> 00:07:13,450 Domyślnie będzie to zrobić linię wydruku. 136 00:07:13,450 --> 00:07:16,420 >> W porządku, więc przejdźmy następnie do innych rzeczy. 137 00:07:16,420 --> 00:07:18,620 Więc jak możemy właściwie zdefiniować zmienne? 138 00:07:18,620 --> 00:07:21,960 Możemy zrobić to za pomocą jeden z dwóch sposobów. 139 00:07:21,960 --> 00:07:26,122 A ten, który chcę powiedzieć, o Definicja ta pierwsza jest wynajęte. 140 00:07:26,122 --> 00:07:27,830 I to jest ważne ponieważ skutecznie 141 00:07:27,830 --> 00:07:30,240 to, co robimy jest określenia stałej. 142 00:07:30,240 --> 00:07:34,010 Mamy zamiar stworzyć zmienną, czy raczej stała nazywa nazwa, 143 00:07:34,010 --> 00:07:38,200 dostarczyć do niego niektóre data-- w w tym przypadku, łańcuch Dan. 144 00:07:38,200 --> 00:07:40,630 Ale za pomocą tego let słów, mówimy 145 00:07:40,630 --> 00:07:43,860 że zmienna-- lub ponownie constant-- nazywa 146 00:07:43,860 --> 00:07:46,220 nazwa nie zostanie zmieniona. 147 00:07:46,220 --> 00:07:50,120 To będzie niezmienna w całym Czas trwania tego programu 148 00:07:50,120 --> 00:07:53,100 lub całej Czas kontekście 149 00:07:53,100 --> 00:07:55,390 że zmienna jest dostępna. 150 00:07:55,390 --> 00:08:00,096 >> To jest bardzo ważne, że gdy masz jakieś dane, które nie jest 151 00:08:00,096 --> 00:08:02,970 zamiar zmienić w programie, i zobaczysz wiele przykładów 152 00:08:02,970 --> 00:08:06,790 o tym, kiedy chcemy użyć dać w stosunku do drugiej składni 153 00:08:06,790 --> 00:08:11,040 ważne jest, aby używać let wszędzie tam, gdzie to możliwe, ponieważ To informacja 154 00:08:11,040 --> 00:08:13,740 język, który jest nie będzie zmieniony, 155 00:08:13,740 --> 00:08:16,590 i może faktycznie wykonywać wiele optymalizacje 156 00:08:16,590 --> 00:08:19,560 poprawić prędkość i bezpieczeństwo twojego programu. 157 00:08:19,560 --> 00:08:24,480 I bezpieczeństwa, to znaczy nie pozwól Crash to z szalonymi błędów 158 00:08:24,480 --> 00:08:27,910 że możemy być przyzwyczajeni do oglądania w C. 159 00:08:27,910 --> 00:08:32,460 >> Wtedy możemy użyć interpolacji ciąg do hermetyzacji tego ciągu znaków. 160 00:08:32,460 --> 00:08:35,200 Tak więc widzimy, w tym Linia wydruku, cześć, 161 00:08:35,200 --> 00:08:38,950 a następnie za pomocą otwartych nawiasów ukośnikowe, a następnie nazwa mojego zmiennej, 162 00:08:38,950 --> 00:08:41,809 w tym przypadku stałej, zamknąć nawiasy. 163 00:08:41,809 --> 00:08:46,400 Ja w zasadzie to stawianie Zawartość tej zmiennej o nazwie imię i nazwisko 164 00:08:46,400 --> 00:08:50,240 wewnątrz łańcucha, a następnie drukowania nie wynik. 165 00:08:50,240 --> 00:08:54,070 >> Jest jeszcze jedna zmiana do tego pliku: które jest, że mam, na samej górze, 166 00:08:54,070 --> 00:08:57,340 umieścić w linii shebang, które w zasadzie tylko określa 167 00:08:57,340 --> 00:09:00,180 że chcę używać Swift tłumacz, który 168 00:09:00,180 --> 00:09:04,190 Oznacza to, że nie mam już do skompilować ten konkretny program. 169 00:09:04,190 --> 00:09:06,567 Mogę tylko uruchomić go jak własnego scenariusza. 170 00:09:06,567 --> 00:09:09,400 Jednak to, w tym przypadku, za sceny są opracowywane, a następnie 171 00:09:09,400 --> 00:09:10,030 jest prowadzony. 172 00:09:10,030 --> 00:09:13,540 To jest po prostu dla nas niewidzialne. 173 00:09:13,540 --> 00:09:15,880 >> W porządku, więc przejdźmy dalej. 174 00:09:15,880 --> 00:09:19,650 Więc jest nieco oszustwa że tak się stało wcześniej. 175 00:09:19,650 --> 00:09:23,230 Pokazałem ci, że może określić stałą. 176 00:09:23,230 --> 00:09:25,490 I mógłbym podać kilka danych, aby to zrobić. 177 00:09:25,490 --> 00:09:29,240 Ale w tym przypadku zauważyć, że tego nie zrobiłem właściwie określić typ danych 178 00:09:29,240 --> 00:09:29,820 że jest. 179 00:09:29,820 --> 00:09:32,780 A to dlatego, że Kompilator, Swift może 180 00:09:32,780 --> 00:09:36,910 wywnioskować, typ danych, tylko w oparciu na danych, które umieściłem w nim. 181 00:09:36,910 --> 00:09:41,760 Ponieważ wiadomo, że ocena ta Zmienna tutaj, prawo to dane 182 00:09:41,760 --> 00:09:43,370 tutaj, to wie, że jest to ciąg znaków. 183 00:09:43,370 --> 00:09:48,690 I tak stała ta nazwa jest zatem Będzie ciąg, jak również. 184 00:09:48,690 --> 00:09:52,730 >> Ale możemy być jawne o rodzaju, który jest 185 00:09:52,730 --> 00:09:55,790 mamy zamiar użyć do stałe lub zmienne 186 00:09:55,790 --> 00:10:01,590 za pomocą tej składni instead-- niech String nazwa okrężnicy równa 187 00:10:01,590 --> 00:10:05,530 Dan, który w tym przypadku oznacza, że ​​jesteśmy będzie określenie stałej zwanej nazwę. 188 00:10:05,530 --> 00:10:07,150 To będzie typu String. 189 00:10:07,150 --> 00:10:10,550 A wartość będzie Dan. 190 00:10:10,550 --> 00:10:12,550 Teraz w drugą stronę, że możemy stworzyć variables-- 191 00:10:12,550 --> 00:10:15,549 i są zmienne Zmienne, które Oznacza to, że w rzeczywistości dzieje 192 00:10:15,549 --> 00:10:19,670 zmienić ich zawartość kiedyś w czasie trwania kontekście 193 00:10:19,670 --> 00:10:23,890 że zmienna jest defined-- my użyć słowa kluczowego var, zamiast pozwolić. 194 00:10:23,890 --> 00:10:27,400 Ale znowu, domyślnie, jeśli nie wiesz, że trzeba manipulować, że dane, 195 00:10:27,400 --> 00:10:30,510 spróbuj użyć pozwolić na wydajności. 196 00:10:30,510 --> 00:10:33,740 >> W tym przypadku, możesz wtedy określić typ danych 197 00:10:33,740 --> 00:10:37,650 że spodziewamy się wewnątrz ta nowa zmienna o nazwie etykiety. 198 00:10:37,650 --> 00:10:38,800 To będzie ciąg. 199 00:10:38,800 --> 00:10:43,030 I będziemy następnie złączyć dwa ciągi razem, łańcuch witam, 200 00:10:43,030 --> 00:10:48,070 a ciąg reprezentowany przez zmienna, a raczej stała nazwa. 201 00:10:48,070 --> 00:10:50,660 >> Więc to jest dobre, bo to PHP jest trochę jak w tym my 202 00:10:50,660 --> 00:10:52,250 bardzo łatwy konkatenacji. 203 00:10:52,250 --> 00:10:56,350 Nie trzeba się automatycznie używać jakichkolwiek zarządzania pamięcią 204 00:10:56,350 --> 00:11:00,580 zwiększyć rozmiar i robić każdy rodzaj zabawnych rzeczy tam. 205 00:11:00,580 --> 00:11:05,040 To działa jak byśmy rzeczywiście spodziewać. 206 00:11:05,040 --> 00:11:09,370 >> W porządku, wszelkie pytania na ten temat? 207 00:11:09,370 --> 00:11:12,520 >> Teraz drugi powód, dla którego musimy mieć możliwość 208 00:11:12,520 --> 00:11:15,490 aby móc określić co typ zmiennych danych są 209 00:11:15,490 --> 00:11:18,170 Jest tak, ponieważ czasami nie Aby zainicjować zmienne 210 00:11:18,170 --> 00:11:21,080 z niektórych danych w punkt definicji. 211 00:11:21,080 --> 00:11:23,500 Więc w tym przypadku, powiedzmy, że chcę, aby rozpocząć wprowadzanie 212 00:11:23,500 --> 00:11:25,040 niektóre gatunki na książki gatunku. 213 00:11:25,040 --> 00:11:27,530 Dobrze wiem, że jeden z Zmienne, które chcę mieć 214 00:11:27,530 --> 00:11:30,280 ma być zmienne klasy. 215 00:11:30,280 --> 00:11:33,010 I wiemy też, że my ma to być liczbą całkowitą. 216 00:11:33,010 --> 00:11:36,030 Ale może jeszcze nie mają, że klasa jest dostępna. 217 00:11:36,030 --> 00:11:39,570 >> W Swift, trzeba określić typ danych 218 00:11:39,570 --> 00:11:44,000 który wiąże się z Zmienna lub pozwól stałe 219 00:11:44,000 --> 00:11:47,840 zanim można rzeczywiście używać tej zmiennej. 220 00:11:47,840 --> 00:11:51,170 Bo to jest silnie wpisane, trzeba skojarzyć typ 221 00:11:51,170 --> 00:11:52,890 z tych zmiennych. 222 00:11:52,890 --> 00:11:56,120 >> Więc w tym przypadku, jeśli nie mam właściwie zainicjowana pierwsza z jakąś wartość, 223 00:11:56,120 --> 00:12:00,520 to muszę powiedzieć, Swift, co Spodziewam się, że typ danych, aby być. 224 00:12:00,520 --> 00:12:02,650 I to będzie nadal że ten sam typ danych 225 00:12:02,650 --> 00:12:05,780 w całej historii tego programu. 226 00:12:05,780 --> 00:12:10,050 >> Teraz możesz mieć ochotę jak najszybciej Stworzyłem tę zmienną klasy 227 00:12:10,050 --> 00:12:13,530 i pod warunkiem, że jest całkowita 100, gdybym 228 00:12:13,530 --> 00:12:18,540 chcesz spróbować łączyć ciąg z tej liczby całkowitej, 229 00:12:18,540 --> 00:12:21,610 może ulec pokusie, aby nadal korzystać że operator konkatenacji 230 00:12:21,610 --> 00:12:24,500 jak my zaledwie kilka wierszy wcześniej. 231 00:12:24,500 --> 00:12:26,460 Ale niestety, to faktycznie nie będzie 232 00:12:26,460 --> 00:12:29,270 pracować, bo jesteś zasadniczo wykonywania 233 00:12:29,270 --> 00:12:32,380 Operacja na dwóch różnych typów. 234 00:12:32,380 --> 00:12:36,856 >> Teraz jest to bardzo różni się od innych w językach takich jak PHP, które są naprawdę 235 00:12:36,856 --> 00:12:38,480 Loosey goosey swoim rodzaju typów. 236 00:12:38,480 --> 00:12:40,030 Oni po prostu lubią, tak, co, mnie to nie obchodzi. 237 00:12:40,030 --> 00:12:42,710 Daj mi tylko jeden rodzaj i Może zrobię to, co trzeba. 238 00:12:42,710 --> 00:12:46,060 >> W tym przypadku, jest szybki bardzo surowe o rodzajach 239 00:12:46,060 --> 00:12:47,350 że masz do czynienia. 240 00:12:47,350 --> 00:12:50,700 Ten operator podsumowanie lub operator konkatenacji 241 00:12:50,700 --> 00:12:54,400 ma zasadniczo parę różne możliwe opcje. 242 00:12:54,400 --> 00:12:56,970 Możesz zrobić sumowanie z liczb całkowitych, lub 243 00:12:56,970 --> 00:13:00,870 może zrobić konkatenacji, a być może kilka innych rzeczy, jak również. 244 00:13:00,870 --> 00:13:05,550 Ale jeżeli ten podmiot nie uznaje co jest po obu jej stronach, 245 00:13:05,550 --> 00:13:10,452 czy raczej połączenie tych dwa rodzaje, nie jest to, co spodziewa się, 246 00:13:10,452 --> 00:13:11,910 wtedy to będzie powodować awarię. 247 00:13:11,910 --> 00:13:16,690 >> Więc w tym przypadku, co to znaczy mieć ciąg plus całkowitą? 248 00:13:16,690 --> 00:13:18,880 Również w tym kontekście to, że prawdopodobnie chcesz 249 00:13:18,880 --> 00:13:21,990 zrobić operację konkatenacji. 250 00:13:21,990 --> 00:13:26,420 Ale oczywiście komputer nie ma tego rodzaju sytuacji. 251 00:13:26,420 --> 00:13:29,950 A więc musimy zapewnić że dodatkowe informacje 252 00:13:29,950 --> 00:13:32,390 do niech wiedzą, co to jest to, że chcemy zrobić. 253 00:13:32,390 --> 00:13:36,860 >> Więc innymi słowy, fakt, że Swift jest silnie wpisany 254 00:13:36,860 --> 00:13:39,520 oznacza, że ​​trzeba zrobić trochę dodatkowej pracy 255 00:13:39,520 --> 00:13:42,100 aby dostać się do obsługi sposób, że chcesz. 256 00:13:42,100 --> 00:13:43,710 A w rezultacie jest bardziej bezpieczne. 257 00:13:43,710 --> 00:13:46,290 A kiedy już się pod uwagę tych typów, 258 00:13:46,290 --> 00:13:49,300 rzeczy po prostu szczerze zacząć działają całkiem dobrze. 259 00:13:49,300 --> 00:13:52,520 >> Tak więc w tym przypadku, to wtedy wykonywanie operacji konkatenacji 260 00:13:52,520 --> 00:13:56,040 jawnie odlewania liczbę całkowitą na łańcuch 261 00:13:56,040 --> 00:13:58,490 przez otoczenie go w tym Kapitał Funkcja S String, 262 00:13:58,490 --> 00:14:03,510 a następnie za pomocą połączonego łańcucha znaków Operator zmodyfikować naszą zmienną etykiety, 263 00:14:03,510 --> 00:14:06,280 a następnie wydrukować go. 264 00:14:06,280 --> 00:14:08,420 >> Jak na razie dobrze? 265 00:14:08,420 --> 00:14:12,020 Dobrze, przejdźmy dalej. 266 00:14:12,020 --> 00:14:16,300 >> Obecnie istnieje wiele danych typy, które możemy używać w Swift. 267 00:14:16,300 --> 00:14:21,620 Jak przyzwyczaili się do, możemy stworzyć zmienny tablicę. 268 00:14:21,620 --> 00:14:26,140 I że tablica może tylko zawiera jeden typ. 269 00:14:26,140 --> 00:14:30,360 >> Więc w tym przypadku, mamy zamiar stworzyć a Zmienne tablice liczb całkowitych, które 270 00:14:30,360 --> 00:14:34,800 nazwiemy stopnie, a my będziemy w stanie aby zapisać, że w nawiasach kwadratowych 271 00:14:34,800 --> 00:14:38,650 Format jak ty wyrosłeś przyzwyczajeni w różnych językach. 272 00:14:38,650 --> 00:14:41,150 Ale zauważ, że tu jesteśmy definiowanie kilka rzeczy. 273 00:14:41,150 --> 00:14:45,350 stopnie jest zmienny zmienna-- nie używać słowa kluczowego let. 274 00:14:45,350 --> 00:14:49,620 Więc to oznacza, że ​​możemy to zmienić zawartość tej tablicy. 275 00:14:49,620 --> 00:14:53,420 To jest typu Array Int, i możemy powiedzieć, że 276 00:14:53,420 --> 00:14:56,260 na podstawie tych nawiasach kwadratowych tutaj. 277 00:14:56,260 --> 00:14:58,930 >> Teraz jeden z miłych rzeczy jest to, że 278 00:14:58,930 --> 00:15:02,310 mają dostęp do wielu Dodatkowe informacje 279 00:15:02,310 --> 00:15:07,110 o tablicy tylko przy użyciu niektóre proste zapis dot. 280 00:15:07,110 --> 00:15:10,500 Tak na przykład, grades.count zapewnia nam 281 00:15:10,500 --> 00:15:14,820 liczba elementów, które istnieją w tym Tablica, którą możemy następnie przejść dość 282 00:15:14,820 --> 00:15:19,090 łatwo po prostu za pomocą tego zapisu dot. 283 00:15:19,090 --> 00:15:21,830 >> Jeśli chcesz dodać dodatkowe elementy do tej tablicy, 284 00:15:21,830 --> 00:15:27,220 nie można zrobić w stylu PHP gdzie po prostu wyraźnie zdefiniować, 285 00:15:27,220 --> 00:15:30,910 w danym indeksie, niektóre wartości które chcesz wstawić. 286 00:15:30,910 --> 00:15:37,210 Zamiast tego należy użyć append Sposób typu matrycy 287 00:15:37,210 --> 00:15:40,920 dołączyć ten element, 95, do tej listy. 288 00:15:40,920 --> 00:15:45,990 >> Więc teraz ta tablica ma następujące contents-- 100, 0, 90, 85. 289 00:15:45,990 --> 00:15:49,270 A teraz mamy dołączone 95, który również. 290 00:15:49,270 --> 00:15:51,830 >> Istnieją inne sposoby możemy dołączyć rzeczy. 291 00:15:51,830 --> 00:15:55,030 Rzeczywiście można używać operator podsumowanie, 292 00:15:55,030 --> 00:15:59,200 które będą interpretowane jako operacja tablica append. 293 00:15:59,200 --> 00:16:04,680 I możesz dołączyć kolejny tablica, której zawartość jest 70 i 80, 294 00:16:04,680 --> 00:16:05,560 do tej tablicy. 295 00:16:05,560 --> 00:16:08,250 Więc teraz mamy Zawartość w tej zmiennej 296 00:16:08,250 --> 00:16:17,220 grades-- 100, 0, 90, 85, 95, 70 i 80. 297 00:16:17,220 --> 00:16:21,850 To jest po prostu ładny, mały składniowym Cukier, że Swift dostarcza nam. 298 00:16:21,850 --> 00:16:23,850 >> Więc jeśli chcemy zsumować stopnie, jesteśmy być może 299 00:16:23,850 --> 00:16:27,340 będzie chciał iteracji na każdej pozycji w tej pętli. 300 00:16:27,340 --> 00:16:32,150 I mamy w Swift, pojęcie z pętli for, jak można by oczekiwać. 301 00:16:32,150 --> 00:16:35,350 Ale sposób, że wskazuje zakres jest nieco inny. 302 00:16:35,350 --> 00:16:37,790 Tak więc w tym przypadku, w celu Podsumowując wszystko, będziemy 303 00:16:37,790 --> 00:16:40,650 zamierza stworzyć tymczasowy Zmienna o nazwie suma w porządku dla nas 304 00:16:40,650 --> 00:16:42,580 utrzymać tę liczbę. 305 00:16:42,580 --> 00:16:44,430 >> I zauważyć naszą Dla Budowa tutaj pętli. 306 00:16:44,430 --> 00:16:46,820 Dla indeksu 0 .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Więc ta konstrukcja, 0 .. 00:17:01,860 mówiąc, że mamy zamiar stworzyć zakres liczb całkowitych od 0 do góry 310 00:17:01,860 --> 00:17:05,750 ale z wyłączeniem grades.count. 311 00:17:05,750 --> 00:17:09,577 Tak więc będzie to 0, 1, 2, 3, 4, 5, do czasu jednak wiele jednego 312 00:17:09,577 --> 00:17:10,410 przed grades.count. 313 00:17:10,410 --> 00:17:14,160 >> Więc to jest inaczej niż jak typowo stosuje się w pętlach 314 00:17:14,160 --> 00:17:18,569 gdzie masz jakieś indeks Zmienna, ustawić równą 0 w pierwszym, 315 00:17:18,569 --> 00:17:25,480 a następnie zintegrować, że do niektórych wartość mniejsza niż liczba elementów 316 00:17:25,480 --> 00:17:27,140 w tej tablicy. 317 00:17:27,140 --> 00:17:29,820 >> Więc nie jest to modyfikacja do tego, w rzeczywistości, 318 00:17:29,820 --> 00:17:35,010 co pozwala nam w bardzo prosty sposób ustawić różne rodzaje zakresów. 319 00:17:35,010 --> 00:17:40,570 Jeśli zmienisz ten zakres do trzy kropki, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 ten reprezentuje zakres 0 do grades.count włącznie, 321 00:17:45,120 --> 00:17:49,260 co oznacza, że ​​liczba ta jest również Następnie wymienione w tym zakresie. 322 00:17:49,260 --> 00:17:52,110 >> Ale to jest bardzo przydatne dla tych dokładnych rzeczy, 323 00:17:52,110 --> 00:17:54,590 gdy mamy do wykonania iteracje ponad pętli 324 00:17:54,590 --> 00:17:59,630 bo te indeksy są zera indeksowane, jak widzieliśmy w innych językach 325 00:17:59,630 --> 00:18:02,360 równie dobrze. 326 00:18:02,360 --> 00:18:05,210 Wszelkie pytania na ten temat dla pętli? 327 00:18:05,210 --> 00:18:10,660 >> Więc nie ma ukrytych definicji tej zmiennej indeksu, 328 00:18:10,660 --> 00:18:14,350 których wartość zaczyna się od 0, a nadal przy każdej iteracji pętli 329 00:18:14,350 --> 00:18:17,950 zwiększy się o 1 w górę, aż do punktu który jest równy grades.count, 330 00:18:17,950 --> 00:18:20,380 w którym miejscu, pętla przerywa. 331 00:18:20,380 --> 00:18:23,730 >> Zauważ, że w naszym ciąg interpolacji tutaj, 332 00:18:23,730 --> 00:18:26,910 faktycznie możemy wykonać kilka prostych manipulacje do tych wartości. 333 00:18:26,910 --> 00:18:31,230 Więc indeksu plus 1 będzie w rzeczywistości wykonać sumowanie tej wartości 334 00:18:31,230 --> 00:18:34,780 ponieważ indeks jest w tym przypadku liczbą całkowitą. 335 00:18:34,780 --> 00:18:37,810 I w tym momencie, że będzie następnie przekształcić do łańcucha 336 00:18:37,810 --> 00:18:42,230 i tym ciągu interpolowane tutaj i drukowane, jak moglibyśmy oczekiwać. , 337 00:18:42,230 --> 00:18:44,520 >> I miła rzecz o tablicach tutaj jest 338 00:18:44,520 --> 00:18:50,730 które mogą również mieć wartości pobierając i wartości ustawień 339 00:18:50,730 --> 00:18:54,080 za pomocą notacji nawiasu kwadratowego jako widzieliśmy w innych językach. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> W porządku, więc tutaj, teraz obliczyć naszą sumę wszystkich naszych gatunków. 342 00:19:01,030 --> 00:19:02,780 Teraz jakby następny logicznym krokiem byłoby 343 00:19:02,780 --> 00:19:07,580 wykonać operację dzielenia się znaleźć na średniej z tych klas. 344 00:19:07,580 --> 00:19:10,150 Ale coś ważnego tutaj się dzieje, które 345 00:19:10,150 --> 00:19:15,020 jest to, że suma ta jest chyba liczbą całkowitą. 346 00:19:15,020 --> 00:19:18,020 Ale musimy wykonać pewne rodzaj podwójnego podziału. 347 00:19:18,020 --> 00:19:20,600 I to ma być niezwykle ważne, gdy 348 00:19:20,600 --> 00:19:24,140 chcemy wykonać tę operację, bo to, co mówimy, 349 00:19:24,140 --> 00:19:28,430 jest to, że musimy rzeczywiście wykonać podział na dwa dwuosobowe. 350 00:19:28,430 --> 00:19:31,370 I znowu, ponieważ Swift jest bardzo silnie wpisane, 351 00:19:31,370 --> 00:19:36,760 musimy jawnie ustawić wszystkie z elementy do deblu, zanim rzeczywiście 352 00:19:36,760 --> 00:19:38,300 wykonania tej operacji. 353 00:19:38,300 --> 00:19:40,550 >> Aby więc dla nas wykonać podwójny podział, 354 00:19:40,550 --> 00:19:43,730 to nie jest wystarczające dla tylko jeden z tych elementów, aby być podwójne. 355 00:19:43,730 --> 00:19:46,400 Obaj mają być dwukrotnie, aby szybko 356 00:19:46,400 --> 00:19:50,860 aby mieć pewność, że ten jest to, co chcemy zrobić. 357 00:19:50,860 --> 00:19:54,360 Więc będzie to wyraźnie typecast suma, którą mamy obliczony powyżej 358 00:19:54,360 --> 00:19:58,970 a liczba gatunków do deblu, a następnie wykonać tę operację i sklep 359 00:19:58,970 --> 00:20:02,390 że w tym nowym zmiennej, a raczej ta nowa stała zwana średnia, 360 00:20:02,390 --> 00:20:06,810 które będą miały na rodzaj, to sobie wyobrazić? 361 00:20:06,810 --> 00:20:07,587 Podwójne, tak. 362 00:20:07,587 --> 00:20:09,420 Tak więc w tym przypadku nie trzeba go określić 363 00:20:09,420 --> 00:20:13,450 bo można wywnioskować z Operacja jaki rodzaj średniej danych 364 00:20:13,450 --> 00:20:14,730 będzie. 365 00:20:14,730 --> 00:20:19,025 Swift jest ogólnie bardzo dobry o jest w stanie wywnioskować typy. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> Chcesz zobaczyć uruchomić, czy mogę przejść? 368 00:20:24,200 --> 00:20:25,640 Chcę iść dalej. 369 00:20:25,640 --> 00:20:28,130 Wszelkie pytania dotyczące któregokolwiek z tego? 370 00:20:28,130 --> 00:20:28,630 Wielki. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Teraz mamy zamiar rozpocząć dostać się do dobre stuff-- funkcje definiowania, 373 00:20:35,010 --> 00:20:39,090 i kilka innych typów, które są unikalne dla Swifta, że ​​nie mają 374 00:20:39,090 --> 00:20:41,620 widoczne w innych językach aż do tego punktu, 375 00:20:41,620 --> 00:20:46,290 ale są obecne w innych w językach, które można znaleźć później. 376 00:20:46,290 --> 00:20:48,210 Więc po pierwsze, jeśli chcesz w celu określenia funkcji 377 00:20:48,210 --> 00:20:52,170 zdefiniować go funky słowa Funkcja, a następnie nazwa funkcji, 378 00:20:52,170 --> 00:20:56,710 a następnie w nawiasach, argumenty że chcesz, że funkcja do zaakceptowania. 379 00:20:56,710 --> 00:21:00,280 Argumenty muszą również specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 Należy również określić typ danych, które są, o ile nie mogą być zakładane. 381 00:21:05,010 --> 00:21:07,500 I zobaczymy, że niewiele zastrzeżenie w tylko trochę. 382 00:21:07,500 --> 00:21:09,920 >> Więc w tym przypadku mamy Funkcja o nazwie printGradeCount. 383 00:21:09,920 --> 00:21:12,840 Jedziemy do zaakceptowania zmienna-- czy też w tym przypadku, 384 00:21:12,840 --> 00:21:14,450 constant-- nazywa ujawniać ich. 385 00:21:14,450 --> 00:21:18,517 I to ma być typ tablicy liczb całkowitych. 386 00:21:18,517 --> 00:21:20,600 Teraz jest coś to jest naprawdę ważne tutaj 387 00:21:20,600 --> 00:21:21,849 że chcę, aby zrozumieć. 388 00:21:21,849 --> 00:21:27,560 Oznacza to, że domyślnie te argumenty które są wejścia do tej funkcji są 389 00:21:27,560 --> 00:21:34,380 zdefiniowane przy domniemanym słów kluczowych let, co oznacza, że ​​nie mogę zmienić tego 390 00:21:34,380 --> 00:21:39,850 ujawniać zmienna tutaj. 391 00:21:39,850 --> 00:21:43,360 A tego typu ma sens, dlatego, że przekazywanie danych w. 392 00:21:43,360 --> 00:21:45,860 A ty chyba nie chcesz go zmiana z pod tobą. 393 00:21:45,860 --> 00:21:50,800 Możliwe jest wyraźnie wskazuje że jest zmienna poprzez umieszczenie 394 00:21:50,800 --> 00:21:52,070 słowo kluczowe tutaj var. 395 00:21:52,070 --> 00:21:56,832 Ale to jest haczyka, że ​​mamy zauważyłem ludzie zrobili w przeszłości 396 00:21:56,832 --> 00:21:59,790 jest to, że zakłada się, że będzie być zmienne, podczas gdy w rzeczywistości 397 00:21:59,790 --> 00:22:02,640 Jest to stała. 398 00:22:02,640 --> 00:22:07,340 >> W porządku, więc o to, w tym przypadku, my nie podając żadnego rodzaju zwrotu. 399 00:22:07,340 --> 00:22:09,460 Pokażemy Ci, jak to zrobić że za chwilę. 400 00:22:09,460 --> 00:22:12,340 Ale zauważ, że mamy tutaj tylko proste, jeśli stanie. 401 00:22:12,340 --> 00:22:14,560 Jeśli dziennik ocen jest pusta, która w tym przypadku 402 00:22:14,560 --> 00:22:19,310 jest tylko własnością tej liczby całkowitej tablicy, następnie wydrukować coś. 403 00:22:19,310 --> 00:22:23,100 W przeciwnym razie możemy coś jeszcze zrobić. 404 00:22:23,100 --> 00:22:25,000 >> Bardzo proste do tej pory myślę. 405 00:22:25,000 --> 00:22:27,960 Ale mnie zatrzymać, jeśli masz jakiekolwiek pytania. 406 00:22:27,960 --> 00:22:33,350 >> Teraz ta funkcja, średnie, również trwa niektóre argumenty, a raczej jeden argument, 407 00:22:33,350 --> 00:22:37,507 który jest ujawniać, tym razem ma zamiar powrócić podwójne typu. 408 00:22:37,507 --> 00:22:39,340 Bo to jest informatyka średnia i to 409 00:22:39,340 --> 00:22:45,010 będzie rzeczywiście powrócić, że Obliczony średni do linii telefonicznej. 410 00:22:45,010 --> 00:22:50,070 >> W tym przypadku należy określić typ powrócić po strzałką. 411 00:22:50,070 --> 00:22:53,260 A może to poczuć trochę dziwne na początku. 412 00:22:53,260 --> 00:22:55,610 Urosły przyzwyczajeni do ustawiania powrotu 413 00:22:55,610 --> 00:22:57,720 typ przed nazwą funkcji. 414 00:22:57,720 --> 00:23:00,310 Ale jeśli myślisz, że tego w zakresie matematyki, 415 00:23:00,310 --> 00:23:03,320 jak wtedy, gdy masz matematyki które wyznaczają funkcję 416 00:23:03,320 --> 00:23:06,807 masz funkcji z niektórych Wejścia i produkuje wyjście. 417 00:23:06,807 --> 00:23:08,890 I to jest dokładnie to, co to ma naśladować. 418 00:23:08,890 --> 00:23:12,460 I jest kilka innych językach które mają podobną składnię, jak również, 419 00:23:12,460 --> 00:23:15,674 ale chyba żaden nie widziałem w CS50. 420 00:23:15,674 --> 00:23:17,090 Ale nadal nie mylić przez nią. 421 00:23:17,090 --> 00:23:21,650 Strzałka oznacza, co się dzieje być zwrócone w tym przypadku. 422 00:23:21,650 --> 00:23:23,650 OK, więc jak będziemy do wyliczenia tej średniej? 423 00:23:23,650 --> 00:23:25,649 Cóż, jeśli dziennik ocen jest pusty, a następnie jesteśmy 424 00:23:25,649 --> 00:23:30,731 zamiar powrócić 0, co może rozsądnym sposobem leczenia tego. 425 00:23:30,731 --> 00:23:32,980 Nie wiem, niech się z powrotem, że w trochę. 426 00:23:32,980 --> 00:23:34,688 To nie może właściwie być rozsądnym sposobem 427 00:23:34,688 --> 00:23:38,310 obliczyć średnią if mamy pusty ujawniać ich. 428 00:23:38,310 --> 00:23:41,260 >> Potem po prostu wykonywać naszą sumowanie. 429 00:23:41,260 --> 00:23:43,900 Zauważ, że tutaj rzeczywiście mają alternatywną wersję 430 00:23:43,900 --> 00:23:49,190 pętli, co pozwala nam do iteracji na każdej pozycji w tablicy 431 00:23:49,190 --> 00:23:53,630 i umieścić każdy element do własnej zmiennej. 432 00:23:53,630 --> 00:23:56,200 Poprzez określenie dla klasy w ujawniać, co mówimy, 433 00:23:56,200 --> 00:24:00,560 jest to, że będziemy w sposób dorozumiany utworzyć nową stałą o nazwie 434 00:24:00,560 --> 00:24:05,180 gatunek, który będzie reprezentować każdy unikatowy element w Dziennik ocen 435 00:24:05,180 --> 00:24:06,769 za każdym razem, że dla iteruje pętli. 436 00:24:06,769 --> 00:24:08,560 Tak więc po raz pierwszy, że jest prowadzony, klasa będzie 437 00:24:08,560 --> 00:24:09,800 być pierwsza pozycja w Dziennik ocen. 438 00:24:09,800 --> 00:24:12,300 Po raz drugi będzie taki Drugi element, tak dalej i tak dalej 439 00:24:12,300 --> 00:24:15,970 aż ujawniać ma wyczerpał się elementów. 440 00:24:15,970 --> 00:24:20,390 Wtedy będziemy mogli podsumować, że klasy do naszej zmiennej sumowania 441 00:24:20,390 --> 00:24:22,570 i zwrócić naszą średnio jak widzieliśmy wcześniej. 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 OK, jakieś pytania? 444 00:24:26,950 --> 00:24:27,699 Tak? 445 00:24:27,699 --> 00:24:28,990 PUBLICZNOŚCI: Mam dwa pytania. 446 00:24:28,990 --> 00:24:33,586 Numer jeden, hipotetycznie, mogą uruchomić całkowitą na ten jeden? 447 00:24:33,586 --> 00:24:35,604 Nie musi być podwójne, czy to prawda? 448 00:24:35,604 --> 00:24:37,520 DAN AMRMENDARIZ: Czy możesz Powtarzam to pytanie? 449 00:24:37,520 --> 00:24:39,587 PUBLICZNOŚCI: Czy mogę zrobić całkowita jako średnia? 450 00:24:39,587 --> 00:24:41,670 DAN AMRMENDARIZ: Czy możesz zrobić całkowitą jako średnia? 451 00:24:41,670 --> 00:24:45,015 Tak zwraca liczbę całkowitą Średni zamiast podwójnie? 452 00:24:45,015 --> 00:24:48,204 >> PUBLICZNOŚCI: Return-- was mają, że teraz poniżej. 453 00:24:48,204 --> 00:24:49,870 DAN AMRMENDARIZ: Tutaj, powrócić 0.0? 454 00:24:49,870 --> 00:24:51,790 PUBLICZNOŚCI: Tak, po prostu zwraca 0. 455 00:24:51,790 --> 00:24:56,590 Tak więc będzie to albo 80 lub 85, ale nie 85,2. 456 00:24:56,590 --> 00:24:59,465 >> DAN AMRMENDARIZ: Więc w tym przypadku, więc istnieje kilka różnych sposobów 457 00:24:59,465 --> 00:25:00,090 odpowiedzieć na to pytanie. 458 00:25:00,090 --> 00:25:02,760 Pozwól mi odpowiedzieć na nie w porządku. 459 00:25:02,760 --> 00:25:06,740 Więc jeśli po prostu zrobić to powrót 0, wartość 0 jest liczbą całkowitą. 460 00:25:06,740 --> 00:25:09,730 I tak, że spowoduje Błąd rodzaju w tym przypadku 461 00:25:09,730 --> 00:25:13,210 dlatego, że spodziewa się podwójne ale jest to powrót liczbę całkowitą. 462 00:25:13,210 --> 00:25:16,770 Jeśli chcę wrócić liczbę całkowitą, mogę. 463 00:25:16,770 --> 00:25:20,450 Mogę ustawić typ zwracanej int, zwraca 0 tutaj, 464 00:25:20,450 --> 00:25:22,047 i nie wykonywać podwójne podział. 465 00:25:22,047 --> 00:25:23,880 Ale wtedy będziemy robi podział całkowitej. 466 00:25:23,880 --> 00:25:27,080 A więc to nie dostać Średnio, że będziemy prawdopodobnie spodziewać. 467 00:25:27,080 --> 00:25:29,210 Ale tak możemy zmodyfikować typy w ten sposób. 468 00:25:29,210 --> 00:25:32,598 >> PUBLICZNOŚCI: A po drugie, ci mają jedno podwójne na górze. 469 00:25:32,598 --> 00:25:35,502 Ale na dole, kiedy nie wrócić dwuosobowy, 470 00:25:35,502 --> 00:25:38,280 to już automatycznie powrót podwójnym formacie. 471 00:25:38,280 --> 00:25:42,278 Dlaczego trzeba jeszcze go zdefiniować ze strzałką na górze z podwójnym? 472 00:25:42,278 --> 00:25:45,010 >> DAN AMRMENDARIZ: Tak W przypadku, gdy ten znajduje się 473 00:25:45,010 --> 00:25:50,580 z the-- więc powtórzyć pytanie, bo jest ukryte z powrotem 474 00:25:50,580 --> 00:25:56,030 Typy tutaj, jakiego typu to w rzeczywistości jest, musimy być jednoznaczne z Swift 475 00:25:56,030 --> 00:25:59,970 o tym, co chcemy powrót z tej funkcji 476 00:25:59,970 --> 00:26:02,690 tak, że kiedy występuje typ sprawdzanie, może upewnić się, 477 00:26:02,690 --> 00:26:05,850 że to, co rzeczywiście napisane na dole rzeczywiście spełnia to. 478 00:26:05,850 --> 00:26:10,225 Więc jest to coś w rodzaju kontroli z siebie coś w rodzaju sytuacji. 479 00:26:10,225 --> 00:26:11,050 Ale are-- 480 00:26:11,050 --> 00:26:12,560 >> PUBLICZNOŚCI: [niesłyszalne] WWW? 481 00:26:12,560 --> 00:26:19,490 >> DAN AMRMENDARIZ: istnieją przypadki, gdy możemy określić, że możemy w sposób dorozumiany 482 00:26:19,490 --> 00:26:21,550 ustawić typ zwracanej. 483 00:26:21,550 --> 00:26:23,940 Ale w tym przypadku, nie wiem myślę, że będzie działać. 484 00:26:23,940 --> 00:26:26,190 Jest jakaś inna składnia które zobaczymy później. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> W porządku, więc to źródło Kod jest trochę inaczej 487 00:26:35,280 --> 00:26:41,839 bo ten analizuje argumenty z funkcja, że ​​dzwonisz. 488 00:26:41,839 --> 00:26:44,130 Pokażę ci, jak to działa zanim rzeczywiście przejdziemy 489 00:26:44,130 --> 00:26:48,050 do ciekawych rzeczy że dzieje się w Swift. 490 00:26:48,050 --> 00:26:51,870 >> Więc w tym przypadku, jeśli po prostu uruchomić to Kod, zauważysz, że to, co robi 491 00:26:51,870 --> 00:26:54,900 jest-- natomiast, to niby daje mi dziwny błąd. 492 00:26:54,900 --> 00:26:59,730 Trzeba przekazać to kilka liczbami całkowitymi jako argument wiersza poleceń. 493 00:26:59,730 --> 00:27:06,220 Zobaczmy więc, 150 i 80, i naciśnij klawisz Enter dowiedzieć się, co to faktycznie robi. 494 00:27:06,220 --> 00:27:09,890 To przyjmowania każdego te wartości jako liczby całkowite. 495 00:27:09,890 --> 00:27:12,040 To wprowadzanie ich w Dziennik ocen. 496 00:27:12,040 --> 00:27:14,470 I wtedy to podczas występu że obliczanie średniej 497 00:27:14,470 --> 00:27:16,650 i wyprowadzania że spodziewamy. 498 00:27:16,650 --> 00:27:19,950 >> Ale oczywiście coś się dzieje na odrzuceniu coś z tym 499 00:27:19,950 --> 00:27:23,300 coś w postaci liczby całkowitej. 500 00:27:23,300 --> 00:27:27,300 Jak może pamiętacie od kiedy byliśmy czynienia z argumentów wiersza poleceń 501 00:27:27,300 --> 00:27:32,640 w C i innych językach, pierwszy 0-tej pozycji w tym argumencie wiersza poleceń 502 00:27:32,640 --> 00:27:35,774 Lista jest nazwa polecenia że faktycznie wykonywane. 503 00:27:35,774 --> 00:27:38,690 Więc w tym przypadku, jestem po prostu pętli w stosunku do wszystkich argumentów wiersza poleceń. 504 00:27:38,690 --> 00:27:41,650 Ale nie robię jakiś rodzaj fantazji sprawdzić, aby przejść nad tym pierwszym. 505 00:27:41,650 --> 00:27:45,920 Ja jestem tylko jawnie lub niejawnie jestem sprawdzenia, które z tych typów 506 00:27:45,920 --> 00:27:49,900 są liczbami całkowitymi przed I rzeczywiście wykonania tego obliczenia. 507 00:27:49,900 --> 00:27:52,420 >> I to jest w zasadzie co sie tu dzieje. 508 00:27:52,420 --> 00:27:55,860 Dla każdego argumentu w Argumenty procesu jest, 509 00:27:55,860 --> 00:27:59,210 Mam zamiar wykonać jakąś kontrolę. 510 00:27:59,210 --> 00:28:01,970 I w tym przypadku, zamierzam aby spróbować najpierw przekonwertować 511 00:28:01,970 --> 00:28:07,620 że argument do liczby całkowitej przez wykonania jawnej typecast, 512 00:28:07,620 --> 00:28:12,310 bo to, na wejściu, ciąg i nie jest w rzeczywistości całkowitą. 513 00:28:12,310 --> 00:28:18,140 >> Ale to jest rodzaj składni dziwne, jeśli pozwól klasy wynosi Int (argument). 514 00:28:18,140 --> 00:28:21,120 Co się rzeczywiście dzieje tutaj jest bardzo 515 00:28:21,120 --> 00:28:24,390 ważne dla używając Swifta. 516 00:28:24,390 --> 00:28:27,610 To jest za pomocą co nazywa się opcja Typ. 517 00:28:27,610 --> 00:28:34,790 >> Tak więc ta funkcja, Int (argument), zwraca nie tylko liczbę całkowitą, ale powraca 518 00:28:34,790 --> 00:28:37,470 co nazywa opcjonalną liczbą całkowitą. 519 00:28:37,470 --> 00:28:41,200 A więc jest to swego rodzaju typ wierzchem typu. 520 00:28:41,200 --> 00:28:45,900 Jakby można sobie wyobrazić, jak to wraca jak opakowania. 521 00:28:45,900 --> 00:28:47,750 A po otwarciu, że Opakowanie to czy 522 00:28:47,750 --> 00:28:53,930 jest liczbą całkowitą, która jest wynikiem albo ma absolutnie nic w nim w ogóle. 523 00:28:53,930 --> 00:28:58,140 I jest użyteczny jako kontrolę błędów Mechanizm, ponieważ w tym przypadku 524 00:28:58,140 --> 00:29:02,080 możemy dowiedzieć się, był to Typ konwersji sukces? 525 00:29:02,080 --> 00:29:05,810 Jeśli tak, to w rzeczywistości będzie mieć całkowitą wewnątrz. 526 00:29:05,810 --> 00:29:08,750 W przeciwnym razie będzie musiał niektórych wartości, które my nazywamy zerowe, które 527 00:29:08,750 --> 00:29:10,920 reprezentuje brak całkowitą w ogóle. 528 00:29:10,920 --> 00:29:13,270 To naprawdę przedstawiciel nic. 529 00:29:13,270 --> 00:29:18,130 >> A więc, jeżeli budowa pozwala nam rozpakować tego pakietu, 530 00:29:18,130 --> 00:29:19,850 że opcja wiązania. 531 00:29:19,850 --> 00:29:25,560 A jeśli jesteśmy w stanie rozpakować, że spakować i znaleźć liczbę całkowitą w środku, 532 00:29:25,560 --> 00:29:27,720 to co mówimy, tutaj jest to, że będzie to 533 00:29:27,720 --> 00:29:33,090 pozwalają, że wartość należy ustawić na stała ta nazywa klasa. 534 00:29:33,090 --> 00:29:36,590 I ta część instrukcji if, górna część if 535 00:29:36,590 --> 00:29:40,390 będzie działać, bo to unwrap powiodło. 536 00:29:40,390 --> 00:29:43,290 >> Jeśli tak się składa, że wystąpił błąd może 537 00:29:43,290 --> 00:29:47,040 w tym wyraźną konwersji typu z ciągu znaków na liczbę całkowitą, może 538 00:29:47,040 --> 00:29:49,160 jest to wartość, na przykład ABC. 539 00:29:49,160 --> 00:29:52,120 I to właściwie nie dzieje do konwersji na liczbę całkowitą. 540 00:29:52,120 --> 00:29:55,520 Następnie powróci nil, co nie jest liczbą całkowitą. 541 00:29:55,520 --> 00:29:57,570 I to także wtedy, gdy oświadczenie nie. 542 00:29:57,570 --> 00:30:01,930 klasa nie istnieje, ponieważ nie ma zawartości całkowitej. 543 00:30:01,930 --> 00:30:06,391 I będzie zamiast uruchomić ten blok innego. 544 00:30:06,391 --> 00:30:06,890 Tak? 545 00:30:06,890 --> 00:30:09,652 >> PUBLICZNOŚCI: Nil jest N-I-L? 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ: nil jest N-I-L, tak. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> Więc to jest być może jednym z najtrudniejsze rzeczy o Swift, 549 00:30:20,310 --> 00:30:23,690 zwłaszcza gdy jesteś w chwasty na app iOS 550 00:30:23,690 --> 00:30:27,442 a ty rzeczywiście próbuje zrobić kilka rozwój tam. 551 00:30:27,442 --> 00:30:29,400 To będzie krzyczeć na ciebie o opcjonalne. 552 00:30:29,400 --> 00:30:33,050 To będzie pytanie o znaki zapytania i wykrzykniki. 553 00:30:33,050 --> 00:30:37,100 Ale kiedy się dowiedzieć out-- jeśli Ciebie poświęcić trochę czasu na zastanawianie się, 554 00:30:37,100 --> 00:30:41,990 co się dzieje z opcjonalnych rodzajów, zaoszczędzisz sobie sporo bólu głowy 555 00:30:41,990 --> 00:30:46,040 jak próbujesz Napisać aplikację w Swift. 556 00:30:46,040 --> 00:30:47,660 >> W rzeczywistości jest to bardzo potężne narzędzie. 557 00:30:47,660 --> 00:30:49,826 A ja po prostu trzeba Uwierz mi na słowo to teraz. 558 00:30:49,826 --> 00:30:52,620 Ale zobaczymy tę budowę i kilka innych podoba 559 00:30:52,620 --> 00:30:56,740 W niektórych innych kodu źródłowego, pokażemy, w tylko trochę. 560 00:30:56,740 --> 00:31:00,440 >> Czy są jakieś wstępne pytania tutaj? 561 00:31:00,440 --> 00:31:03,790 562 00:31:03,790 --> 00:31:08,690 Tak więc ważne jest to, że na wynos opcjonalnie typ jest swego rodzaju metatype. 563 00:31:08,690 --> 00:31:12,500 To albo ma wartość, a jeśli tak, to 564 00:31:12,500 --> 00:31:18,110 być może ma to wartość związaną z nim, lub nie ma żadnej wartości, 565 00:31:18,110 --> 00:31:19,620 i jest reprezentowana przez zera. 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 Reszta jest to chyba jak można się spodziewać. 568 00:31:28,870 --> 00:31:32,900 >> Więc ziemi do Trudność jeszcze raz. 569 00:31:32,900 --> 00:31:37,070 I tym razem, rzućmy okiem na niektóre inne typy danych, które rzeczywiście istnieją. 570 00:31:37,070 --> 00:31:41,290 Jednym z nich jest słowników, które bardzo podobne do słowników Python. 571 00:31:41,290 --> 00:31:48,270 Jest nieco podobny do tabeli mieszania w C. Zasadniczo jest to mapowanie klawiszy 572 00:31:48,270 --> 00:31:49,820 gdzie klucze mogą być ciągi. 573 00:31:49,820 --> 00:31:52,670 A kiedy patrzysz się te klucze, te klucze będą miały wartość. 574 00:31:52,670 --> 00:31:56,020 Więc to nie dość, tablica, ale zamiast bardziej związani 575 00:31:56,020 --> 00:31:58,810 do mieszania mapie lub tabeli mieszania. 576 00:31:58,810 --> 00:32:02,420 >> Zobaczmy, jak to ma do pracy, zanim rzeczywiście 577 00:32:02,420 --> 00:32:05,210 przejść do kodu źródłowego samego. 578 00:32:05,210 --> 00:32:07,680 Jeśli po prostu uruchomić to, nic tak naprawdę się dzieje. 579 00:32:07,680 --> 00:32:12,430 To mówi mi, że spodziewam Niektóre parametry następnego typu. 580 00:32:12,430 --> 00:32:16,050 Więc mam zamiar dostarczyć do to jakiś problem ustawić nazwy, 581 00:32:16,050 --> 00:32:18,490 tak pset0, może mam 100. 582 00:32:18,490 --> 00:32:20,790 I pset1, mam 5. 583 00:32:20,790 --> 00:32:24,630 A potem na egzaminie, ja tak naprawdę dobrze i dostał 30. 584 00:32:24,630 --> 00:32:27,180 I oops, I hit miejsce tutaj. 585 00:32:27,180 --> 00:32:30,940 >> Kiedy naciśnij Enter, można zobaczyć wykonuje pewne obliczenia. 586 00:32:30,940 --> 00:32:33,740 Mówi dziennik ocen jest trzy stopnie, pset1, pset0, egzamin. 587 00:32:33,740 --> 00:32:36,120 I ujawniać ma ten specyficzny średniej. 588 00:32:36,120 --> 00:32:38,370 Więc jeszcze raz, pracujemy z tym ujawniać idei, 589 00:32:38,370 --> 00:32:44,650 ale będziemy kontynuować Iterowanie ze złożonością naszej funkcji. 590 00:32:44,650 --> 00:32:47,650 >> Tak więc na początku, jesteśmy po prostu zamierza utworzyć funkcję 591 00:32:47,650 --> 00:32:49,390 jest odpowiedzialny za drukowanie wykorzystanie. 592 00:32:49,390 --> 00:32:51,920 I jest to zjazd Funkcja, która będzie po prostu 593 00:32:51,920 --> 00:32:53,710 przymusowo zamknąć aplikację. 594 00:32:53,710 --> 00:32:56,530 To nie jest coś, co można używać w iOS aplikacji. 595 00:32:56,530 --> 00:32:59,750 To jest tylko w tym przypadku, z argumentem wiersza poleceń. 596 00:32:59,750 --> 00:33:01,990 Następny zaczniemy kierunku Xcode. 597 00:33:01,990 --> 00:33:07,760 Ale to specyficzne polecenie linia programu styl Swift. 598 00:33:07,760 --> 00:33:11,490 >> Rzućmy okiem na niektóre z ciekawych rzeczy tutaj. 599 00:33:11,490 --> 00:33:15,150 Zobaczmy, tylko kilka ciekawych rzeczy wspomnieć, być może 600 00:33:15,150 --> 00:33:19,930 jest to, że w swoim funkcji drukując szereg klas, 601 00:33:19,930 --> 00:33:26,090 Może pamiętacie, że miałem tę listę z items-- pset1, pset0 i egzaminu. 602 00:33:26,090 --> 00:33:29,130 Można rzeczywiście szybko i łatwo to zrobić 603 00:33:29,130 --> 00:33:34,490 poprzez ujawniać ich, co jest Słownik, który ma klucze i wartości. 604 00:33:34,490 --> 00:33:38,730 Znajdź wszystkie klawisze, jest przez metoda tutaj klawisze kropka, 605 00:33:38,730 --> 00:33:43,180 a następnie użyć tego joinWithSeparator, które następnie wszystkie klawisze 606 00:33:43,180 --> 00:33:48,590 że mieliśmy wpisane, pset1-- lub Przepraszam, pset0, pset1 i exam-- 607 00:33:48,590 --> 00:33:53,030 i złączyć je razem za pomocą przecinka i spacji 608 00:33:53,030 --> 00:33:55,400 stworzyć jeden długi ciąg. 609 00:33:55,400 --> 00:34:00,190 Ta operacja jest po prostu fenomenalnie przyłączyć użyteczna w różnych kontekstach. 610 00:34:00,190 --> 00:34:03,450 I tak to jest to joinWithSeparator. 611 00:34:03,450 --> 00:34:06,939 >> I to jest jedna rzecz, która jest zmieniony z Swift 1 do Swift 2. 612 00:34:06,939 --> 00:34:08,730 Tam kiedyś Python style-- jeśli jesteś 613 00:34:08,730 --> 00:34:13,219 zaznajomieni z Python-- pytona Styl dołączyć metodę na sznurkach. 614 00:34:13,219 --> 00:34:15,699 Ale to nie jest już w przypadku Swift 2. 615 00:34:15,699 --> 00:34:19,400 Chcesz użyć, jeśli chcesz Łączenie tablicy rzeczy 616 00:34:19,400 --> 00:34:23,380 wraz z ciągiem. 617 00:34:23,380 --> 00:34:27,889 >> Więc może to w naszym dyskusja średnio przed, 618 00:34:27,889 --> 00:34:32,659 to sprawia, że ​​trochę więcej sensu dla nas, aby ustawić średnią funkcji 619 00:34:32,659 --> 00:34:36,610 być opcjonalne podwójne raczej niż tylko wyraźnego podwójnym. 620 00:34:36,610 --> 00:34:39,239 Ponieważ mieliśmy, że niezwykły stan, w którym, 621 00:34:39,239 --> 00:34:41,550 co, jeśli dziennik ocen rzeczywistości nie ma wartości w niej? 622 00:34:41,550 --> 00:34:44,280 Co powinno średni zwrot? 623 00:34:44,280 --> 00:34:46,350 >> No cóż, może w C można zrobiłby coś 624 00:34:46,350 --> 00:34:50,040 jak przewidziane wartości wskaźnikowych, jak 0,0, a może to liczba ujemna, 625 00:34:50,040 --> 00:34:53,690 czy coś po prostu reprezentuje fakt, że jakiś stan błędu 626 00:34:53,690 --> 00:34:57,910 i być może w rzeczywistości nie mają możliwość obliczyć tę średnią. 627 00:34:57,910 --> 00:35:05,590 Cóż piękno określając opcjonalnie Typ byłoby to zrobić. 628 00:35:05,590 --> 00:35:09,540 A ja teraz mówiąc wszystkie te słowa, ale to faktycznie nie wykorzystuje ewentualne,. 629 00:35:09,540 --> 00:35:12,970 Ale zobaczymy, że w ciągu minut, gdzie możemy ustawić średni 630 00:35:12,970 --> 00:35:17,230 być opcjonalnie typ danych, tak, że jeśli rzeczywiście zwraca niektóre dane, a następnie 631 00:35:17,230 --> 00:35:18,470 wrócimy tych danych. 632 00:35:18,470 --> 00:35:20,570 W przeciwnym razie wrócimy nil, mówiąc, że to 633 00:35:20,570 --> 00:35:22,200 ma znaczący obliczeń. 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> Przejdźmy do czegoś innego. 636 00:35:28,570 --> 00:35:35,910 Więc tutaj, byliśmy patrząc na wszystkie te przykłady w wierszu poleceń. 637 00:35:35,910 --> 00:35:39,470 Ale tak naprawdę, co masz zamiar do czynienia z jest Xcode. 638 00:35:39,470 --> 00:35:43,720 I jeden z miłych rzeczy Xcode jest, a konkretnie w Swift, 639 00:35:43,720 --> 00:35:47,450 jest to, że mamy w tym coś, co nazywa się plac zabaw. 640 00:35:47,450 --> 00:35:51,470 I plac zabaw wcale app iOS. 641 00:35:51,470 --> 00:35:54,751 Ale pozwala eksperymentować z Swift w bardzo łatwy sposób. 642 00:35:54,751 --> 00:35:56,000 Możesz wpisać wszystkie kodzie. 643 00:35:56,000 --> 00:35:58,140 To ładnie podświetlone tutaj Syntaktyka. 644 00:35:58,140 --> 00:36:01,600 Podczas tworzenia nowego pliku, pojawi się pytanie Ci, jeśli chcesz stworzyć plac zabaw. 645 00:36:01,600 --> 00:36:08,720 Ale Zaletą placu zabaw jest to, że po prawej stronie okna, 646 00:36:08,720 --> 00:36:12,020 to właściwie pokazać, Wyjście z kodu. 647 00:36:12,020 --> 00:36:16,110 Więc jeśli mogę przewinąć w dół, możemy zobaczyć, co wyjście z różnych linii kodu 648 00:36:16,110 --> 00:36:17,200 rzeczywiście dzieje się. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> Więc w tym przypadku, będziemy zmienić kierunek tylko trochę 651 00:36:26,790 --> 00:36:30,960 i mówić o czymś, co jest naprawdę ważne, aby tego poziomu sposób wysokiej 652 00:36:30,960 --> 00:36:34,020 że Swift działa, i to Jest to pomysł zamknięcia. 653 00:36:34,020 --> 00:36:36,960 I to prawdopodobnie widziałem tego trochę w JavaScript. 654 00:36:36,960 --> 00:36:40,770 Dla tych z Was, które są w CS50, zamknięcia 655 00:36:40,770 --> 00:36:47,240 są bardzo popularne, bardzo dobry sposób robienia rzeczy wysokim poziomie w nowoczesnych językach. 656 00:36:47,240 --> 00:36:50,270 Ale jest to również rodzaj trudne do owiń głowę po raz pierwszy. 657 00:36:50,270 --> 00:36:52,269 Więc jeśli szukasz na to pierwszy raz, to jest OK. 658 00:36:52,269 --> 00:36:56,740 Wystarczy spojrzeć na kod źródłowy i sprawdzić, czy można ustalić to w domu. 659 00:36:56,740 --> 00:37:01,050 >> Więc w tym przypadku, powiedzmy, że mamy Aby utworzyć wiele przedstawicielek 660 00:37:01,050 --> 00:37:04,134 z pewną stałą wartość. 661 00:37:04,134 --> 00:37:05,800 Tak więc w tym przypadku mogę utworzyć funkcję. 662 00:37:05,800 --> 00:37:09,270 Mam zamiar nazwać moc 2, którego jedynym celem w życiu 663 00:37:09,270 --> 00:37:15,770 jest trochę wejście i podwójne Opisz i powrotu tej wartości. 664 00:37:15,770 --> 00:37:21,210 Zauważ, że tu jestem przyjmowania jednego typu danych. 665 00:37:21,210 --> 00:37:23,137 To będzie zmienną x. 666 00:37:23,137 --> 00:37:23,970 To typu double. 667 00:37:23,970 --> 00:37:26,190 I mam zamiar wrócić podwójnym tutaj. 668 00:37:26,190 --> 00:37:29,100 A ja po prostu zrobić bardzo, szczerze mówiąc, dość 669 00:37:29,100 --> 00:37:32,650 naiwny sposób na podwojenie tej wartości. 670 00:37:32,650 --> 00:37:35,600 I powiem ci, dlaczego to pokazać Jest to przydatne w ciągu sekundy. 671 00:37:35,600 --> 00:37:40,418 >> Zauważ, że mamy tutaj ten zakres jeszcze raz. czegoś w 1, kropka 672 00:37:40,418 --> 00:37:44,130 kropka kropka, 2, co oznacza, że pętla będzie działać dwa razy. 673 00:37:44,130 --> 00:37:46,480 Ale ta reprezentuje zmienną manekina. 674 00:37:46,480 --> 00:37:49,650 Oznacza to, że nie jestem naprawdę będzie używać tej zmiennej w dowolnym miejscu 675 00:37:49,650 --> 00:37:51,070 wewnątrz tej pętli. 676 00:37:51,070 --> 00:37:55,380 Chcę tylko tej linii kodu do uruchomienia dwa razy, 677 00:37:55,380 --> 00:37:58,980 bez konieczności wiedzieć wartość tego zakresu. 678 00:37:58,980 --> 00:38:02,570 >> Więc w tym przypadku używam wynik razy x razy, co w istocie 679 00:38:02,570 --> 00:38:06,560 Oznacza to, że jestem kwadratury tę wartość. 680 00:38:06,560 --> 00:38:10,230 I to się dzieje działa tak jak oczekujemy. 681 00:38:10,230 --> 00:38:16,410 Moc 2, przekazując wartość 2.0 daje nam moc 4. 682 00:38:16,410 --> 00:38:18,810 3.2 Prace na 10.24. 683 00:38:18,810 --> 00:38:22,660 >> Teraz możemy zrobić podobny co do mocy 3. 684 00:38:22,660 --> 00:38:25,330 Ale teraz zmienić tylko zakres. 685 00:38:25,330 --> 00:38:28,840 Dla manekina zmiennej w 1 do 3, pomnożyć 3 razy, 686 00:38:28,840 --> 00:38:29,830 i zrobić to samo. 687 00:38:29,830 --> 00:38:32,240 >> Więc to może czuć się trochę wydumane. 688 00:38:32,240 --> 00:38:34,270 Ale jest ważnym rzeczą tutaj, które 689 00:38:34,270 --> 00:38:37,770 jest to, że patrząc na nich dwie funkcje, nie 690 00:38:37,770 --> 00:38:43,600 Tylko jedna rzecz jest inna, która to wartość w tym zakresie. 691 00:38:43,600 --> 00:38:46,910 Wszystko inne na temat tych dwóch Funkcje, moc 3 i potęgą 2, 692 00:38:46,910 --> 00:38:50,440 są w rzeczywistości identyczne ze względu pracują w ten sam sposób. 693 00:38:50,440 --> 00:38:53,460 >> Więc w tym momencie, trochę dzwonek alarmowy powinien być schodzili. 694 00:38:53,460 --> 00:38:56,200 Mam nadzieję, że to, co mówisz, wiesz, to czuje się trochę 695 00:38:56,200 --> 00:38:59,250 jak powielania wysiłków. 696 00:38:59,250 --> 00:39:02,950 Być może istnieje sposób, że tak będzie móc upakować wszystko 697 00:39:02,950 --> 00:39:06,630 i zapewniają funkcję lub utworzyć funkcję, która 698 00:39:06,630 --> 00:39:11,550 robi dokładnie to, co chcę, bez konieczności go wpisać się wyraźnie. 699 00:39:11,550 --> 00:39:15,732 I to jest to, co moc zamknięcia pozwala nam robić. 700 00:39:15,732 --> 00:39:16,940 Warto więc spojrzeć na to. 701 00:39:16,940 --> 00:39:18,700 A ja spędzić kilka minut na to, bo to 702 00:39:18,700 --> 00:39:20,310 jest bardzo ważne dla Swifta. 703 00:39:20,310 --> 00:39:22,900 Widzimy to cały czas. 704 00:39:22,900 --> 00:39:24,550 Jedziemy do definiowania funkcji. 705 00:39:24,550 --> 00:39:26,380 To będzie się nazywać powerOf. 706 00:39:26,380 --> 00:39:29,470 To będzie do zaakceptowania parametr zwany y typu int. 707 00:39:29,470 --> 00:39:32,220 Ale spójrz na typ zwracany. 708 00:39:32,220 --> 00:39:38,730 Typ zwracany jest w nawiasy, podwójną strzałkę podwójnym. 709 00:39:38,730 --> 00:39:43,370 Co oznacza, że ​​tej funkcji, funkcja ta powerOf, 710 00:39:43,370 --> 00:39:46,550 zwraca funkcję. 711 00:39:46,550 --> 00:39:50,845 Że przyjmuje się podwójne i powrót podwójnym. 712 00:39:50,845 --> 00:39:53,720 Tak, że może brzmieć rodzaj szaleństwa, ale niech przewinąć trochę 713 00:39:53,720 --> 00:39:55,060 i sprawdź, co się dzieje. 714 00:39:55,060 --> 00:39:57,910 Jesteśmy wewnątrz tej funkcji powerOf. 715 00:39:57,910 --> 00:40:00,760 Tworzymy nową funkcję nazywa exponentiator, 716 00:40:00,760 --> 00:40:02,900 ale to nie ma znaczenia, co to jest. 717 00:40:02,900 --> 00:40:06,410 >> Zauważ, że to nie ma wartość wejściowa x. 718 00:40:06,410 --> 00:40:09,910 I ma to w podwójnej i powrót podwójnym. 719 00:40:09,910 --> 00:40:16,320 I jest to ten sam kod, który możemy widzieliśmy powyżej, z tym, że wartość 2 720 00:40:16,320 --> 00:40:20,060 lub wartość 3, które górna granica w tym zakresie, 721 00:40:20,060 --> 00:40:23,210 zastąpiono to wartość y, które 722 00:40:23,210 --> 00:40:27,230 to początkowe parametry naszego funkcji powerOf. 723 00:40:27,230 --> 00:40:31,700 I w tym momencie powrót exponentiator. 724 00:40:31,700 --> 00:40:33,345 Wracamy funkcji. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> To trochę jak mały umysł dmuchanie. 727 00:40:39,550 --> 00:40:44,360 Ale wyobraźmy sobie, co się dzieje, gdy zgłoszę tę funkcję powerOf 728 00:40:44,360 --> 00:40:47,610 i przejść do niego jakąś wartość, jak 2. 729 00:40:47,610 --> 00:40:50,020 Oznacza to, że Mam teraz wartość 730 00:40:50,020 --> 00:40:55,130 2 dla y, co oznacza, że ​​wartość ta y w tej funkcji exponentiator 731 00:40:55,130 --> 00:40:56,410 będzie, że wartość 2. 732 00:40:56,410 --> 00:41:01,290 Ale wracam to Funkcja exponentiator. 733 00:41:01,290 --> 00:41:05,900 >> Tak więc zauważyć, co Swift mówi, że Stworzyliśmy w tym przypadku. 734 00:41:05,900 --> 00:41:10,550 niech Plac jest definicja, to funkcja, która akceptuje podwójne 735 00:41:10,550 --> 00:41:12,610 i zwraca się podwójnie. 736 00:41:12,610 --> 00:41:16,590 Stworzyłem funkcji że kwadratów coś 737 00:41:16,590 --> 00:41:19,782 za pomocą tego mechanizmu tutaj. 738 00:41:19,782 --> 00:41:22,490 A tak naprawdę, co się dzieje jest że wraca z tej funkcji 739 00:41:22,490 --> 00:41:26,390 exponentiator, ale wartość ta y jest owinięty w jej wnętrzu. 740 00:41:26,390 --> 00:41:31,080 A więc teraz za każdym razem korzystać z tego zmienna lub stała ta nazywa 741 00:41:31,080 --> 00:41:35,180 kwadratowe, że to będzie zachowywać jako funkcji. 742 00:41:35,180 --> 00:41:39,960 I tak mogę to nazwać tę zmienną jak chciałbym wywołać funkcję, 743 00:41:39,960 --> 00:41:43,830 i przejść do niego numer, jak w tym przypadku 3. 744 00:41:43,830 --> 00:41:45,910 A ja wtedy pogodzić tę wartość. 745 00:41:45,910 --> 00:41:53,340 Więc 3 do kwadratu będzie stać 9, jak widać tutaj. 746 00:41:53,340 --> 00:41:56,530 >> Naprawdę szalone, ale to teraz pozwala mi możliwość 747 00:41:56,530 --> 00:41:59,040 tworzyć inne funkcje powerOf. 748 00:41:59,040 --> 00:42:03,680 Jak mogę powiedzieć, OK, dobrze teraz chcę w celu utworzenia nowej funkcji powerOf (3), 749 00:42:03,680 --> 00:42:06,290 i zapisać, że w stała zwana kostka. 750 00:42:06,290 --> 00:42:10,220 A teraz kostka będzie oddzielna funkcja, która będzie następnie 751 00:42:10,220 --> 00:42:14,800 podjąć jakąś wartość jako wejścia i kostki, które wartość jak widać w dolnej linii 752 00:42:14,800 --> 00:42:16,420 tutaj. 753 00:42:16,420 --> 00:42:18,590 kostka 2 będzie skutkować 8. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> Mam nadzieję, że całkiem miłe rzeczy. 756 00:42:22,680 --> 00:42:25,920 Nigdy nie widziałem tego wcześniej. 757 00:42:25,920 --> 00:42:29,990 Zachęcam do zajrzeć do zamknięcia i zbadać to trochę więcej. 758 00:42:29,990 --> 00:42:33,570 To naprawdę potężne rzeczy widzimy dużo w JavaScript i innych języków. 759 00:42:33,570 --> 00:42:37,160 To naprawdę ważne, aby zrozumienie API oraz 760 00:42:37,160 --> 00:42:38,620 że dostaniemy w ciągu sekundy. 761 00:42:38,620 --> 00:42:39,456 Tak? 762 00:42:39,456 --> 00:42:43,740 >> PUBLICZNOŚCI: Kiedy robisz powerOf (2), nawias, a następnie 763 00:42:43,740 --> 00:42:48,764 kolejny nawias, inny input-- jesteś w zasadzie wymiany plac. 764 00:42:48,764 --> 00:42:50,930 DAN AMRMENDARIZ: Więc szukać w ostatniej linii tutaj. 765 00:42:50,930 --> 00:42:55,930 To jest rzeczywiście całkowicie możliwe zrobić łańcuchowego, jak sugeruje. 766 00:42:55,930 --> 00:43:00,990 Więc powerOf (5) oznacza, że ​​będziemy mieć exponentiator z 5 tutaj. 767 00:43:00,990 --> 00:43:04,160 Tak to jest w istocie będzie to samo, co 4 do piątej potęgi, 768 00:43:04,160 --> 00:43:07,200 bo my stworzyliśmy exponentiating funkcjonować do piątej potęgi, 769 00:43:07,200 --> 00:43:09,920 i przekazujemy do że działają wartość 4. 770 00:43:09,920 --> 00:43:12,619 I mamy tę wartość że oczekujemy, 1024. 771 00:43:12,619 --> 00:43:14,785 PUBLICZNOŚCI: A to nie jest wymienić, więc to sprawia, że ​​łatwiej 772 00:43:14,785 --> 00:43:16,570 czytać, plac cokolwiek. 773 00:43:16,570 --> 00:43:17,903 >> DAN AMRMENDARIZ: Tak, dokładnie. 774 00:43:17,903 --> 00:43:21,120 Zanim więc wystarczy umieścić go się tutaj tak stała 775 00:43:21,120 --> 00:43:23,808 że można łatwo użyć tej nazwy. 776 00:43:23,808 --> 00:43:24,308 Tak? 777 00:43:24,308 --> 00:43:26,942 >> PUBLICZNOŚCI: W tym kontekście powerOf, to część 778 00:43:26,942 --> 00:43:30,774 języka programowania w przeciwieństwie do sposobu 779 00:43:30,774 --> 00:43:33,952 myśleć o powerOf w [niesłyszalne]? 780 00:43:33,952 --> 00:43:35,660 DAN AMRMENDARIZ: Tak w tym przypadku, powerOf 781 00:43:35,660 --> 00:43:39,280 jest to po prostu NAZWA Funkcja, że ​​zdefiniowane tutaj. 782 00:43:39,280 --> 00:43:41,801 Więc to nie jest właściwy z samym języku 783 00:43:41,801 --> 00:43:43,550 ale zamiast tego, to tylko funkcją jest 784 00:43:43,550 --> 00:43:45,628 to imię, bo dam mu tej nazwy. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 Jeszcze jakieś pytania? 787 00:43:51,920 --> 00:43:52,800 W porządku. 788 00:43:52,800 --> 00:43:54,750 >> Teraz to jest świetne. 789 00:43:54,750 --> 00:43:58,170 Ale ty nie idziesz, aby zobaczyć Wiele funkcji zamknięcia, które 790 00:43:58,170 --> 00:44:03,440 są jak ten, w którym określają, wewnątrz z jednej funkcji, innej funkcji. 791 00:44:03,440 --> 00:44:04,320 I można to zrobić. 792 00:44:04,320 --> 00:44:06,430 Ale to nie jest rodzaj naprawdę konieczne, prawda? 793 00:44:06,430 --> 00:44:09,189 Jak dlaczego określenie tego Funkcja o nazwie exponentiator 794 00:44:09,189 --> 00:44:10,480 a następnie natychmiast powrócić. 795 00:44:10,480 --> 00:44:15,220 Dlaczego nie można po prostu od razu powrót tej funkcji? 796 00:44:15,220 --> 00:44:18,890 >> I rzeczywiście, jest to dokładnie Ideą koncepcji o nazwie 797 00:44:18,890 --> 00:44:22,410 anonimowe funkcje, których funkcje anonimowe rzeczywistości nie 798 00:44:22,410 --> 00:44:25,270 mieć nazwę, ponieważ nie trzeba mieć. 799 00:44:25,270 --> 00:44:28,700 I tak w tym przypadku, 7B możemy dokładnie to znaleźć. 800 00:44:28,700 --> 00:44:31,470 To wszystko ten sam kod, robi dokładnie to samo, 801 00:44:31,470 --> 00:44:35,570 ale teraz zmieniłem go lekko tak że funkcja ta powerOf natychmiast 802 00:44:35,570 --> 00:44:37,750 zwraca funkcję. 803 00:44:37,750 --> 00:44:44,150 Zauważ, że po powrocie, jest otwarty nawias klamrowy. 804 00:44:44,150 --> 00:44:46,410 To spodziewa to wejście podwójne. 805 00:44:46,410 --> 00:44:48,560 To się spodziewa, że ​​wyjście podwójne. 806 00:44:48,560 --> 00:44:52,175 A potem w kluczowe oddziela sam kod. 807 00:44:52,175 --> 00:44:53,550 Więc to jest anonimowa funkcja. 808 00:44:53,550 --> 00:44:57,030 Faktycznie nie ma nazwy, natomiast wcześniej był nazywany exponentiator. 809 00:44:57,030 --> 00:45:00,229 Ale jak widzieliśmy, tak naprawdę nie odnoszą się do exponentiator 810 00:45:00,229 --> 00:45:01,270 poza tym funkcję. 811 00:45:01,270 --> 00:45:02,470 Tak więc to nie miało znaczenia. 812 00:45:02,470 --> 00:45:06,300 Więc to anonimowa funkcja jest tzw ponieważ jest bezimienny, 813 00:45:06,300 --> 00:45:09,107 ale to nadal używany w związku z tym kodem. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> Kolejne kilka z nich jestem mam nadzieję, że będzie w dalszym ciągu 816 00:45:16,079 --> 00:45:17,370 wieje umysł trochę. 817 00:45:17,370 --> 00:45:20,410 Możemy uprościć to jeszcze bardziej. 818 00:45:20,410 --> 00:45:24,490 Bo jak było przenikliwie wskazano wcześniej, 819 00:45:24,490 --> 00:45:29,100 Być może rzeczywiście wiemy, przez wywodząc z tego kodu, co 820 00:45:29,100 --> 00:45:31,750 wyjście z tego kodu będzie. 821 00:45:31,750 --> 00:45:38,180 W rzeczywistości w tym anonimowym funkcji W rzeczywistości możemy wywnioskować typy danych. 822 00:45:38,180 --> 00:45:41,650 >> Więc w tym jednym, już nie Musisz zdefiniować 823 00:45:41,650 --> 00:45:44,850 typ danych, który jest jest Wejście i wyjście z tej funkcji 824 00:45:44,850 --> 00:45:45,890 na kilka powodów. 825 00:45:45,890 --> 00:45:51,390 Jednym z nich jest, że mamy określone, w górę na Prototyp funkcji obejmujących, 826 00:45:51,390 --> 00:45:55,770 jaki typ danych to anonimowych Funkcja powinna wejście i wyjście. 827 00:45:55,770 --> 00:45:57,900 I z drugiej strony, że może wnioskować z kodem 828 00:45:57,900 --> 00:46:01,930 tu, że przyjmujemy wejście, które jest typu Pokój 829 00:46:01,930 --> 00:46:03,670 i powrót podwójnym. 830 00:46:03,670 --> 00:46:07,890 >> Zauważ, że nie ma tu wyraźnie zdefiniowane nazwy argumentów 831 00:46:07,890 --> 00:46:11,220 że funkcja ta przyjmuje. 832 00:46:11,220 --> 00:46:16,180 I tak widzimy, możemy odnosić się do te parametry za pomocą $ 0, $ 1, 833 00:46:16,180 --> 00:46:20,140 tak dalej, i tak dalej, w zależności od ilość tego parametru stosuje się 834 00:46:20,140 --> 00:46:20,850 w tej funkcji. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> To jest coś, że będzie zobaczyć wiele jest to otwarty nawias klamrowy 837 00:46:29,740 --> 00:46:32,797 Definicja następnie przez $ 0, a następnie niektóre operacje, 838 00:46:32,797 --> 00:46:34,130 a następnie zamknięty nawias klamrowy. 839 00:46:34,130 --> 00:46:38,630 To jest anonimowa funkcja który wykonuje operację. 840 00:46:38,630 --> 00:46:42,940 Ma ten parametr gdzie to typ to wywnioskować. 841 00:46:42,940 --> 00:46:44,860 To pierwszy parametr jest $ 0. 842 00:46:44,860 --> 00:46:49,010 A niektóre operacja jest dzieje się, że 0 $. 843 00:46:49,010 --> 00:46:52,100 >> PUBLICZNOŚCI: Tak znak dolara oznacza parametr w zasadzie, 844 00:46:52,100 --> 00:46:53,429 i 0 oznacza pierwszy? 845 00:46:53,429 --> 00:46:54,720 DAN Armendáriz: Zgadza się. 846 00:46:54,720 --> 00:46:59,100 Więc znak dolara w zasadzie oznacza, parametr, a 0 oznacza pierwszy. 847 00:46:59,100 --> 00:47:02,760 Ale to działa w szczególności w w tym przypadku, w którym nie nazwali 848 00:47:02,760 --> 00:47:07,940 argumenty w mojej anonimowej funkcji. 849 00:47:07,940 --> 00:47:11,119 >> PUBLICZNOŚCI: Czy Perl czy coś mają to znak dolara, dolar 0 tam? 850 00:47:11,119 --> 00:47:12,702 DAN Armendáriz: Czy które, przepraszam? 851 00:47:12,702 --> 00:47:15,360 PUBLICZNOŚCI: Czy Perl ma to dolar 0, dolar 1-- 852 00:47:15,360 --> 00:47:17,318 DAN Armendáriz: Nie jestem zbyt dobrze z Perl, 853 00:47:17,318 --> 00:47:21,340 ale PHP, co definiuje zmienne w oparciu o dolara. 854 00:47:21,340 --> 00:47:26,120 I nie może być w niektórych językach które mają funkcje, takie jak ten. 855 00:47:26,120 --> 00:47:28,240 W rzeczywistości, Swift pożycza Wiele funkcji, takich jak ten 856 00:47:28,240 --> 00:47:29,489 od wielu innych językach. 857 00:47:29,489 --> 00:47:32,380 Widzimy ślady Python w nim. 858 00:47:32,380 --> 00:47:35,800 Ta definicja typ wydaje się pochodzić z SML. 859 00:47:35,800 --> 00:47:38,932 A my mamy tylko całą masę rzeczy z wielu różnych językach. 860 00:47:38,932 --> 00:47:40,640 To jedna z miłych rzeczy o Swift 861 00:47:40,640 --> 00:47:43,390 jest to, że zajmuje dużo najlepszy pomysły na kilka języków 862 00:47:43,390 --> 00:47:47,229 i shoehorns je wszystkie razem w jednej super języka. 863 00:47:47,229 --> 00:47:49,520 W rzeczywistości, jeśli pozwolisz mi nadal wieje swój umysł, 864 00:47:49,520 --> 00:47:51,000 tak robiliśmy wszystko. 865 00:47:51,000 --> 00:47:56,690 Możemy być może uprości to trochę bit po sobie sprawę, że, oczywiście, 866 00:47:56,690 --> 00:48:02,120 Swift ma exponentiating Funkcja wbudowany. 867 00:48:02,120 --> 00:48:04,660 Jeśli importować Darwin, który jest tylko biblioteka 868 00:48:04,660 --> 00:48:09,680 posiada tę funkcję o nazwie pow teraz Mogę uprościć moją moc funkcji 869 00:48:09,680 --> 00:48:11,830 być następujące. 870 00:48:11,830 --> 00:48:15,860 To ma być powrót to anonimowa funkcja. 871 00:48:15,860 --> 00:48:17,950 >> Ale wygląda na to, jak proste jest to teraz. 872 00:48:17,950 --> 00:48:22,780 Jest to funkcja, która anonimowy jest przyjęcie pewnego rodzaju danych, 873 00:48:22,780 --> 00:48:26,600 i to będzie jeden Argument konkretnie, 874 00:48:26,600 --> 00:48:29,320 odniesione na 0 $, które jest typu double. 875 00:48:29,320 --> 00:48:32,680 To będzie powrót do typu double. 876 00:48:32,680 --> 00:48:35,760 Ale instrukcja return jest niejawna. 877 00:48:35,760 --> 00:48:39,990 >> I to jest dokładnie ten styl, który Jest bardzo, bardzo rozpowszechnione w Swift, 878 00:48:39,990 --> 00:48:40,790 wszędzie wokoło. 879 00:48:40,790 --> 00:48:43,190 Mamy zamiar zobaczyć cały czas w Swift. 880 00:48:43,190 --> 00:48:46,150 Więc jestem pokazując wszystko, aby Ci z powodu tej składni. 881 00:48:46,150 --> 00:48:49,070 Jest to bardzo często aby zobaczyć, co oznacza, że 882 00:48:49,070 --> 00:48:51,420 jest anonimowa funkcja który jest wykonywanie 883 00:48:51,420 --> 00:48:54,640 niektóre operacje na tych argumentów. 884 00:48:54,640 --> 00:48:56,940 I nie jest niejawna powrotu. 885 00:48:56,940 --> 00:49:01,850 Tak więc nie jest to absolutnie samo dla nas, aby powiedzieć, że to właśnie tutaj. 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> Ponieważ tego kręcone Uchwyt jest funkcja 888 00:49:08,150 --> 00:49:10,480 jesteśmy wykonać tę operację na pierwszy argument. 889 00:49:10,480 --> 00:49:12,170 Mamy zamiar wrócić, że. 890 00:49:12,170 --> 00:49:14,815 Ale ta zewnętrzna powrót jest powrocie, że cały funkcji, 891 00:49:14,815 --> 00:49:19,855 że cała funkcja anonimowa że właśnie stworzył. 892 00:49:19,855 --> 00:49:21,689 Jeszcze jakieś pytania? 893 00:49:21,689 --> 00:49:23,980 W porządku, nie wiem, czy jesteście na to gotowi, 894 00:49:23,980 --> 00:49:27,455 ale możemy pójść jeszcze bardziej szalony z Swift. 895 00:49:27,455 --> 00:49:28,560 Jesteś gotowy? 896 00:49:28,560 --> 00:49:29,930 OK, to jest świetne. 897 00:49:29,930 --> 00:49:35,310 >> Teraz rzeczywiście mają możliwość się w Swift, ze względu na sposób modułowy 898 00:49:35,310 --> 00:49:39,650 i jak protokół oparty jest, aby definiowania własnych operatorów szalone. 899 00:49:39,650 --> 00:49:44,060 Podobnie jak w tym przypadku, nie mieliśmy operator exponentiation-- dobrze, 900 00:49:44,060 --> 00:49:47,990 do wykonywania uprawnień coś. 901 00:49:47,990 --> 00:49:53,632 Ale może w Swift, zdefiniować nowy Operator, który robi dokładnie to. 902 00:49:53,632 --> 00:49:55,590 W tym przypadku tak nie jest kilka składni tutaj. 903 00:49:55,590 --> 00:49:59,980 A ja pozwalają na to patrzeć w domu, jeśli spojrzeć na to. 904 00:49:59,980 --> 00:50:06,890 Ale jesteśmy definiowania tego Wrostek Operator, **, które następnie umożliwiają nam, 905 00:50:06,890 --> 00:50:09,840 poprzez zdefiniowanie, co to Funkcja ** rzeczywistości 906 00:50:09,840 --> 00:50:15,010 nie, zaakceptować lewą rękę z boku i prawej stronie, 907 00:50:15,010 --> 00:50:21,190 a następnie wrócić wykładnik, że lewa do prawej strony. 908 00:50:21,190 --> 00:50:24,850 >> I tak teraz nagle I Stworzyliśmy nowy licznik. 909 00:50:24,850 --> 00:50:29,490 Tak więc 2 ** 3 oznacza 2 do trzeciej potęgi. 910 00:50:29,490 --> 00:50:34,420 [Niewiarygodny SOUND], to przez Sam powinny być podobne, 911 00:50:34,420 --> 00:50:37,960 OK, śruby C. będę Swift całą drogę. 912 00:50:37,960 --> 00:50:38,740 To jest super. 913 00:50:38,740 --> 00:50:40,140 Jest to całkiem fantastyczne. 914 00:50:40,140 --> 00:50:42,240 >> Pomimo tego, że jest świetnym przykładem. 915 00:50:42,240 --> 00:50:45,570 Ale ja nigdy nie raz poza w tym przypadku rzeczywiście 916 00:50:45,570 --> 00:50:46,800 zdefiniowane własną operatora. 917 00:50:46,800 --> 00:50:49,710 Ale nadal, to pokazuje Dużo mocy Swift 918 00:50:49,710 --> 00:50:54,050 i dlaczego to jest rzeczywiście naprawdę bardzo fajne. 919 00:50:54,050 --> 00:50:55,832 Ok tak? 920 00:50:55,832 --> 00:50:57,790 PUBLICZNOŚCI: Jeśli jesteś Definiowanie własnego operatora, 921 00:50:57,790 --> 00:51:02,940 jak wiesz, nie masz przypadkiem spróbować i stworzyć operatora, który jest 922 00:51:02,940 --> 00:51:06,040 w gdzieś w C, jak ukryte gdzieś w Swift, 923 00:51:06,040 --> 00:51:12,210 jak niejasne jeden, który Cię może nie widział. 924 00:51:12,210 --> 00:51:15,050 >> DAN Armendáriz: Więc jeśli próbujesz definiowania własnych operatorów, 925 00:51:15,050 --> 00:51:20,970 istnieje ryzyko określenia jeden na istniejącym operatora. 926 00:51:20,970 --> 00:51:24,870 To idzie do poziomu szczegółowości tego Nie sądzę, że mamy czas, aby przejść na drugą. 927 00:51:24,870 --> 00:51:27,620 Ale to jest ryzyko. 928 00:51:27,620 --> 00:51:31,320 I to jest w rzeczywistości bardzo dlatego Nie używać symbolu daszka, który 929 00:51:31,320 --> 00:51:36,210 kiedy piszesz na siłę, zwykle używać 4 mały daszek 5 lub coś 930 00:51:36,210 --> 00:51:40,560 tak, po prostu, gdy jesteśmy Gchatting kumpli lub cokolwiek. 931 00:51:40,560 --> 00:51:43,660 Jednak w tym przypadku, że w rzeczywistości spowodowała kolizję. 932 00:51:43,660 --> 00:51:46,450 A więc unikać go tylko dlatego, Zdarzyło mi się wiedzą w tym przypadku 933 00:51:46,450 --> 00:51:50,430 że spowoduje to kolizji. 934 00:51:50,430 --> 00:51:52,270 >> W porządku. 935 00:51:52,270 --> 00:51:55,080 Teraz, niestety, na ostatnie siedem minut, 936 00:51:55,080 --> 00:51:57,410 Muszę zachować dmuchanie wasze umysły trochę. 937 00:51:57,410 --> 00:52:00,230 Więc pozwól mi pokazać, kilka innych rzeczy, jak również. 938 00:52:00,230 --> 00:52:03,710 >> Pokazaliśmy wam ten pomysł o tych anonimowych funkcje, 939 00:52:03,710 --> 00:52:07,040 Zamknięcia te, które pozwalają na rodzaj przekazać funkcje wokół. 940 00:52:07,040 --> 00:52:08,100 Możesz je zwrócić. 941 00:52:08,100 --> 00:52:09,490 Można nimi manipulować. 942 00:52:09,490 --> 00:52:11,790 Możesz zrobić wszystkie rodzaje szalonej rzeczy. 943 00:52:11,790 --> 00:52:14,850 >> Ale jedna rzecz, że okazuje się być przydatna 944 00:52:14,850 --> 00:52:19,740 ma zdolność, w przeciwieństwie na powrót tych funkcji 945 00:52:19,740 --> 00:52:25,146 w funkcji, aby przekazać funkcję jako parametr do innej funkcji. 946 00:52:25,146 --> 00:52:30,430 Można się dobrze myśleć, dlaczego na Ziemi chciałbym zrobić coś takiego? 947 00:52:30,430 --> 00:52:33,660 >> Cóż, powiedzmy, że chcę skorzystać z operatora, że 948 00:52:33,660 --> 00:52:40,260 tak ciężko pracował, aby utworzyć i zastosować to na kilka różnych numerów 949 00:52:40,260 --> 00:52:41,770 w tablicy. 950 00:52:41,770 --> 00:52:46,700 Więc w tym przypadku mam tablicę integers-- 1, 4, 7, 2, 5, 10, 56. 951 00:52:46,700 --> 00:52:48,080 I chcę je wszystkie podwoić. 952 00:52:48,080 --> 00:52:50,430 Sposób, że będzie zazwyczaj zrobić, to po prostu napisać 953 00:52:50,430 --> 00:52:53,440 prosty dla pętli, które iteracje wszystkie z nich 954 00:52:53,440 --> 00:52:57,140 i wykonać jakąś plac praca nad nimi, 955 00:52:57,140 --> 00:53:02,700 wprowadzeniu tych nowych wartości do nowego zmienna, a raczej nową tablicę tutaj. 956 00:53:02,700 --> 00:53:07,370 A wartość wyjścia Efektem jest to wszystko z tych tablic, 957 00:53:07,370 --> 00:53:10,200 albo raczej tych wszystkich Elementy teraz do kwadratu. 958 00:53:10,200 --> 00:53:12,680 >> I możemy zrobić to samo rzeczą dla organizowania kostek go, 959 00:53:12,680 --> 00:53:15,360 ale trochę dzwonek alarmowy powinny być schodzili 960 00:53:15,360 --> 00:53:17,360 mówiąc, że może jest jakiś sposób, że będzie 961 00:53:17,360 --> 00:53:19,860 możliwość uproszczenia tego trochę. 962 00:53:19,860 --> 00:53:21,130 A w rzeczywistości nie jest. 963 00:53:21,130 --> 00:53:25,320 Co zrobić, jeśli możemy stworzyć funkcja, która pozwala nam 964 00:53:25,320 --> 00:53:28,350 do przyjęcia, jako drapieżnik, funkcji? 965 00:53:28,350 --> 00:53:30,350 Tak więc w tym przypadku wziąć spojrzeć na te argumenty. 966 00:53:30,350 --> 00:53:33,220 Zamierzamy przyjąć listę deblu. 967 00:53:33,220 --> 00:53:35,030 A potem idziemy przyjąć funkcję 968 00:53:35,030 --> 00:53:40,990 w zmiennej o nazwie f, który ma wziąć podwójną i powrócić podwójnym. 969 00:53:40,990 --> 00:53:43,320 I cały wyjściowy całej tej funkcji 970 00:53:43,320 --> 00:53:47,310 nazywa mapowania będzie zwrócić tablicę o nazwie dwukrotnie. 971 00:53:47,310 --> 00:53:52,380 >> Co by to wtedy pozwolić mi nie jest iteracyjne nad tym liście 972 00:53:52,380 --> 00:53:56,350 i zrobić to samo, ale teraz stosować tę funkcję na każdym 973 00:53:56,350 --> 00:53:58,970 poszczególnych wartości w tym wykazie. 974 00:53:58,970 --> 00:54:00,750 Tak naprawdę nie wiem, co f jest. 975 00:54:00,750 --> 00:54:02,010 To nie ma dla mnie znaczenia. 976 00:54:02,010 --> 00:54:06,530 Ale tak długo, jak to ma w pokoju dwuosobowym, wykonuje jakąś operację na niej, 977 00:54:06,530 --> 00:54:08,640 a następnie zwraca Podwójne, chciałbym być następnie 978 00:54:08,640 --> 00:54:13,415 w stanie przyporządkować tę funkcję w całej każdy element listy. 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> I tego typu programów jest zwane wyższe funkcje zamówień, 981 00:54:20,930 --> 00:54:24,440 gdzie przekazujemy funkcje wokół jako parametry 982 00:54:24,440 --> 00:54:26,430 i robi rzeczy z funkcji. 983 00:54:26,430 --> 00:54:29,640 To trochę jak przy wszystkich tych pomysły, które nauczyliśmy się CS50 984 00:54:29,640 --> 00:54:31,390 i biorąc je sortowania od do następnego poziomu. 985 00:54:31,390 --> 00:54:34,140 A to wszystko w stylu CS51 rzeczy. 986 00:54:34,140 --> 00:54:37,080 I tak idziemy w głąb więcej w zajęciach takich jak to. 987 00:54:37,080 --> 00:54:38,930 >> Jednak jest to także Ważne tutaj, ponieważ 988 00:54:38,930 --> 00:54:42,010 zobaczyć wiele funkcji które są wykorzystywane w Swift 989 00:54:42,010 --> 00:54:45,590 że w istocie nie tego, gdzie mamy 990 00:54:45,590 --> 00:54:48,300 niektóre numery, niektóre tablicę liczb. 991 00:54:48,300 --> 00:54:50,850 Mamy zamiar przekazać, że Tablica do naszego odwzorowującym. 992 00:54:50,850 --> 00:54:55,770 I my również będzie przekazać jakąś funkcję, która 993 00:54:55,770 --> 00:54:57,950 mamy już zdefiniowane tutaj. 994 00:54:57,950 --> 00:54:59,690 To będzie kwadratowych. 995 00:54:59,690 --> 00:55:02,220 I mamy zamiar to pogodzić wszystkie te numery 996 00:55:02,220 --> 00:55:04,710 i zapisać, że do tego wyniku tutaj. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> Więc w tym przypadku mamy zdefiniowane nasze własna funkcja nazywa mapowania. 999 00:55:11,000 --> 00:55:15,370 Ale dokładnie to jest to, W rzeczywistości, wbudowany Swift. 1000 00:55:15,370 --> 00:55:18,960 Istnieje różnorodność funkcje zwane map. 1001 00:55:18,960 --> 00:55:21,520 Jest to funkcja map, istnieje funkcja redukcji, 1002 00:55:21,520 --> 00:55:25,630 i tam jest funkcja filtrowania, które zasadniczo zastosowanie funkcji 1003 00:55:25,630 --> 00:55:30,782 do każdego elementu w listy zmodyfikować je w jakiś sposób. 1004 00:55:30,782 --> 00:55:34,510 >> PUBLICZNOŚCI: Więc skoro zmieniają dane na inny format 1005 00:55:34,510 --> 00:55:36,134 przez function-- 1006 00:55:36,134 --> 00:55:37,050 DAN Armendáriz: Racja. 1007 00:55:37,050 --> 00:55:39,420 Tak, więc funkcja że mamy do zaakceptowania 1008 00:55:39,420 --> 00:55:41,790 przekształca dane w jakiś sposób. 1009 00:55:41,790 --> 00:55:44,700 W tym przypadku były albo kwadratury, albo byliśmy organizowania kostek go, 1010 00:55:44,700 --> 00:55:50,060 czy naprawdę, możemy wykonać żadna operacja na nim w ogóle. 1011 00:55:50,060 --> 00:55:54,150 >> Ale pozwól mi to pokazać, jak to będzie wyglądać w praktyce. 1012 00:55:54,150 --> 00:55:56,681 I znowu, Używam nieco czasu. więc nie jestem 1013 00:55:56,681 --> 00:55:59,430 będzie w stanie przejść nad wszystkim kodu źródłowego w szczegółach. 1014 00:55:59,430 --> 00:56:00,721 Ale zachęcam, aby to zrobić. 1015 00:56:00,721 --> 00:56:03,850 Będziemy pisać ją jak najszybciej możliwe po tej rozmowy. 1016 00:56:03,850 --> 00:56:07,610 >> Ale jeśli spojrzeć na to, Zakładamy, że mamy listę numerów, 1017 00:56:07,610 --> 00:56:10,260 tablica liczb w tym Zmienna numerów. 1018 00:56:10,260 --> 00:56:16,670 Następnie chcemy wykonać to Działanie filtra na tych liczb. 1019 00:56:16,670 --> 00:56:19,730 Tak więc filtr jest większa Funkcja nakazanie 1020 00:56:19,730 --> 00:56:24,660 akceptuje tablicę, a także funkcji. 1021 00:56:24,660 --> 00:56:28,760 I na każdym elemencie, w które tablica, wykonuje tę funkcję. 1022 00:56:28,760 --> 00:56:31,990 >> Jeśli ta funkcja zwróci prawda, utrzymuje tę pozycję. 1023 00:56:31,990 --> 00:56:36,100 Jeśli ta funkcja zwraca false, rzuca się ten element. 1024 00:56:36,100 --> 00:56:40,480 A następnie zwraca listę który jest następnie całą 1025 00:56:40,480 --> 00:56:44,360 z tych elementów, które zostały odfiltrowane. 1026 00:56:44,360 --> 00:56:47,150 >> Tak, innymi słowami, to jest ten sam pomysł, dziennik ocen. 1027 00:56:47,150 --> 00:56:50,800 Możemy mieć różne stopnie w tym wartości numerów. 1028 00:56:50,800 --> 00:56:55,590 Może być 100, a 70 i 40, tak dalej, i tak dalej. 1029 00:56:55,590 --> 00:56:59,110 Co ten filtr nie jest zawiadomienie że jest to, że cukier syntaktyczny 1030 00:56:59,110 --> 00:57:01,310 anonimowego funkcji. 1031 00:57:01,310 --> 00:57:05,980 To jest anonimowa funkcja mówiąc że parametr, który mam akceptując 1032 00:57:05,980 --> 00:57:09,690 będzie, jeśli to jest większa niż 70, 1033 00:57:09,690 --> 00:57:15,837 to ta zwróci true, co oznacza, że że element będzie przechowywany w tym filtrze. 1034 00:57:15,837 --> 00:57:17,920 Warto więc być trochę więcej betonu o tym. 1035 00:57:17,920 --> 00:57:25,760 Jeśli mam tej tablicy liczb i składa się z 100, 70, i 40, 1036 00:57:25,760 --> 00:57:29,730 Wykonuję ten filtr Działanie na każdym z nich. 1037 00:57:29,730 --> 00:57:33,270 Tak, że pierwszy z nich jest to wartość 100. 1038 00:57:33,270 --> 00:57:36,770 100 większa niż lub równa 70 jest prawdą, która 1039 00:57:36,770 --> 00:57:41,950 Oznacza to, że 100 jest utrzymywany w ta nowa kopia tej tablicy. 1040 00:57:41,950 --> 00:57:44,290 70 również przechodzi. 1041 00:57:44,290 --> 00:57:46,020 Ale 40 nie. 1042 00:57:46,020 --> 00:57:54,290 Więc co jest zwracany w passingCount jest tablica elementów 100 i 70-- 1043 00:57:54,290 --> 00:57:57,410 100, przecinek, 70. 1044 00:57:57,410 --> 00:57:59,870 To były tylko dwa przedmioty, które nie weszły. 1045 00:57:59,870 --> 00:58:03,740 A więc powodem, szybko przeszedł dużo tego rodzaju wysokiej klasy 1046 00:58:03,740 --> 00:58:08,680 rzeczy, ponieważ jest to, że wspólne rzeczy, które można zobaczyć w Swift dość 1047 00:58:08,680 --> 00:58:16,810 często, pewnych operacji Korzystając z tej funkcji anonimowych składni. 1048 00:58:16,810 --> 00:58:18,450 >> Jest trochę fajnych rzeczy. 1049 00:58:18,450 --> 00:58:24,730 Przełączniki są naprawdę potężny w Swift, Chodzi mi o to jak szalony, szalony potężny. 1050 00:58:24,730 --> 00:58:28,250 Możesz użyć przełącznika, a rzeczywiście można je stosować 1051 00:58:28,250 --> 00:58:33,160 do zakresów, które jest rodzajem szaleństwa, i zrobić wymyślnych rzeczy w tym stylu. 1052 00:58:33,160 --> 00:58:37,540 >> Jednak w ostatnich kilku minutach Chcę przejść od razu dość daleko 1053 00:58:37,540 --> 00:58:46,940 i pokazać konkretny przykład, jak możemy stworzyć w iOS aplikacji za pomocą Swift. 1054 00:58:46,940 --> 00:58:49,040 Więc kiedy robisz tego, będziesz musiał podjąć 1055 00:58:49,040 --> 00:58:51,990 Spojrzenie at-- na Apple dokumentacja, że 1056 00:58:51,990 --> 00:58:56,084 dużo naprawdę dobrych tutoriali za stworzenie pierwszej aplikacji. 1057 00:58:56,084 --> 00:58:58,250 I zachęcam was do zrobienia że dlatego, że cię 1058 00:58:58,250 --> 00:59:04,110 przez wszystkie etapy tego, co dokładnie kliknij, aby stworzyć aplikację dla systemu iOS. 1059 00:59:04,110 --> 00:59:07,290 >> Ale tutaj mamy aplikację dla systemu iOS. 1060 00:59:07,290 --> 00:59:10,960 I to jest dość prosta aplikacja naprawdę. 1061 00:59:10,960 --> 00:59:13,840 Jeśli uruchomię to, pozwól mi pokazać Ci, jak to wygląda. 1062 00:59:13,840 --> 00:59:19,480 Wszystko to w zasadzie nie jest to ściąga z internetu akta JSON 1063 00:59:19,480 --> 00:59:22,300 że są zapisywane na serwerze. 1064 00:59:22,300 --> 00:59:26,310 I że plik JSON definiuje obrazów, które pozwalają 1065 00:59:26,310 --> 00:59:31,680 mi to przechodzić, na moim aplikacja, obrazy z mojego serwera. 1066 00:59:31,680 --> 00:59:32,880 >> Więc mam tutaj getNextImage. 1067 00:59:32,880 --> 00:59:37,100 Ładuje obraz z Internetu, a następnie wyświetla je na ekranie. 1068 00:59:37,100 --> 00:59:38,200 >> Więc jest to bardzo proste. 1069 00:59:38,200 --> 00:59:41,550 Ale celem jest, aby pokazać w jaki możemy łączyć rzeczy 1070 00:59:41,550 --> 00:59:47,820 z ostatnich kilku tygodni CS50 w rzeczywistej aplikacji iOS. 1071 00:59:47,820 --> 00:59:53,140 Innymi słowy, być może jednym z rzeczy, które warto robić 1072 00:59:53,140 --> 00:59:56,340 jest posiadanie aplikacji na iOS, które może pobierać dane z internetu 1073 00:59:56,340 --> 00:59:59,070 i pokazać użytkownikowi informacje. 1074 00:59:59,070 --> 01:00:03,130 To jest całkowicie punkt tego kodu źródłowego tutaj. 1075 01:00:03,130 --> 01:00:07,890 >> Więc nie ma wiele do powiedzenia na temat jak zrobić rzeczywistego rozwoju iOS. 1076 01:00:07,890 --> 01:00:12,860 Istnieje wiele szalony składni że zupełnie nie widziałem jeszcze 1077 01:00:12,860 --> 01:00:15,580 jak klasy, co klasa rzeczywistości. 1078 01:00:15,580 --> 01:00:19,470 Możemy w dużym stopniu ignorować że w chwili obecnej. 1079 01:00:19,470 --> 01:00:23,250 >> Ale zauważmy, że mamy zawarte W ramach tego wiele rzeczy 1080 01:00:23,250 --> 01:00:27,720 które widzieliśmy już jak funkcje, które mają konkretne nazwiska. 1081 01:00:27,720 --> 01:00:32,650 A kiedy dajemy ci Funkcjonuje poprawne nazwy 1082 01:00:32,650 --> 01:00:36,530 które są oczekiwane przez iOS, w rzeczywistości to czuje się trochę magiczne. 1083 01:00:36,530 --> 01:00:40,300 Ale podczas tworzenia Aplikacja iOS, nie 1084 01:00:40,300 --> 01:00:47,590 szczególne nazwy funkcji, które nazywane są przez sam telefon 1085 01:00:47,590 --> 01:00:52,440 jako aplikacja się ładuje, aby spróbować stworzyć proces faktycznie 1086 01:00:52,440 --> 01:00:54,787 uruchamia aplikację. 1087 01:00:54,787 --> 01:00:58,120 Więc jeszcze raz, jest wiele rzeczy, które ja muszą tuszować tutaj, aby nas 1088 01:00:58,120 --> 01:01:00,570 mówić o tym specjalnie. 1089 01:01:00,570 --> 01:01:06,050 Ale zachęcam do obejrzenia może drugie seminarium iOS, ale także niektóre 1090 01:01:06,050 --> 01:01:09,290 z samouczki online, które robią o wiele lepiej opisywania 1091 01:01:09,290 --> 01:01:11,030 konkretne informacje. 1092 01:01:11,030 --> 01:01:15,760 >> Ale możemy zobaczyć kilka rzeczy, które są interesujące z kodu tutaj. 1093 01:01:15,760 --> 01:01:17,950 Zauważ, że jeśli mamy sprawozdania. 1094 01:01:17,950 --> 01:01:20,400 Dzięki temu jedna ważna rzeczą, jeśli sprawozdania 1095 01:01:20,400 --> 01:01:24,860 jest to, że nawiasy wokół Wyrażenie logiczne są opcjonalne. 1096 01:01:24,860 --> 01:01:30,800 Ale nawiasy klamrowe nie są obowiązkowe, bez względu na to, jak kilka lub wiele linii kodu 1097 01:01:30,800 --> 01:01:32,360 masz w instrukcji if. 1098 01:01:32,360 --> 01:01:38,670 Nie możesz mieć, jeśli sprawozdania bez nawiasów klamrowych w Swift. 1099 01:01:38,670 --> 01:01:41,000 >> I to jest, dobrze, rodzaj głupie. 1100 01:01:41,000 --> 01:01:43,910 Ale nie ma powodów historycznych dla tego. 1101 01:01:43,910 --> 01:01:46,180 To ma zaoszczędzić od siebie. 1102 01:01:46,180 --> 01:01:49,899 Jak to na przykład, nie można wyeliminować nawiasy klamrowe wokół, że 1103 01:01:49,899 --> 01:01:50,440 if. 1104 01:01:50,440 --> 01:01:52,730 Te są rzeczywiście potrzebne. 1105 01:01:52,730 --> 01:01:54,480 Więc zachęcam do spójrz na to. 1106 01:01:54,480 --> 01:01:56,230 Ale jest jeszcze jedna budowy, że chcę 1107 01:01:56,230 --> 01:02:02,640 aby pokazać wam o Swift, że jest nowy Swift 2.0 w porównaniu 1108 01:02:02,640 --> 01:02:08,460 do starszych wersji Swifta, który jest następujący. 1109 01:02:08,460 --> 01:02:11,620 Zobaczmy, gdzie mogłem umieścić go tutaj? 1110 01:02:11,620 --> 01:02:16,630 >> Więc w tej funkcji o nazwie fetchJSON, funkcja ta 1111 01:02:16,630 --> 01:02:23,450 jest odpowiedzialny za ciągnięcie tego JSON plik z adresu URL, który tak się składa, 1112 01:02:23,450 --> 01:02:26,310 być uruchomiony na moim CS50 IDE. 1113 01:02:26,310 --> 01:02:28,580 Właśnie rozpoczął Apache, umieścić mój plik JSON tam, 1114 01:02:28,580 --> 01:02:32,110 i jestem w stanie to pociągnąć, że danych z Internetu za pomocą 1115 01:02:32,110 --> 01:02:36,430 funkcja i to URL, dostarczanej przez telefon. 1116 01:02:36,430 --> 01:02:40,490 To pod warunkiem przez biblioteki, które używasz, kiedy 1117 01:02:40,490 --> 01:02:43,140 robisz jakiś iOS app rozwoju. 1118 01:02:43,140 --> 01:02:49,690 >> Zauważcie, że nie jest to niezwykłe syntaktyczna konstrukcja nazywa strażnika. 1119 01:02:49,690 --> 01:02:53,530 A tak naprawdę to wszystko jest w Swift jest sposobem weryfikacji 1120 01:02:53,530 --> 01:02:56,870 że niektóre rzeczy mają zostały spełnione przed tobą 1121 01:02:56,870 --> 01:03:00,000 przystąpić do reszty funkcji. 1122 01:03:00,000 --> 01:03:04,260 Więc mogę mieć, używając Ten opcjonalny rodzaj, 1123 01:03:04,260 --> 01:03:10,530 Mogłem znaleźć adres URL przez uruchomienie tej funkcji bibliotece NSURL 1124 01:03:10,530 --> 01:03:16,640 i przechowywania, które w adresie URL stała, a następnie sprawdzanie 1125 01:03:16,640 --> 01:03:20,820 aby sprawdzić, czy adres URL była zerowa, ponieważ to zamierza powrócić opcjonalnego typu. 1126 01:03:20,820 --> 01:03:25,660 A jeśli to była zerowa, to bym wydrukować błąd i potem wrócić. 1127 01:03:25,660 --> 01:03:29,970 >> Ale zamiast tego, co strażnik pozwala nam robić to, że właśnie to, 1128 01:03:29,970 --> 01:03:34,550 ale upewnij się, że jest rzeczywiście zdarza się, że adres URL 1129 01:03:34,550 --> 01:03:38,020 został prawidłowo ustawiony przez bibliotece NSURL. 1130 01:03:38,020 --> 01:03:41,810 A jeśli jest, to pomija to, i to 1131 01:03:41,810 --> 01:03:46,110 będzie można kontynuować url które zostały właściwie określone. 1132 01:03:46,110 --> 01:03:48,830 Ale czy to jest tak, że url nie jest poprawnie zdefiniowana, 1133 01:03:48,830 --> 01:03:52,550 jeśli ta funkcja zwraca błąd lub inne nieoczekiwane rzeczy 1134 01:03:52,550 --> 01:03:58,030 rzeczywiście występuje, to straż konstrukcję pozwala nam to wyjście tego błędu 1135 01:03:58,030 --> 01:04:00,390 i powrócić natychmiast. 1136 01:04:00,390 --> 01:04:00,890 Tak? 1137 01:04:00,890 --> 01:04:04,839 >> PUBLICZNOŚCI: Więc jest to rodzaj jakby if czym jeszcze? 1138 01:04:04,839 --> 01:04:07,130 DAN Armendáriz: To trochę jak if wtedy jeszcze, tak, 1139 01:04:07,130 --> 01:04:14,200 chyba że ten adres url jest następnie zdefiniowane na wszystko poniżej tego. 1140 01:04:14,200 --> 01:04:20,420 Jeśli przechodzi tę osłonę, a następnie go faktycznie zostaną wypełnione danymi 1141 01:04:20,420 --> 01:04:29,500 używane w pozostałych Kod źródłowy w swojej funkcji. 1142 01:04:29,500 --> 01:04:33,790 Więc podejrzewam, że masz zamiar rozpocząć, aby zobaczyć ten strażnik, jak również. 1143 01:04:33,790 --> 01:04:36,670 I mieć na uwadze, że. 1144 01:04:36,670 --> 01:04:46,270 >> Więc po prostu patrząc na kilka innych rzeczy, to właśnie tutaj jest co, 1145 01:04:46,270 --> 01:04:53,377 myślisz, tylko w oparciu o to, co rozmawialiśmy o tym wcześniej? 1146 01:04:53,377 --> 01:04:56,650 >> PUBLICZNOŚCI: Myślisz, że działają w liście? 1147 01:04:56,650 --> 01:04:59,100 >> DAN Armendáriz: Więc to jest blisko. 1148 01:04:59,100 --> 01:05:02,360 Jest to funkcja, które są ograniczające. 1149 01:05:02,360 --> 01:05:07,240 A my wprowadzania tej funkcji jako argument tej funkcji tutaj. 1150 01:05:07,240 --> 01:05:09,120 >> PUBLICZNOŚCI: [niesłyszalne], jeśli nie zerowe. 1151 01:05:09,120 --> 01:05:11,470 Więc to jest na liście, prawda? 1152 01:05:11,470 --> 01:05:15,450 >> DAN Armendáriz: Jeśli błąd nie jest zerowa, tak, że jest-- więc muszę przewijać. 1153 01:05:15,450 --> 01:05:18,060 Cóż, zobaczmy, nie mogę naprawdę Przewiń w prawo, tutaj. 1154 01:05:18,060 --> 01:05:23,161 Błąd jest argument, który jest przekazywane do tej anonimowej funkcji. 1155 01:05:23,161 --> 01:05:24,410 To jest anonimowa funkcja. 1156 01:05:24,410 --> 01:05:25,480 To nie ma nazwy. 1157 01:05:25,480 --> 01:05:29,850 Ale przyjmujemy te trzy argumentów, danych, odpowiedzi i błędów. 1158 01:05:29,850 --> 01:05:33,590 I to będzie powrót nieważne, więc to nie będzie powrotu nic. 1159 01:05:33,590 --> 01:05:37,910 I to jest zawartość z tej funkcji. 1160 01:05:37,910 --> 01:05:41,961 I wtedy mamy dostęp do wnętrza, które Funkcja każdego z tych argumentów. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> Więc to trąba powietrzna Zwiedzanie języku. 1163 01:05:48,679 --> 01:05:50,470 Ale mam nadzieję, że z tego, mam nadzieję, że jak wziąć 1164 01:05:50,470 --> 01:05:54,490 spojrzenie na niektóre z ćwiczeń specyficzne dla rozwoju iOS z Swift, 1165 01:05:54,490 --> 01:05:57,481 zwłaszcza jeśli idziesz do Web developer page-- Apple 1166 01:05:57,481 --> 01:05:59,980 mają wiele naprawdę dobry tutoriale, aby zacząć grę. 1167 01:05:59,980 --> 01:06:05,010 Ale miejmy nadzieję, że tylko ten godzina rozmowy o składni sam dał 1168 01:06:05,010 --> 01:06:08,760 jesteś na tyle, aby zacząć z tym. 1169 01:06:08,760 --> 01:06:12,950 >> Będziemy pisać wszystkie te źródła Kod na stronie internetowej seminarium 1170 01:06:12,950 --> 01:06:17,800 tak szybko, jak to możliwe, a także slajdy więc masz punkt odniesienia dla wszystkich tych. 1171 01:06:17,800 --> 01:06:20,530 Ale powodzenia projektów. 1172 01:06:20,530 --> 01:06:23,640 I dziękuję wszystkim bardzo za przybycie. 1173 01:06:23,640 --> 01:06:26,990 >> [OKLASKI] 1174 01:06:26,990 --> 01:06:28,026