1 00:00:00,000 --> 00:00:03,332 >> [Музички] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> ДАН AMRMENDARIZ: Секој, добредојдовте во семинарот CS50, 4 00:00:09,590 --> 00:00:11,690 iOS App развој со Свифт. 5 00:00:11,690 --> 00:00:15,690 Јас сум Дан Armendariz, и јас сум наставник на компјутерската наука тука на Харвард. 6 00:00:15,690 --> 00:00:21,510 >> И следниот час ќе биде виорот турнеја на колку работи 7 00:00:21,510 --> 00:00:25,160 на оваа тема, како што може да се вклопат. 8 00:00:25,160 --> 00:00:29,170 Јас ќе ја објавите на сите на изворниот код кои ќе ги видите на интернет денес. 9 00:00:29,170 --> 00:00:31,990 Ние може да не биде во можност да всушност, оди над сè 10 00:00:31,990 --> 00:00:34,810 дека сум дека сум Ви прикажуваат во овој час. 11 00:00:34,810 --> 00:00:37,580 Но барем се надевам дека преку коментарите на изворниот код, 12 00:00:37,580 --> 00:00:40,830 ќе бидете во можност да се обиде да дознаам што точно се случува за тие работи 13 00:00:40,830 --> 00:00:42,950 дека ние не сосема да се дојде до. 14 00:00:42,950 --> 00:00:46,970 >> Сè на сè, на структурата на денешниот разговор ќе биде како што следува. 15 00:00:46,970 --> 00:00:52,820 Ќе започне од тоа некои основни синтакса со јазикот Свифт, 16 00:00:52,820 --> 00:00:56,290 навлегуваме во некои од понапредните Синтаксата на Свифт јазик. 17 00:00:56,290 --> 00:00:59,560 Бидејќи јазикот е навистина модерен и тоа 18 00:00:59,560 --> 00:01:02,110 има голем број на високо ниво карактеристики, работи кои не треба 19 00:01:02,110 --> 00:01:06,600 виден во C текот CS50, или па дури и некои други јазици 20 00:01:06,600 --> 00:01:09,310 дека ние сме отворени користење во CS50 како PHP, 21 00:01:09,310 --> 00:01:12,670 па јас сум ќе мора да се обиде да се воведе, исто така, дел од темите кои 22 00:01:12,670 --> 00:01:18,580 се поврзани со високото ниво јазици дека не може да се види во длабочина во CS50, 23 00:01:18,580 --> 00:01:21,380 но ќе видите подоцна компјутерски науки класи. 24 00:01:21,380 --> 00:01:25,290 Значи тоа се случува да биде збиени час. 25 00:01:25,290 --> 00:01:28,897 И ве молиме да се чувствуваат слободни да ме пушти знам дали имате било какви прашања. 26 00:01:28,897 --> 00:01:30,730 Значи, ако сте заинтересирани правејќи развој 27 00:01:30,730 --> 00:01:34,442 со Свифт, или навистина било развој iOS стан, 28 00:01:34,442 --> 00:01:35,900 постојат неколку барања. 29 00:01:35,900 --> 00:01:39,940 Прво на сите, ќе мора да биде со користење на Mac, трчање во примерите 30 00:01:39,940 --> 00:01:43,880 дека ние се случува да биде во употреба и денес, релативно нова верзија на оперативен систем 31 00:01:43,880 --> 00:01:46,580 X. Во овој случај, јас се кандидирам X 10.5. 32 00:01:46,580 --> 00:01:48,600 Можете да се работи 10.11, ако сакате. 33 00:01:48,600 --> 00:01:52,430 Но, сето она што ви се случува да види се вклучуваат Xcode 7 и подоцна, 34 00:01:52,430 --> 00:01:56,271 која има најновата верзија на Свифт, која е Свифт 2.0. 35 00:01:56,271 --> 00:01:58,270 Ова е всушност прилично важна разлика. 36 00:01:58,270 --> 00:02:01,510 Голем дел од синтаксата има променети прилично значително 37 00:02:01,510 --> 00:02:05,890 во некои случаи од Свифт 1.0, кој беше објавен минатата година, 38 00:02:05,890 --> 00:02:08,514 да Свифт 2.0, кој само излезе оваа есен. 39 00:02:08,514 --> 00:02:09,889 Па ние ќе се покаже Свифт 2.0. 40 00:02:09,889 --> 00:02:13,020 А многу од работите кои да пребарувате за онлајн 41 00:02:13,020 --> 00:02:18,040 кога ќе се обидуваш да се добие дополнителни информации во врска со различни нешта, 42 00:02:18,040 --> 00:02:20,710 можеби ќе сакате да експлицитно пребарувате за Свифт 2 43 00:02:20,710 --> 00:02:24,950 а не само обичен стар Свифт да се направи сигурни дека ќе добиете синтаксата точни. 44 00:02:24,950 --> 00:02:26,920 >> Всушност, ова е генерално точно. 45 00:02:26,920 --> 00:02:31,210 Има еден брз износот на развој случува во Свифт јазик 46 00:02:31,210 --> 00:02:35,110 откако Apple го отпушти, мислам што, тоа е малку повеќе од една година 47 00:02:35,110 --> 00:02:36,370 сега. 48 00:02:36,370 --> 00:02:39,080 И работите се променија драматично во тоа време. 49 00:02:39,080 --> 00:02:42,160 И така не се фрустрирани ако, кога сте во потрага наоколу 50 00:02:42,160 --> 00:02:48,310 теми за вршење на услуги брз или како да се постигне нешто со користење на некои пример кодот 51 00:02:48,310 --> 00:02:51,210 или нешто што не е така всушност работат на Свифт 2.0. 52 00:02:51,210 --> 00:02:53,790 Бидете сигурни дека сте во потрага специјално за таа верзија 53 00:02:53,790 --> 00:02:58,690 во обид да се минимизираат ефектите на различни верзии и оние видови на нештата. 54 00:02:58,690 --> 00:03:02,470 >> Ќе се обидам да се истакне само некои работи кои се различни со постарите верзии. 55 00:03:02,470 --> 00:03:03,970 Но тоа е нешто да внимаваш за. 56 00:03:03,970 --> 00:03:06,770 Што е веројатно нема да биде еден од најголемите главоболки 57 00:03:06,770 --> 00:03:11,010 дека ќе имаат со Свифт е изнаоѓање пример код, кој е постар, дури и само 58 00:03:11,010 --> 00:03:14,050 по неколку месеци, во обид да го користите тоа во вашата помодерен проект. 59 00:03:14,050 --> 00:03:15,430 И тоа само едноставно не функционира. 60 00:03:15,430 --> 00:03:18,530 Ти си добивање грешки компајлер, синтакса грешки, сите видови на луди нешта. 61 00:03:18,530 --> 00:03:21,580 Па само да бидете трпеливи со тоа, и се надевам дека ќе 62 00:03:21,580 --> 00:03:24,200 имаат прилично убаво искуство Свифт со генералниот пласман. 63 00:03:24,200 --> 00:03:28,430 >> Сега може да се, всушност, join-- и се надевам ние всушност има ваков оваа year-- 64 00:03:28,430 --> 00:03:30,910 CS 50 Јаболко App тимот за развој, која 65 00:03:30,910 --> 00:03:34,680 ќе ви овозможи да се инсталира било апликации кој ќе се создаде на вашиот iOS уреди. 66 00:03:34,680 --> 00:03:39,190 Па да ги разгледаме во овој URL ако сте заинтересирани за тоа го прават. 67 00:03:39,190 --> 00:03:41,450 >> Па само неколку работи во врска со самата Свифт. 68 00:03:41,450 --> 00:03:43,580 Таа е составена јазик. 69 00:03:43,580 --> 00:03:45,870 Но, ќе се види дека некои од карактеристиките кои ги користиме 70 00:03:45,870 --> 00:03:50,650 оставете ја да се користи и за малку како начин да се толкува, како и. 71 00:03:50,650 --> 00:03:56,350 >> Голем дел од синтаксата е позајмена од C. Тоа е врз основа и напишан во C. 72 00:03:56,350 --> 00:04:00,400 И така ќе се види дека постојат голем број на takeaways 73 00:04:00,400 --> 00:04:04,450 од вашиот постоечки знаења од C што можеме порта да Свифт. 74 00:04:04,450 --> 00:04:07,290 >> Но, постојат работи кои го прават тоа многу различна од В. 75 00:04:07,290 --> 00:04:08,860 Тоа е многу силно отчукува. 76 00:04:08,860 --> 00:04:10,380 Има автоматско управување со меморијата. 77 00:04:10,380 --> 00:04:13,170 Вие нема да мора да се користете Примерок или бесплатно насекаде. 78 00:04:13,170 --> 00:04:15,110 Тоа е дизајниран за општо добро. 79 00:04:15,110 --> 00:04:19,480 Значи со други зборови, можете да го користите во сите видови на контексти, од Apple Види 80 00:04:19,480 --> 00:04:26,290 на iPhone на целиот пат до OS X, и па дури и некои сервери, па дури и некои скриптирање. 81 00:04:26,290 --> 00:04:28,400 Но, ќе видиме дека поддршка за скриптирање 82 00:04:28,400 --> 00:04:31,360 не е сосема има уште како што е во други јазици. 83 00:04:31,360 --> 00:04:34,930 Па најверојатно ќе биде со користење на ова ексклузивно за развој 84 00:04:34,930 --> 00:04:37,060 на вашиот Mac или iPhone. 85 00:04:37,060 --> 00:04:40,150 >> И таа има многу модерни карактеристики. 86 00:04:40,150 --> 00:04:43,380 И многу од овие работи се работи кои ние ќе треба да се обиде да се обратам денес, 87 00:04:43,380 --> 00:04:47,590 но исто така и на нашите теми кои искрено, можеме да го посвети целото курсеви. 88 00:04:47,590 --> 00:04:50,140 Во фактот, CS 51, што е понудени следниот семестар, 89 00:04:50,140 --> 00:04:53,990 се фокусира многу на овие теми кои се опишани подолу. 90 00:04:53,990 --> 00:04:56,781 За да можете да го поминат целиот семестар разбирање на овие работи. 91 00:04:56,781 --> 00:04:58,530 Но, ние ќе треба да се обиде да се добие преку нив 92 00:04:58,530 --> 00:05:00,800 барем доволно да се може да се разбере она што е 93 00:05:00,800 --> 00:05:03,700 се случува кога ќе се погледне со брзина од програмата 94 00:05:03,700 --> 00:05:07,310 и да бидат способни да се пробие на вашиот пат низ него за финалниот проект. 95 00:05:07,310 --> 00:05:10,780 >> Сега е еден од најдобрите начини на кои може да се добиете дополнителни информации за ова 96 00:05:10,780 --> 00:05:14,700 е искрено само преку Епл документација за Свифт. 97 00:05:14,700 --> 00:05:16,930 Има многу на API кои се на располагање. 98 00:05:16,930 --> 00:05:21,170 И ова е добра база за вас да барате, конкретни работи што 99 00:05:21,170 --> 00:05:23,020 сакате да направите со API, вклучувајќи iOS. 100 00:05:23,020 --> 00:05:26,350 Ако сакате да ја користите камерата за На пример, можете да почнете да барате тука, 101 00:05:26,350 --> 00:05:32,540 и исто така го користат Гугл и Стак Прелевање како што нормално би. 102 00:05:32,540 --> 00:05:36,670 >> Било какви прашања во врска со овој пред да скокаат право во? 103 00:05:36,670 --> 00:05:37,880 Во ред. 104 00:05:37,880 --> 00:05:38,700 Ајде да се движи. 105 00:05:38,700 --> 00:05:42,620 >> Значи прво, имам бројот на пример датотеки. 106 00:05:42,620 --> 00:05:46,040 А јас ќе одам да се обиде да се повлече преку нив релативно брзо. 107 00:05:46,040 --> 00:05:49,190 Ова е Здраво Светот датотека за Свифт. 108 00:05:49,190 --> 00:05:51,050 Тоа е многу едноставно. 109 00:05:51,050 --> 00:05:54,360 Има начин повеќе коментари отколку што има вистински код. 110 00:05:54,360 --> 00:05:57,100 Известување на реалните код е на самото дно на линијата 14. 111 00:05:57,100 --> 00:05:57,980 Таа вели дека за печатење. 112 00:05:57,980 --> 00:05:59,820 И тогаш тоа е повик на функција. 113 00:05:59,820 --> 00:06:03,010 Ние сме поминува во неа низа наречен Здраво CS50. 114 00:06:03,010 --> 00:06:04,750 Забележи дека не постои точка-запирка. 115 00:06:04,750 --> 00:06:07,010 Известување дека нема int главната. 116 00:06:07,010 --> 00:06:10,392 Нема ниту еден од cruft што ги имавме со Ц. 117 00:06:10,392 --> 00:06:15,020 Кога се користат Свифт на овој начин, кој е само напишано во текстуална датотека 118 00:06:15,020 --> 00:06:18,340 и се чуваат на мојот компјутер, а потоа Можам да го компајлирате и да ја стартувате. 119 00:06:18,340 --> 00:06:20,920 >> Забележите дека овде сум некористење на CS50 ИРО. 120 00:06:20,920 --> 00:06:24,460 Ова значи дека јас сум трчање и дека јас сум на OS X, 121 00:06:24,460 --> 00:06:27,870 и дека сум Xcode веќе инсталиран на оваа машина со цел за ова 122 00:06:27,870 --> 00:06:29,080 за да всушност функција. 123 00:06:29,080 --> 00:06:33,349 Но, ова е само нормална текстуална датотека кои потоа може да се собере и уреди. 124 00:06:33,349 --> 00:06:34,890 Да видиме како тоа всушност се работи. 125 00:06:34,890 --> 00:06:37,430 Што ако сакам да го компајлирате? 126 00:06:37,430 --> 00:06:40,450 swiftc 1.swift. 127 00:06:40,450 --> 00:06:42,960 По една минута или две, тоа ќе видите дека ние имаме сега 128 00:06:42,960 --> 00:06:45,360 Составувач е ова во датотека наречена 1. 129 00:06:45,360 --> 00:06:51,090 И сега имаме нашите печатени CS50, нашите Hello World апликација наместо. 130 00:06:51,090 --> 00:06:54,690 >> Забележи една друга работа што добро е тоа што по дифолт, 131 00:06:54,690 --> 00:07:00,090 ние не треба да го внесете на / n да се печати нова линија. 132 00:07:00,090 --> 00:07:05,315 Стандардно, функцијата за печатење во Свифт ќе печати на нова линија за вас. 133 00:07:05,315 --> 00:07:09,284 Можете да помине евентуален дополнителен параметар за да се каже дека тоа не го стори тоа. 134 00:07:09,284 --> 00:07:10,950 Но на Google за повеќе информации за тоа. 135 00:07:10,950 --> 00:07:13,450 По дифолт, тоа ќе го стори линија за печатење. 136 00:07:13,450 --> 00:07:16,420 >> Добро, па ајде да се движи тогаш за некои други работи. 137 00:07:16,420 --> 00:07:18,620 Па како можеме навистина да дефинираат променливи? 138 00:07:18,620 --> 00:07:21,960 Можеме да го направиме тоа е со користење на еден од двата методи. 139 00:07:21,960 --> 00:07:26,122 И оној кој јас сакам да ти кажам Првата е во врска со дефиницијата пушти. 140 00:07:26,122 --> 00:07:27,830 И ова е важно бидејќи ефикасно 141 00:07:27,830 --> 00:07:30,240 она што го правиме е дефинирање константа. 142 00:07:30,240 --> 00:07:34,010 Ние ќе се обидеме да се создаде променлива, или подобро кажано, постојана нарече, 143 00:07:34,010 --> 00:07:38,200 за да го обезбеди некои data-- во овој случај, стринг Дан. 144 00:07:38,200 --> 00:07:40,630 Но, со помош на овој ајде клучни зборови, сакаме да го кажеме 145 00:07:40,630 --> 00:07:43,860 дека ова variable-- или повторно повика constant-- 146 00:07:43,860 --> 00:07:46,220 име, никогаш нема да се смени. 147 00:07:46,220 --> 00:07:50,120 Тоа се случува да биде непроменлива во текот времетраењето на оваа програма 148 00:07:50,120 --> 00:07:53,100 или во текот на Времетраењето на контекстот 149 00:07:53,100 --> 00:07:55,390 дека таа променлива е достапна. 150 00:07:55,390 --> 00:08:00,096 >> Ова е навистина важно дека кога имате некои податоци кои не се 151 00:08:00,096 --> 00:08:02,970 ќе се промени во вашата програма, и ќе видите различни примери 152 00:08:02,970 --> 00:08:06,790 за кога ќе сакате да го користите нека наспроти други синтакса, 153 00:08:06,790 --> 00:08:11,040 тоа е важно да користите дозволувајте Секогаш кога е можно, бидејќи ова нотифицирана 154 00:08:11,040 --> 00:08:13,740 на јазикот на кој што е нема да се промени, 155 00:08:13,740 --> 00:08:16,590 и тоа, всушност, може да врши многу оптимизации 156 00:08:16,590 --> 00:08:19,560 да се подобри брзината и безбедноста на вашата програма. 157 00:08:19,560 --> 00:08:24,480 И со безбедноста, јас не значи да таа несреќа со луди грешки 158 00:08:24,480 --> 00:08:27,910 кои би можеле да бидат навикнати да гледаат во В. 159 00:08:27,910 --> 00:08:32,460 >> Тогаш може да се користат низа интерполација да капсулирало ова во рок од стрингот. 160 00:08:32,460 --> 00:08:35,200 Па ние може да се види во овој печати линија, печати здраво, 161 00:08:35,200 --> 00:08:38,950 а потоа со помош обратна коса црта отворен parens, а потоа го името на променливата ми, 162 00:08:38,950 --> 00:08:41,809 во овој случај константна, затворете го загради. 163 00:08:41,809 --> 00:08:46,400 Јас сум во суштина потоа да се стави на Содржината на оваа променлива наречена име 164 00:08:46,400 --> 00:08:50,240 внатрешноста на низа и потоа печати резултатот таму. 165 00:08:50,240 --> 00:08:54,070 >> Има една друга промена До оваа податотека а тоа е дека имам, во самиот врв, 166 00:08:54,070 --> 00:08:57,340 се стави во shebang линија, која во основа, само ги специфицира 167 00:08:57,340 --> 00:09:00,180 што сакате да ја користите Свифт преведувач, 168 00:09:00,180 --> 00:09:04,190 значи дека јас повеќе не мораат да собере на оваа конкретна програма. 169 00:09:04,190 --> 00:09:06,567 Јас само може да се кандидира како своја скрипта. 170 00:09:06,567 --> 00:09:09,400 Но, ова е, во овој случај, зад сцените се собрани, а потоа 171 00:09:09,400 --> 00:09:10,030 што се извршуваат. 172 00:09:10,030 --> 00:09:13,540 Тоа е само невидливо за нас. 173 00:09:13,540 --> 00:09:15,880 >> Добро, па ајде да се движи. 174 00:09:15,880 --> 00:09:19,650 Па таму е малку на измама што се случило пред тоа. 175 00:09:19,650 --> 00:09:23,230 Те покажа дека сум може да се дефинира константа. 176 00:09:23,230 --> 00:09:25,490 И јас би можеле да обезбедат некои податоци да го стори тоа. 177 00:09:25,490 --> 00:09:29,240 Но, во овој случај, да се забележи дека не сум всушност, наведете го видот на податоците 178 00:09:29,240 --> 00:09:29,820 тоа е тоа. 179 00:09:29,820 --> 00:09:32,780 А тоа е затоа што на компајлер, Свифт може 180 00:09:32,780 --> 00:09:36,910 заклучиме од типот на податоците само врз основа на податоците кои ни го ставам во него. 181 00:09:36,910 --> 00:09:41,760 Затоа што знае дека од страна на оценување на оваа променлива токму тука, ова право податоци 182 00:09:41,760 --> 00:09:43,370 тука, таа знае дека тоа е стринг. 183 00:09:43,370 --> 00:09:48,690 Па така ова име затоа е постојана ќе биде променлива, како и. 184 00:09:48,690 --> 00:09:52,730 >> Но, ние исто така може да бидат експлицитни за типот кој е 185 00:09:52,730 --> 00:09:55,790 ние се случува да се користи за константи и променливи 186 00:09:55,790 --> 00:10:01,590 со користење на оваа синтакса instead-- дозволувајте името колон Стринг еднаква 187 00:10:01,590 --> 00:10:05,530 Дан, кој во овој случај значи дека ние сме ќе се дефинира константа нарече. 188 00:10:05,530 --> 00:10:07,150 Тоа се случува да биде од тип Стринг. 189 00:10:07,150 --> 00:10:10,550 И вредноста ќе биде Дан. 190 00:10:10,550 --> 00:10:12,550 Сега на друг начин на кој можеме да се создаде variables-- 191 00:10:12,550 --> 00:10:15,549 и овие се променливи променливи, кои значи дека ние сме, всушност, се случува 192 00:10:15,549 --> 00:10:19,670 да се промени нивната содржина некаде во траење од контекст 193 00:10:19,670 --> 00:10:23,890 дека таа променлива се defined-- ние користете var клучни зборови наместо ајде. 194 00:10:23,890 --> 00:10:27,400 Но, повторно, по дифолт, освен ако навистина знаете кои ви се потребни за да се манипулира со тие податоци, 195 00:10:27,400 --> 00:10:30,510 обидете да го користите за да подобрувања во перформансите. 196 00:10:30,510 --> 00:10:33,740 >> Во овој случај, тогаш можам наведете го видот на податоците 197 00:10:33,740 --> 00:10:37,650 кои се очекува да биде во внатрешноста на оваа нова променлива наречена етикета. 198 00:10:37,650 --> 00:10:38,800 Тоа се случува да биде стринг. 199 00:10:38,800 --> 00:10:43,030 И ние си оди за да потоа concatenate две жици заедно, стрингот здраво, 200 00:10:43,030 --> 00:10:48,070 и гудачкиот претставена од страна на променлива, или подобро кажано, постојаното име. 201 00:10:48,070 --> 00:10:50,660 >> Значи ова е убаво, бидејќи ова е малку PHP како со тоа што ние 202 00:10:50,660 --> 00:10:52,250 имаат многу лесно низа сплет. 203 00:10:52,250 --> 00:10:56,350 Ние не треба да се автоматски користете било каков вид на управување со меморијата 204 00:10:56,350 --> 00:11:00,580 да се зголеми големината и направи било кој вид на смешни работи таму. 205 00:11:00,580 --> 00:11:05,040 Ова работи како што ние, всушност, би се очекувало. 206 00:11:05,040 --> 00:11:09,370 >> Сите права, било прашања во врска со ова? 207 00:11:09,370 --> 00:11:12,520 >> Сега од друга причина што ние треба да имаат способност 208 00:11:12,520 --> 00:11:15,490 за да може да се дефинира она што Вид на променливи податоци 209 00:11:15,490 --> 00:11:18,170 е затоа што понекогаш не сакате да го иницијализирам променливи 210 00:11:18,170 --> 00:11:21,080 со некои податоци во точка на дефиниција. 211 00:11:21,080 --> 00:11:23,500 Значи во овој случај, да речеме што сакам да започне внесување 212 00:11:23,500 --> 00:11:25,040 некои оценки во градус книга. 213 00:11:25,040 --> 00:11:27,530 Па знам дека еден од варијабли кои сакам да бидам 214 00:11:27,530 --> 00:11:30,280 се случува да биде непостојана одделение. 215 00:11:30,280 --> 00:11:33,010 И ние исто така знаеме дека ние сакам тоа да биде цел број. 216 00:11:33,010 --> 00:11:36,030 Но, можеби се 'уште не имаат тоа одделение на располагање. 217 00:11:36,030 --> 00:11:39,570 >> Кај Свифт, ќе мора да го дефинирање на типот на податоци 218 00:11:39,570 --> 00:11:44,000 кој е поврзан со променлива или нека постојана 219 00:11:44,000 --> 00:11:47,840 Пред да можете да всушност ја користат таа променлива. 220 00:11:47,840 --> 00:11:51,170 Поради тоа што е силно отчукува, ќе мора да се дружат еден вид 221 00:11:51,170 --> 00:11:52,890 со овие променливи. 222 00:11:52,890 --> 00:11:56,120 >> Значи во овој случај, ако јас не сум правилно иницијализиран првиот со некоја вредност, 223 00:11:56,120 --> 00:12:00,520 тогаш јас треба да се каже она што Свифт Очекувам типот податоци да бидат. 224 00:12:00,520 --> 00:12:02,650 И тоа се случува да остане на истиот тип на податоци 225 00:12:02,650 --> 00:12:05,780 низ историјата на оваа програма. 226 00:12:05,780 --> 00:12:10,050 >> Сега може да биде во искушение штом Имам креирано овој градус променлива 227 00:12:10,050 --> 00:12:13,530 и тоа со што се предвидени цел број 100, сега ако јас 228 00:12:13,530 --> 00:12:18,540 сакате да се обиде да concatenate стринг со тој број, 229 00:12:18,540 --> 00:12:21,610 би можеле да бидат доведени во искушение да се уште го користат тој оператор низа сплет 230 00:12:21,610 --> 00:12:24,500 како што ни остана само неколку линии порано. 231 00:12:24,500 --> 00:12:26,460 Но за жал, ова всушност ќе не 232 00:12:26,460 --> 00:12:29,270 работат, затоа што се суштина вршење 233 00:12:29,270 --> 00:12:32,380 операција на два различни вида. 234 00:12:32,380 --> 00:12:36,856 >> Сега ова е многу различен од другите јазици како PHP кои се навистина 235 00:12:36,856 --> 00:12:38,480 loosey изплашен со нивниот вид на типови. 236 00:12:38,480 --> 00:12:40,030 Тие се само се допаѓа, да, што и да, не ми е грижа. 237 00:12:40,030 --> 00:12:42,710 Само дај ми еден тип, и можеби и јас ќе ја направат вистинската работа. 238 00:12:42,710 --> 00:12:46,060 >> Во овој случај, Свифт е многу строги за видовите 239 00:12:46,060 --> 00:12:47,350 кои ќе се занимаваат со. 240 00:12:47,350 --> 00:12:50,700 Овој оператор сума или конкатенација оператор 241 00:12:50,700 --> 00:12:54,400 во суштина неколку различни можни опции. 242 00:12:54,400 --> 00:12:56,970 Можете да го направите сума со цели броеви, или 243 00:12:56,970 --> 00:13:00,870 може да направи низа сплет, и можеби и некои други работи, како и. 244 00:13:00,870 --> 00:13:05,550 Но, ако тоа не го признава оператор она што е на двете страни на тоа, 245 00:13:05,550 --> 00:13:10,452 или, поточно, комбинација на сите овие два типа, не е она што го очекуваме, 246 00:13:10,452 --> 00:13:11,910 тогаш тоа нема да предизвика неуспех. 247 00:13:11,910 --> 00:13:16,690 >> Значи во овој случај, што значи тоа да има низа плус цел број? 248 00:13:16,690 --> 00:13:18,880 И во контекст на ова, веројатно ќе сакате 249 00:13:18,880 --> 00:13:21,990 да се направи операција на низа сплет. 250 00:13:21,990 --> 00:13:26,420 Но, се разбира на компјутерот не мора тој вид на контекст. 251 00:13:26,420 --> 00:13:29,950 И така ние треба да се обезбедат дека дополнителни информации 252 00:13:29,950 --> 00:13:32,390 да нека знаат што е тоа е дека ние сакаме да се направи. 253 00:13:32,390 --> 00:13:36,860 >> Значи со други зборови, тоа дека Свифт е силно отчукува 254 00:13:36,860 --> 00:13:39,520 значи дека треба да се направи малку дополнителна работа 255 00:13:39,520 --> 00:13:42,100 да се добие тоа да работат на начин на кој вие ќе го сакате. 256 00:13:42,100 --> 00:13:43,710 Но, како резултат на тоа, тоа е побезбедно. 257 00:13:43,710 --> 00:13:46,290 И штом еднаш ќе имаат преземат ги во предвид овие видови, 258 00:13:46,290 --> 00:13:49,300 работи само искрено да почне да се работи доста добро. 259 00:13:49,300 --> 00:13:52,520 >> Значи во овој случај, тогаш ние би изврши низа сплет 260 00:13:52,520 --> 00:13:56,040 со експлицитно кастинг цел број во низа 261 00:13:56,040 --> 00:13:58,490 со тоа што обвивката во овој капитал К низа функција, 262 00:13:58,490 --> 00:14:03,510 а потоа со помош на низа сплет оператор да ги изменат нашите променлива етикета, 263 00:14:03,510 --> 00:14:06,280 а потоа и да го испечатите. 264 00:14:06,280 --> 00:14:08,420 >> Досега добро? 265 00:14:08,420 --> 00:14:12,020 Добро, ајде да се движи. 266 00:14:12,020 --> 00:14:16,300 >> Сега постојат различни податоци видови кои може да се користат во Свифт. 267 00:14:16,300 --> 00:14:21,620 Како што се навикнати да, можеме да се создаде променливи низа. 268 00:14:21,620 --> 00:14:26,140 Само и дека низа може содржи еден тип. 269 00:14:26,140 --> 00:14:30,360 >> Значи во овој случај, ние ќе треба да се создаде на променливи низи од броеви, кои 270 00:14:30,360 --> 00:14:34,800 ние ќе го наречеме оценки, и ние ќе бидеме во можност за да ја запази дека во овој плоштад заградата 271 00:14:34,800 --> 00:14:38,650 формат како што сте свикнале во голем број на други јазици. 272 00:14:38,650 --> 00:14:41,150 Но се забележи дека тука се дефинирање на неколку работи. 273 00:14:41,150 --> 00:14:45,350 оценки е непостојана variable-- ние не го користат ајде клучен збор. 274 00:14:45,350 --> 00:14:49,620 Па тоа значи дека тогаш ние може да го менува Содржината на оваа низа. 275 00:14:49,620 --> 00:14:53,420 Тоа е од типот Низа int, а ние може да се каже дека 276 00:14:53,420 --> 00:14:56,260 врз основа на овие квадратни загради тука. 277 00:14:56,260 --> 00:14:58,930 >> Сега е еден од убавите работи во врска со ова е дека ние 278 00:14:58,930 --> 00:15:02,310 имаат пристап до голем број на дополнителни информации 279 00:15:02,310 --> 00:15:07,110 за низа само користење некои едноставни точка нотација. 280 00:15:07,110 --> 00:15:10,500 Така на пример, grades.count обезбедува до нас 281 00:15:10,500 --> 00:15:14,820 бројот на предмети кои постојат во таа низа, која потоа можеме да пристапите прилично 282 00:15:14,820 --> 00:15:19,090 лесно, едноставно со помош на таа точка нотација. 283 00:15:19,090 --> 00:15:21,830 >> Ако сакате да додадете дополнителни предмети на оваа низа, 284 00:15:21,830 --> 00:15:27,220 не можете да направите стилот на PHP каде што само експлицитно да се дефинира, 285 00:15:27,220 --> 00:15:30,910 во даден индекс, некои вредност што сакате да ја внесете. 286 00:15:30,910 --> 00:15:37,210 Наместо тоа, користете додавај метод во вид на низа 287 00:15:37,210 --> 00:15:40,920 за да се додаде таа ствар, 95, на оваа листа. 288 00:15:40,920 --> 00:15:45,990 >> Па сега оваа низа има следниве contents-- 100, 0, 90, 85. 289 00:15:45,990 --> 00:15:49,270 И сега сме во прилог 95 до тоа како добро. 290 00:15:49,270 --> 00:15:51,830 >> Постојат и други начини можеме да додадете работи. 291 00:15:51,830 --> 00:15:55,030 Ти всушност може да се користи оператор збир, 292 00:15:55,030 --> 00:15:59,200 која ќе се толкува како операција низа додавај. 293 00:15:59,200 --> 00:16:04,680 А потоа може да се додаде уште еден низа, чии содржини се 70 и 80, 294 00:16:04,680 --> 00:16:05,560 за таа низа. 295 00:16:05,560 --> 00:16:08,250 Така, сега имаме на содржина на овој променлив 296 00:16:08,250 --> 00:16:17,220 grades-- 100, 0, 90, 85, 95, 70 и 80. 297 00:16:17,220 --> 00:16:21,850 Ова е само убаво малку синтаксички шеќер што Свифт дава нам. 298 00:16:21,850 --> 00:16:23,850 >> Значи, ако сакаме да се сумира на оценки, ние сме можеби 299 00:16:23,850 --> 00:16:27,340 ќе сакаат да iterate во текот на секој елемент во овој циклус. 300 00:16:27,340 --> 00:16:32,150 И ние имаме, кај Свифт, поимот на за телефонска линија, како што би очекувале. 301 00:16:32,150 --> 00:16:35,350 Но начинот на кој ние се покаже опсег е малку поинаква. 302 00:16:35,350 --> 00:16:37,790 Значи во овој случај, да се сумира сè, ние ќе 303 00:16:37,790 --> 00:16:40,650 случува да се создаде привремена променлива наречена сума со цел за нас 304 00:16:40,650 --> 00:16:42,580 да се одржи овој брои. 305 00:16:42,580 --> 00:16:44,430 >> И известување за нашите јамка изградба тука. 306 00:16:44,430 --> 00:16:46,820 За индекс во 0 .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Значи оваа конструкција, 0 .. 00:17:01,860 велејќи дека ние се случува да се создаде голем број на цели броеви од 0 до 310 00:17:01,860 --> 00:17:05,750 да, но со исклучок grades.count. 311 00:17:05,750 --> 00:17:09,577 Па ова ќе биде 0, 1, 2, 3, 4, 5, се до еден сепак многу 312 00:17:09,577 --> 00:17:10,410 пред grades.count. 313 00:17:10,410 --> 00:17:14,160 >> Значи ова е различно од тоа како ние обично ќе се користи за петелки 314 00:17:14,160 --> 00:17:18,569 каде што ќе има некои индекс променлива, еднакво на 0 поставени во првиот, 315 00:17:18,569 --> 00:17:25,480 а потоа се интегрираат дека до некои вредност помала од бројот на предмети 316 00:17:25,480 --> 00:17:27,140 во таа низа. 317 00:17:27,140 --> 00:17:29,820 >> Значи, постои промена на ова, всушност, 318 00:17:29,820 --> 00:17:35,010 која ни овозможува да многу лесно поставени различни видови на опсег. 319 00:17:35,010 --> 00:17:40,570 Ако го промените овој опсег до три точки, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 ова претставува опсег од 0 да grades.count инклузивен, 321 00:17:45,120 --> 00:17:49,260 што значи дека тој број е, исто така, потоа се вклучени во тој опсег. 322 00:17:49,260 --> 00:17:52,110 >> Но, ова е многу корисна за овие егзактни работи, 323 00:17:52,110 --> 00:17:54,590 кога треба да се изврши повторувања над јамка 324 00:17:54,590 --> 00:17:59,630 поради тоа што тие индекси се нула индексирани, како што видовме на други јазици 325 00:17:59,630 --> 00:18:02,360 исто така. 326 00:18:02,360 --> 00:18:05,210 Било какви прашања во врска со ова за телефонска линија? 327 00:18:05,210 --> 00:18:10,660 >> Значи има имплицитна дефиниција на овој индекс променлива, 328 00:18:10,660 --> 00:18:14,350 чија вредност започнува од 0, и продолжува на секој циклус на повторување 329 00:18:14,350 --> 00:18:17,950 за да се зголеми за 1 до точка што е еднаков на grades.count, 330 00:18:17,950 --> 00:18:20,380 на која точка, јамка прекинува. 331 00:18:20,380 --> 00:18:23,730 >> Забележете дека во нашата низа интерполација тука, 332 00:18:23,730 --> 00:18:26,910 ние, всушност, може да изврши некои едноставни манипулации на тие вредности. 333 00:18:26,910 --> 00:18:31,230 Па индексот плус 1, всушност, ќе вршење на сума од таа вредност 334 00:18:31,230 --> 00:18:34,780 бидејќи индексот е, овој случај, цел број. 335 00:18:34,780 --> 00:18:37,810 И во тој момент, тоа ќе потоа се конвертира во низа 336 00:18:37,810 --> 00:18:42,230 и интерполиран на овој стринг тука, и печатени надвор како што би се очекувало. . 337 00:18:42,230 --> 00:18:44,520 >> И убаво нешто за низи тука е 338 00:18:44,520 --> 00:18:50,730 дека и ние сме во можност да имаат Примам вредности и вредностите на поставката 339 00:18:50,730 --> 00:18:54,080 користење на плоштадот заградата нотација како ние сме виделе на други јазици, како и. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> Добро, па од тука, ние сега пресмета нашите збирот на сите од нашите оценки. 342 00:19:01,030 --> 00:19:02,780 Сега вид на следниот логичен чекор би бил 343 00:19:02,780 --> 00:19:07,580 да се направи операција на поделба да се најде од просекот на оние одделенија. 344 00:19:07,580 --> 00:19:10,150 Но, нешто важно тука се случува која 345 00:19:10,150 --> 00:19:15,020 е дека оваа сума е можеби цел број. 346 00:19:15,020 --> 00:19:18,020 Но, ние треба да се изврши некои вид на двојна поделба. 347 00:19:18,020 --> 00:19:20,600 И тоа се случува да биде исклучително важно кога 348 00:19:20,600 --> 00:19:24,140 сакаме да ја извршите оваа операција, затоа што она што сакаме да го кажеме 349 00:19:24,140 --> 00:19:28,430 е дека ние треба да се, всушност, изврши поделба на две двојки. 350 00:19:28,430 --> 00:19:31,370 И повторно, бидејќи Свифт е многу силно чука, 351 00:19:31,370 --> 00:19:36,760 ние мора експлицитно да го поставите на сите предмети да двојки пред ние всушност 352 00:19:36,760 --> 00:19:38,300 изведување на таа операција. 353 00:19:38,300 --> 00:19:40,550 >> Значи, со цел за нас да изврши двојна поделба, 354 00:19:40,550 --> 00:19:43,730 тоа не е доволно за само еден на оние ставки за да биде двојно. 355 00:19:43,730 --> 00:19:46,400 И двете од нив мора да биде двокреветни со цел за брзо 356 00:19:46,400 --> 00:19:50,860 за да бидете сигурни дека овој е она што сакаме да го стори. 357 00:19:50,860 --> 00:19:54,360 Па, ние тогаш ќе експлицитно typecast збирот кој го пресметува погоре 358 00:19:54,360 --> 00:19:58,970 и пребројувањето на оценки за двојки, и потоа изведување на таа операција и продавница 359 00:19:58,970 --> 00:20:02,390 дека во оваа нова променлива, или подобро кажано, оваа нова постојана наречен просек, 360 00:20:02,390 --> 00:20:06,810 кои ќе имаат каков тип, можете да замислите? 361 00:20:06,810 --> 00:20:07,587 Двојно, да. 362 00:20:07,587 --> 00:20:09,420 Значи во овој случај, ние не мора да го наведете 363 00:20:09,420 --> 00:20:13,450 затоа што тоа може да се заклучи од операција каков тип на просечните податоци 364 00:20:13,450 --> 00:20:14,730 ќе биде. 365 00:20:14,730 --> 00:20:19,025 И Свифт е обично прилично добар за да се биде во можност да заклучиме типови. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> Дали сакате да го видите ова работи, или можам да се движат натаму? 368 00:20:24,200 --> 00:20:25,640 Сакам да се одржи во живот. 369 00:20:25,640 --> 00:20:28,130 Било какви прашања во врска со било кој од овој? 370 00:20:28,130 --> 00:20:28,630 Одлично. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Сега ние ќе треба да почнат да се добие за да се добрата stuff-- функции дефинирање, 373 00:20:35,010 --> 00:20:39,090 и неколку други видови кои се единствен за Свифт дека немате 374 00:20:39,090 --> 00:20:41,620 видел на други јазици до овој момент, 375 00:20:41,620 --> 00:20:46,290 но тие се присутни во други јазици кои можеби ќе се најде подоцна. 376 00:20:46,290 --> 00:20:48,210 Значи прво, ако сакате за да се дефинира функција, 377 00:20:48,210 --> 00:20:52,170 го дефинирал со фанки збор функција, а потоа името на функцијата, 378 00:20:52,170 --> 00:20:56,710 а потоа во заграда, аргументите што сакате да ја прифати таа функција. 379 00:20:56,710 --> 00:21:00,280 Аргументите мора, исто така specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 исто така мора да се определи видот на податоците кои тие се, освен ако тие не може да се заклучи. 381 00:21:05,010 --> 00:21:07,500 И ќе видиме дека многу малку забелешката за само малку. 382 00:21:07,500 --> 00:21:09,920 >> Значи во овој случај имаме функција наречена printGradeCount. 383 00:21:09,920 --> 00:21:12,840 Ние ќе треба да се прифати variable-- односно во овој случај, 384 00:21:12,840 --> 00:21:14,450 на constant-- наречен gradebook. 385 00:21:14,450 --> 00:21:18,517 И тоа се случува да биде на напишете низа од цели броеви. 386 00:21:18,517 --> 00:21:20,600 Сега има нешто што е навистина важно тука 387 00:21:20,600 --> 00:21:21,849 што сакам да го разбере. 388 00:21:21,849 --> 00:21:27,560 Тоа е дека по правило, овие аргументи кои се извори на информации за оваа функција се 389 00:21:27,560 --> 00:21:34,380 дефинирани со имплицитно ајде на клучни зборови, што значи дека не можам да го измените ова 390 00:21:34,380 --> 00:21:39,850 gradebook променлива овде. 391 00:21:39,850 --> 00:21:43,360 И тој вид на смисла, затоа што ти си поминува податоците. 392 00:21:43,360 --> 00:21:45,860 А вие можеби не го сакаат тоа да се промени од под вас. 393 00:21:45,860 --> 00:21:50,800 Можно е да се споменува експлицитно дека ова е променлива со ставање 394 00:21:50,800 --> 00:21:52,070 на var клучниот збор овде. 395 00:21:52,070 --> 00:21:56,832 Но, тоа е дека ние сме gotcha забележав луѓе го направиле во минатото 396 00:21:56,832 --> 00:21:59,790 е дека тие се претпоставува дека тоа се случува да биде променлива, кога, всушност, тоа 397 00:21:59,790 --> 00:22:02,640 е константа. 398 00:22:02,640 --> 00:22:07,340 >> Добро, па тука тогаш, во овој случај, ние не се специфицира секаков вид враќање. 399 00:22:07,340 --> 00:22:09,460 Ние ќе ви покаже како да се направи дека во само еден миг. 400 00:22:09,460 --> 00:22:12,340 Не се забележи дека тука имаме само едноставна ако состојба. 401 00:22:12,340 --> 00:22:14,560 Ако gradebook е празен, кој во овој случај 402 00:22:14,560 --> 00:22:19,310 е само во сопственост на оваа цел број низа, тогаш ние се печати нешто. 403 00:22:19,310 --> 00:22:23,100 Инаку ние се направи нешто друго. 404 00:22:23,100 --> 00:22:25,000 >> Прилично јасна досега мислам. 405 00:22:25,000 --> 00:22:27,960 Но ме запре, ако имате било какви прашања. 406 00:22:27,960 --> 00:22:33,350 >> Сега оваа функција, во просек, исто така, ги зема некои аргументи, или поточно еден аргумент, 407 00:22:33,350 --> 00:22:37,507 која е gradebook, и овој пат ќе се врати двоен тип. 408 00:22:37,507 --> 00:22:39,340 Поради тоа што се компјутери просечната и тоа е 409 00:22:39,340 --> 00:22:45,010 ќе всушност се врати таа пресметаниот просек на повикувачка линија. 410 00:22:45,010 --> 00:22:50,070 >> Во овој случај, ние наведете тип врати по стрела. 411 00:22:50,070 --> 00:22:53,260 И ова може да се чувствуваат вид на чудни во прв. 412 00:22:53,260 --> 00:22:55,610 Сте свикнале за поставување на враќање 413 00:22:55,610 --> 00:22:57,720 внесете пред името на функцијата. 414 00:22:57,720 --> 00:23:00,310 Но, ако се мисли на ова во однос на математиката, 415 00:23:00,310 --> 00:23:03,320 како кога имаш математика со кои се дефинира функција, 416 00:23:03,320 --> 00:23:06,807 имаш функција со некои влезови, и произведува излез. 417 00:23:06,807 --> 00:23:08,890 И тоа е точно она што ова би требало да го имитираат. 418 00:23:08,890 --> 00:23:12,460 И има неколку други јазици кои имаат слична синтакса, како и, 419 00:23:12,460 --> 00:23:15,674 но веројатно никој што сте виделе во CS50. 420 00:23:15,674 --> 00:23:17,090 Но, сепак не се збунети од тоа. 421 00:23:17,090 --> 00:23:21,650 На стрелката значи дека она што се случува треба да се врати во овој случај. 422 00:23:21,650 --> 00:23:23,650 Добро, па како ќе се дојде да се пресмета овој просек? 423 00:23:23,650 --> 00:23:25,649 Па, ако gradebook е празна, и тогаш сите ние сме 424 00:23:25,649 --> 00:23:30,731 ќе се врати 0, што можеби разумен начин за лекување на оваа. 425 00:23:30,731 --> 00:23:32,980 Не знам, ајде да дојде назад кон тоа во малку. 426 00:23:32,980 --> 00:23:34,688 Ова можеби и не, всушност, да биде разумен начин 427 00:23:34,688 --> 00:23:38,310 да се пресмета просек ако имаме празен gradebook. 428 00:23:38,310 --> 00:23:41,260 >> Тогаш ние само ќе се изврши нашите сума. 429 00:23:41,260 --> 00:23:43,900 Известување дека тука, всушност, има една алтернативна верзија на 430 00:23:43,900 --> 00:23:49,190 за телефонска линија, која ни овозможува да iterate над секоја точка во низа 431 00:23:49,190 --> 00:23:53,630 и место на секој елемент во свои променлива. 432 00:23:53,630 --> 00:23:56,200 Со впишување на одделение gradebook, она што сакаме да го кажеме 433 00:23:56,200 --> 00:24:00,560 е во тоа што ние ќе треба да имплицитно се создаде нов постојан наречен 434 00:24:00,560 --> 00:24:05,180 оценка што ќе ги претставуваат секоја единствена ставка во gradebook 435 00:24:05,180 --> 00:24:06,769 секој пат дека за јамка iterates. 436 00:24:06,769 --> 00:24:08,560 Па прв пат Тоа е воден, одделение ќе 437 00:24:08,560 --> 00:24:09,800 биде прв објект во gradebook. 438 00:24:09,800 --> 00:24:12,300 Вториот пат тоа ќе биде на Втората точка, па натаму и така натаму 439 00:24:12,300 --> 00:24:15,970 се додека има gradebook се исцрпени на елементи. 440 00:24:15,970 --> 00:24:20,390 Тогаш ние ќе бидеме во можност да се сумира што одделение во нашата сума променлива 441 00:24:20,390 --> 00:24:22,570 и да се врати нашиот просек како што не сум видел. 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 ОК, било какви прашања? 444 00:24:26,950 --> 00:24:27,699 Да? 445 00:24:27,699 --> 00:24:28,990 ПУБЛИКАТА: Имам две прашања. 446 00:24:28,990 --> 00:24:33,586 Број еден, хипотетички, можат ќе се кандидира за оваа цел број еден? 447 00:24:33,586 --> 00:24:35,604 Не мора да биде двокреветни, е тоа точно? 448 00:24:35,604 --> 00:24:37,520 ДАН AMRMENDARIZ: Можете ли да повторувам тоа прашање? 449 00:24:37,520 --> 00:24:39,587 ПУБЛИКАТА: Може ли да се направи цел број во однос на просекот? 450 00:24:39,587 --> 00:24:41,670 ДАН AMRMENDARIZ: Можете ли да направи цел број како просек? 451 00:24:41,670 --> 00:24:45,015 Па се врати цел број просечна наместо на двојно? 452 00:24:45,015 --> 00:24:48,204 >> ПУБЛИКАТА: ќе Return-- имаат тоа право сега подолу. 453 00:24:48,204 --> 00:24:49,870 ДАН AMRMENDARIZ: Токму тука, се врати 0.0? 454 00:24:49,870 --> 00:24:51,790 ПУБЛИКАТА: Да, само се врати 0. 455 00:24:51,790 --> 00:24:56,590 Па тоа ќе биде или 80 или 85 години, но не и 85.2. 456 00:24:56,590 --> 00:24:59,465 >> ДАН AMRMENDARIZ: Значи во тој случај, така има неколку различни начини 457 00:24:59,465 --> 00:25:00,090 да одговори на тоа. 458 00:25:00,090 --> 00:25:02,760 Дозволете ми да се одговори на нив со цел. 459 00:25:02,760 --> 00:25:06,740 Значи, ако јас само се направи ова враќање 0, 0 е целобројна вредност. 460 00:25:06,740 --> 00:25:09,730 И така што ќе предизвика Вид на грешка за овој случај 461 00:25:09,730 --> 00:25:13,210 поради тоа што се очекува двојно но потоа ќе се врати цел број. 462 00:25:13,210 --> 00:25:16,770 Ако сакам да се врати цел број, можам. 463 00:25:16,770 --> 00:25:20,450 Можам да го поставите тип на враќање да int, се врати 0 тука, 464 00:25:20,450 --> 00:25:22,047 и да не се изврши двојна поделба. 465 00:25:22,047 --> 00:25:23,880 Но, тогаш ние би биле прави целобројна поделба. 466 00:25:23,880 --> 00:25:27,080 И така ние тогаш не би се добие Просечната дека ние можеби би очекувале. 467 00:25:27,080 --> 00:25:29,210 Но, да, ние може да го менува видовите на тој начин. 468 00:25:29,210 --> 00:25:32,598 >> ПУБЛИКАТА: И второ, вие имаат еден брачен на врвот. 469 00:25:32,598 --> 00:25:35,502 Но, долу, кога ќе се враќаат Двокреветна Двокреветна, 470 00:25:35,502 --> 00:25:38,280 која веќе е автоматски враќајќи Двоен формат. 471 00:25:38,280 --> 00:25:42,278 Зошто се уште треба да го дефинираат со стрелки на врвот со Двоен? 472 00:25:42,278 --> 00:25:45,010 >> ДАН AMRMENDARIZ: Значи За секој случај, ова е дел 473 00:25:45,010 --> 00:25:50,580 на the-- така да го повтори прашањето, затоа што тоа е имплицитна од враќањето 474 00:25:50,580 --> 00:25:56,030 типови тука, она што овој тип, всушност е, ние треба да се експлицитни со Свифт 475 00:25:56,030 --> 00:25:59,970 за тоа што сакаме да го врати за излез од оваа функција 476 00:25:59,970 --> 00:26:02,690 така што кога тоа врши напишеш проверка, може да бидете сигурни дека 477 00:26:02,690 --> 00:26:05,850 дека она што, всушност, имаме напишано долу, всушност, е во согласност со тоа. 478 00:26:05,850 --> 00:26:10,225 Така, тоа е вид на како чек со себе вид на ситуацијата. 479 00:26:10,225 --> 00:26:11,050 Но има are-- 480 00:26:11,050 --> 00:26:12,560 >> ПУБЛИКАТА: [Беззвучен] arrow? 481 00:26:12,560 --> 00:26:19,490 >> ДАН AMRMENDARIZ: Има случаи кога ние може да се каже дека ние може имплицитно 482 00:26:19,490 --> 00:26:21,550 поставите тип враќање. 483 00:26:21,550 --> 00:26:23,940 Но, во овој случај, јас не мислам дека ќе работи. 484 00:26:23,940 --> 00:26:26,190 Има некои други синтакса кои што ќе видиме подоцна. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> Добро, па овој извор код е малку поинаква 487 00:26:35,280 --> 00:26:41,839 бидејќи овој парсира аргументи од функцијата, дека ние сме вика. 488 00:26:41,839 --> 00:26:44,130 Дозволете ми да ви покажеме како функционира пред ние всушност се движат на 489 00:26:44,130 --> 00:26:48,050 до некои интересни работи што се случува во Свифт. 490 00:26:48,050 --> 00:26:51,870 >> Значи во овој случај, ако јас само ја извршите оваа код, забележите дека она што го прави 491 00:26:51,870 --> 00:26:54,900 is-- време, тој вид на ми дава чудна грешка. 492 00:26:54,900 --> 00:26:59,730 Јас треба да го помине неколку цели броеви како аргумент на командната линија. 493 00:26:59,730 --> 00:27:06,220 Да видиме, 150 и 80, и притиснете Enter за да дознаете што тоа е всушност прави. 494 00:27:06,220 --> 00:27:09,890 Тоа е прифаќање на секој од овие вредности како цели броеви. 495 00:27:09,890 --> 00:27:12,040 Тоа ги внесување во gradebook. 496 00:27:12,040 --> 00:27:14,470 И тогаш тоа е вршење дека просечен пресметка 497 00:27:14,470 --> 00:27:16,650 и Ставање дека како што се би се очекувало. 498 00:27:16,650 --> 00:27:19,950 >> Но очигледно има нешто се случува со овој отфрлајќи нешто 499 00:27:19,950 --> 00:27:23,300 нешто како цел број. 500 00:27:23,300 --> 00:27:27,300 Како што може да се сети од кога бевме кои се занимаваат со аргументи на командната линија 501 00:27:27,300 --> 00:27:32,640 во C и на други јазици, првиот 0-ти елемент во тој аргумент за командната линија 502 00:27:32,640 --> 00:27:35,774 Листата е името на командата дека ние всушност егзекутирани. 503 00:27:35,774 --> 00:27:38,690 Значи во овој случај, јас сум само looping над сите аргументи на командната линија. 504 00:27:38,690 --> 00:27:41,650 Но, јас не го правам било кој вид на фенси проверете, за да го прескокнете во текот на овој првиот. 505 00:27:41,650 --> 00:27:45,920 Јас сум само експлицитно или имплицитно сум проверка кој од овие видови 506 00:27:45,920 --> 00:27:49,900 се цели броеви пред јас всушност извршување на оваа пресметка. 507 00:27:49,900 --> 00:27:52,420 >> И тоа е во суштина она што се случува овде. 508 00:27:52,420 --> 00:27:55,860 За секој аргумент во аргументи процесот е, 509 00:27:55,860 --> 00:27:59,210 Одам да се изврши некоја чек. 510 00:27:59,210 --> 00:28:01,970 И во овој случај, јас ќе одам да се обиде да се претворат 511 00:28:01,970 --> 00:28:07,620 тој аргумент во цел број од вршење експлицитна typecast, 512 00:28:07,620 --> 00:28:12,310 поради тоа што е, на влез, стринг а не во фактот цел број. 513 00:28:12,310 --> 00:28:18,140 >> Но, ова е вид на чудно синтакса, ако нека градус еднаква INT (аргументи). 514 00:28:18,140 --> 00:28:21,120 Што всушност се случува тука е исклучително 515 00:28:21,120 --> 00:28:24,390 важно да вашиот користење Свифт. 516 00:28:24,390 --> 00:28:27,610 Ова е со користење на она што е наречен изборен тип. 517 00:28:27,610 --> 00:28:34,790 >> Затоа оваа функција, инт (аргумент), се враќа не само цел број, но се враќа 518 00:28:34,790 --> 00:28:37,470 она што се нарекува изборен цел број. 519 00:28:37,470 --> 00:28:41,200 И така ова е вид на тип на врвот на еден тип. 520 00:28:41,200 --> 00:28:45,900 Можете да го замислите вид на како тоа е враќање како пакет. 521 00:28:45,900 --> 00:28:47,750 И кога ќе ја отворите дека пакет, или 522 00:28:47,750 --> 00:28:53,930 има цел број, што е резултат, или таа има апсолутно ништо во неа на сите. 523 00:28:53,930 --> 00:28:58,140 И ова е корисно, како проверка на грешка механизам, бидејќи во овој случај 524 00:28:58,140 --> 00:29:02,080 ние може да се дознае, беше ова тип реализација успешни? 525 00:29:02,080 --> 00:29:05,810 Ако е, тогаш тоа е во фактот случува да имаат цел број внатре. 526 00:29:05,810 --> 00:29:08,750 Инаку тоа се случува да имаат некои вредност што ќе го наречеме нула, што 527 00:29:08,750 --> 00:29:10,920 е претставник на цел број не на сите. 528 00:29:10,920 --> 00:29:13,270 Тоа е навистина претставник на ништо. 529 00:29:13,270 --> 00:29:18,130 >> Па така ова ако изградбата ни овозможува да се одвитка тој пакет, 530 00:29:18,130 --> 00:29:19,850 дека опционални обврзувачки. 531 00:29:19,850 --> 00:29:25,560 И ако ние сме во состојба да се одвитка дека пакет и да се најде цел број внатре, 532 00:29:25,560 --> 00:29:27,720 тогаш она што сакаме да го кажеме тука е дека ние ќе потоа 533 00:29:27,720 --> 00:29:33,090 овозможуваат таа вредност што треба да се постави во оваа постојана наречен одделение. 534 00:29:33,090 --> 00:29:36,590 И овој дел од ако изјава, горниот дел на изјавата ако 535 00:29:36,590 --> 00:29:40,390 ќе се кандидира, бидејќи тоа одвитка беше успешна. 536 00:29:40,390 --> 00:29:43,290 >> Ако тоа само така се случува, дека имаше грешка можеби 537 00:29:43,290 --> 00:29:47,040 во овој експлицитна конверзија тип од низа на цел број, можеби 538 00:29:47,040 --> 00:29:49,160 тоа е на ABC вредноста на пример. 539 00:29:49,160 --> 00:29:52,120 А тоа е, всушност, не се случува да се претворат во цел број. 540 00:29:52,120 --> 00:29:55,520 Тогаш тоа ќе се врати нула, која не е цел број. 541 00:29:55,520 --> 00:29:57,570 И ова ако изјава и потоа да пропадне. 542 00:29:57,570 --> 00:30:01,930 одделение нема да постои, бидејќи нема содржина цел број. 543 00:30:01,930 --> 00:30:06,391 И тоа ќе го изврши овој друг блок, наместо. 544 00:30:06,391 --> 00:30:06,890 Да? 545 00:30:06,890 --> 00:30:09,652 >> ПУБЛИКАТА: Нил е N-I-L? 546 00:30:09,652 --> 00:30:11,110 ДАН AMRMENDARIZ: нула е N-јас-Л, да. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> Така што ова е можеби еден од најтешките работи за Свифт, 549 00:30:20,310 --> 00:30:23,690 особено кога сте во плевел врз iOS стан 550 00:30:23,690 --> 00:30:27,442 и ти си, всушност се обидува да се направи некои развојот таму. 551 00:30:27,442 --> 00:30:29,400 Тоа се случува да се вика во вас за опционални. 552 00:30:29,400 --> 00:30:33,050 Тоа се случува да се прашуваат за прашалници и фантастичен поени. 553 00:30:33,050 --> 00:30:37,100 Но штом ќе дознаам out-- ако посвети некое време за да се пронајдат 554 00:30:37,100 --> 00:30:41,990 она што се случува со изборен видови, Ќе се спаси многу главоболка 555 00:30:41,990 --> 00:30:46,040 како што се обидуваат да напишам еден стан во Свифт. 556 00:30:46,040 --> 00:30:47,660 >> Тоа е всушност многу моќна функција. 557 00:30:47,660 --> 00:30:49,826 А вие само ќе треба да земе збор ми за тоа за сега. 558 00:30:49,826 --> 00:30:52,620 Но ќе видиме оваа конструкција и некои други се допаѓа 559 00:30:52,620 --> 00:30:56,740 во некои од другите код која ние ќе ви покажеме во само малку. 560 00:30:56,740 --> 00:31:00,440 >> Дали има некои почетните прашања во оваа ситуација? 561 00:31:00,440 --> 00:31:03,790 562 00:31:03,790 --> 00:31:08,690 Па важно е дека готова брза опционални вид е вид на metatype. 563 00:31:08,690 --> 00:31:12,500 Или има вредност, и ако го прави тоа, тогаш тоа 564 00:31:12,500 --> 00:31:18,110 можеби ќе има таа вредност поврзани со тоа, или нема вредност она, 565 00:31:18,110 --> 00:31:19,620 и таа е претставена со нула. 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 Остатокот на ова е можеби како што би очекувале. 568 00:31:28,870 --> 00:31:32,900 >> Значи, да се интензивира на потешкотии повторно. 569 00:31:32,900 --> 00:31:37,070 И овој пат, ајде да ги разгледаме во некои други типови на податоци, кој всушност постои. 570 00:31:37,070 --> 00:31:41,290 Еден од нив е речници, што е многу сличен на Пајтон речници. 571 00:31:41,290 --> 00:31:48,270 Тоа е донекаде сличен на хаш табелата во C. Тоа е во суштина мапирање на копчињата 572 00:31:48,270 --> 00:31:49,820 каде клучевите може да се жици. 573 00:31:49,820 --> 00:31:52,670 И кога ќе се погледне нагоре тие клучеви, тие клучеви ќе имаат вредност. 574 00:31:52,670 --> 00:31:56,020 Па тоа не е сосема низа, но наместо тоа, се повеќе тесно поврзани 575 00:31:56,020 --> 00:31:58,810 со карта хеш или хаш табелата. 576 00:31:58,810 --> 00:32:02,420 >> Ајде да видиме како ова би требало да се работи пред да се, всушност, 577 00:32:02,420 --> 00:32:05,210 одат во изворниот код себе. 578 00:32:05,210 --> 00:32:07,680 Ако јас само ја извршите оваа, ништо не се случува. 579 00:32:07,680 --> 00:32:12,430 Тоа е ми кажуваше дека јас очекувам некои параметри од следните типови. 580 00:32:12,430 --> 00:32:16,050 Па јас ќе одам да се обезбеди да се тоа некој проблем во собата имиња, 581 00:32:16,050 --> 00:32:18,490 па pset0, можеби и јас добив 100. 582 00:32:18,490 --> 00:32:20,790 И pset1, добив 5. 583 00:32:20,790 --> 00:32:24,630 А потоа на испит, јас навистина добро и доби 30. 584 00:32:24,630 --> 00:32:27,180 И Упс, јас хит простор тука. 585 00:32:27,180 --> 00:32:30,940 >> Кога ќе притиснете Enter, може да се види го врши некоја пресметка. 586 00:32:30,940 --> 00:32:33,740 Таа вели gradebook е три оценки, pset1, pset0, испит. 587 00:32:33,740 --> 00:32:36,120 И gradebook има овој специфичен просек. 588 00:32:36,120 --> 00:32:38,370 Значи, повторно, ние работиме gradebook со оваа идеја, 589 00:32:38,370 --> 00:32:44,650 но ние ќе продолжиме процесирањето со комплексноста на нашата функција. 590 00:32:44,650 --> 00:32:47,650 >> Така на почетокот, ние сме само случува да се создаде функција што 591 00:32:47,650 --> 00:32:49,390 е одговорен за печатењето на употреба. 592 00:32:49,390 --> 00:32:51,920 И таму е овој излез функција која само ќе 593 00:32:51,920 --> 00:32:53,710 насилно се откажа од апликацијата. 594 00:32:53,710 --> 00:32:56,530 Ова не е нешто што ќе ги користите во iOS стан. 595 00:32:56,530 --> 00:32:59,750 Ова е само, во овој случај, со аргументи на командната линија. 596 00:32:59,750 --> 00:33:01,990 Следна ние ќе тргнуваат кон Xcode. 597 00:33:01,990 --> 00:33:07,760 Но, ова е специфична за команда програма на линијата во Свифт. 598 00:33:07,760 --> 00:33:11,490 >> Ајде да ги разгледаме во некои од интересните работи тука. 599 00:33:11,490 --> 00:33:15,150 Ајде да видиме, само неколку интересни работи да се спомене и можеби 600 00:33:15,150 --> 00:33:19,930 е дека во мојата функција на печатење на бројот на оценките, 601 00:33:19,930 --> 00:33:26,090 може да се сети дека ја имав таа листа на items-- pset1, pset0 и испит. 602 00:33:26,090 --> 00:33:29,130 Ти всушност може да брзо и лесно да се направи ова 603 00:33:29,130 --> 00:33:34,490 со преземање на gradebook, што е речникот кој има клучеви и вредности. 604 00:33:34,490 --> 00:33:38,730 Најди ги сите на клучот е преку метод на dot клучеви тука, 605 00:33:38,730 --> 00:33:43,180 и потоа користете го овој joinWithSeparator, кои потоа ќе ги преземе сите на клучеви 606 00:33:43,180 --> 00:33:48,590 дека сме го внеле во, или pset1-- Жалам, pset0, pset1 и exam-- 607 00:33:48,590 --> 00:33:53,030 и ги concatenate заедно користење запирка и простор 608 00:33:53,030 --> 00:33:55,400 да се создаде една долга низа. 609 00:33:55,400 --> 00:34:00,190 Оваа операција се приклучат е само феноменално корисно во различни контексти. 610 00:34:00,190 --> 00:34:03,450 И така тоа е овој joinWithSeparator. 611 00:34:03,450 --> 00:34:06,939 >> И ова е едно нешто што е Свифт промени од 1 до 2 Свифт. 612 00:34:06,939 --> 00:34:08,730 Има користи за да биде Пајтон style-- ако сте 613 00:34:08,730 --> 00:34:13,219 запознаени со Python-- питон стил приклучат метод на жици. 614 00:34:13,219 --> 00:34:15,699 Но, тоа не е повеќе случај во Свифт 2. 615 00:34:15,699 --> 00:34:19,400 Сакате да го користите ова ако сакате да concatenate низа на работи 616 00:34:19,400 --> 00:34:23,380 заедно со стринг. 617 00:34:23,380 --> 00:34:27,889 >> Па можеби тогаш во нашата дискусија на просечната пред, 618 00:34:27,889 --> 00:34:32,659 тоа го прави малку повеќе смисла за нас за да го поставите на просечната функција 619 00:34:32,659 --> 00:34:36,610 за да биде опционално двојна а од само експлицитна двојно. 620 00:34:36,610 --> 00:34:39,239 Бидејќи имавме дека непредвидени околности, каде што, 621 00:34:39,239 --> 00:34:41,550 што ако gradebook всушност нема вредности во него? 622 00:34:41,550 --> 00:34:44,280 Што треба просечниот принос? 623 00:34:44,280 --> 00:34:46,350 >> Па можеби во C вас би го сторил нешто 624 00:34:46,350 --> 00:34:50,040 како што се предвидени односно вредноста стража, како 0.0, или можеби негативен број, 625 00:34:50,040 --> 00:34:53,690 или нешто само што претставува фактот дека имаше некои состојба на грешка 626 00:34:53,690 --> 00:34:57,910 а вие можеби не, всушност треба способност да се пресмета дека просекот. 627 00:34:57,910 --> 00:35:05,590 Па убавината на специфицирање на опционални тип ќе биде да го направите тоа. 628 00:35:05,590 --> 00:35:09,540 И јас сум сега велејќи дека сите овие зборови, но ова всушност не користи optionals. 629 00:35:09,540 --> 00:35:12,970 Но, ќе видиме дека во само минути, каде што може да се постави просек 630 00:35:12,970 --> 00:35:17,230 да биде изборен тип на податоци, така што ако тоа всушност се враќа на некои податоци, а потоа 631 00:35:17,230 --> 00:35:18,470 ние ќе ги врати тие податоци. 632 00:35:18,470 --> 00:35:20,570 Во спротивно ние ќе се врати nil, велејќи дека овој 633 00:35:20,570 --> 00:35:22,200 нема никаква поважна пресметка. 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> Ајде да се движи кон нешто друго. 636 00:35:28,570 --> 00:35:35,910 Па од тука, ние сме биле во потрага по сите овие примери во наредбодавната линија. 637 00:35:35,910 --> 00:35:39,470 Но, навистина она што се случува што треба да се занимаваат со е Xcode. 638 00:35:39,470 --> 00:35:43,720 И една од убавите работи во врска Xcode е, а посебно кај Свифт, 639 00:35:43,720 --> 00:35:47,450 е дека имаме овој нешто што се нарекува игралиште. 640 00:35:47,450 --> 00:35:51,470 И игралиште е воопшто не е на iOS стан. 641 00:35:51,470 --> 00:35:54,751 Но тоа ви овозможува да експериментирате со Свифт во многу лесен начин. 642 00:35:54,751 --> 00:35:56,000 Можете да напишете сите на вашиот код. 643 00:35:56,000 --> 00:35:58,140 Тоа е убаво синтакса нагласени овде. 644 00:35:58,140 --> 00:36:01,600 Кога ќе го креирате нова датотека, тој ќе побара вас, ако сакате да се создаде игралиште. 645 00:36:01,600 --> 00:36:08,720 Но убаво нешто за Игралиште е дека на десната страна од вашиот прозорец, 646 00:36:08,720 --> 00:36:12,020 дали тоа всушност ви покаже излезот на вашиот код. 647 00:36:12,020 --> 00:36:16,110 Значи, ако јас се движите надолу, може да се види она што на производство на различни линии на код 648 00:36:16,110 --> 00:36:17,200 всушност, се случува да биде. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> Значи во овој случај, ние ќе треба да менуваш насоките само малку 651 00:36:26,790 --> 00:36:30,960 и да се зборува за нешто што е навистина важни за ова високо ниво начин 652 00:36:30,960 --> 00:36:34,020 дека Свифт работи, и тоа е оваа идеја за затворање. 653 00:36:34,020 --> 00:36:36,960 И веројатно сте го виделе ова малку во JavaScript. 654 00:36:36,960 --> 00:36:40,770 За оние од вас кои се во CS50, куќишта 655 00:36:40,770 --> 00:36:47,240 се многу популарни, многу добар начин да се направи високо ниво работите во современи јазици. 656 00:36:47,240 --> 00:36:50,270 Но, тоа е, исто така, вид на тешко да се заврши вашата глава околу првпат. 657 00:36:50,270 --> 00:36:52,269 Значи, ако сте во потрага на овој прв пат, тоа е во ред. 658 00:36:52,269 --> 00:36:56,740 Само погледнете во изворниот код и да видиме ако може да го дознаам дома. 659 00:36:56,740 --> 00:37:01,050 >> Значи во овој случај, да речеме дека ние сакате да се создаде голем број на експонати 660 00:37:01,050 --> 00:37:04,134 со некои фиксна вредност. 661 00:37:04,134 --> 00:37:05,800 Значи во овој случај можам да се создаде функција. 662 00:37:05,800 --> 00:37:09,270 Одам да го наречеме моќта 2, чија единствена цел во животот 663 00:37:09,270 --> 00:37:15,770 е да се земе некои влез и двокреветни тоа, и да се врати на таа вредност. 664 00:37:15,770 --> 00:37:21,210 Забележите дека јас сум тука прифаќање на еден тип на податоци. 665 00:37:21,210 --> 00:37:23,137 Тоа се случува да биде променлива наречена х. 666 00:37:23,137 --> 00:37:23,970 Тоа е од типот Двојната Круна. 667 00:37:23,970 --> 00:37:26,190 А јас ќе одам да се врати двапати овде. 668 00:37:26,190 --> 00:37:29,100 И јас сум само ќе го направи многу, искрено, доста 669 00:37:29,100 --> 00:37:32,650 наивен начин на удвојување на оваа вредност. 670 00:37:32,650 --> 00:37:35,600 И јас ќе ви покажеме зошто ова корисно е за само една секунда. 671 00:37:35,600 --> 00:37:40,418 >> Забележи дека тука го имаме овој опсег повторно. за нешто во 1, точка 672 00:37:40,418 --> 00:37:44,130 точка точка, 2, што значи дека овој циклус ќе се одвива два пати. 673 00:37:44,130 --> 00:37:46,480 Но, ова претставува бинарна променлива. 674 00:37:46,480 --> 00:37:49,650 Тоа значи дека јас не сум навистина се случува да биде со користење на таа променлива никаде 675 00:37:49,650 --> 00:37:51,070 во внатрешноста на овој циклус. 676 00:37:51,070 --> 00:37:55,380 Јас само сакам оваа линија на код за да се кандидира двапати, 677 00:37:55,380 --> 00:37:58,980 без потреба да се знае вредноста на тој опсег. 678 00:37:58,980 --> 00:38:02,570 >> Значи во овој случај јас се кандидирам резултат пати по два пати, што во суштина 679 00:38:02,570 --> 00:38:06,560 значи дека јас сум квадратура оваа вредност. 680 00:38:06,560 --> 00:38:10,230 И ова се случува со работи како што би се очекувало. 681 00:38:10,230 --> 00:38:16,410 Моќност од 2, донесување на вредноста на 2.0 ни дава моќност од 4. 682 00:38:16,410 --> 00:38:18,810 3.2 дела за 10,24. 683 00:38:18,810 --> 00:38:22,660 >> Сега можеме да се направи слична нешто за моќта на 3. 684 00:38:22,660 --> 00:38:25,330 Но сега само промена на опсегот. 685 00:38:25,330 --> 00:38:28,840 За бинарна променлива во 1 преку 3, помножи 3 пати, 686 00:38:28,840 --> 00:38:29,830 и го прават истото. 687 00:38:29,830 --> 00:38:32,240 >> Така што ова може да се чувствуваат малку измислена. 688 00:38:32,240 --> 00:38:34,270 Но, има важна нешто тука што 689 00:38:34,270 --> 00:38:37,770 е дека гледа во овие две функции, има 690 00:38:37,770 --> 00:38:43,600 само едно нешто што е различно, која е оваа вредност во опсег. 691 00:38:43,600 --> 00:38:46,910 Сè друго во врска со овие две функции, моќта на 3 и моќта на 2, 692 00:38:46,910 --> 00:38:50,440 се, всушност, идентични, бидејќи тие работат на ист начин. 693 00:38:50,440 --> 00:38:53,460 >> Па во овој момент, малку аларм треба да се случува надвор. 694 00:38:53,460 --> 00:38:56,200 Се надевам дека она што си ти што зборуваш, знаете, тоа се чувствува малку 695 00:38:56,200 --> 00:38:59,250 како удвојување на напорите. 696 00:38:59,250 --> 00:39:02,950 Можеби постои начин на кој јас би да биде во можност да капсулирало сето ова 697 00:39:02,950 --> 00:39:06,630 и да се обезбеди функција или создади функција што 698 00:39:06,630 --> 00:39:11,550 го прави токму она што го сакате, без има потреба да ја напишете експлицитно. 699 00:39:11,550 --> 00:39:15,732 И тоа е она што на моќта на затворање ни овозможува да се направи. 700 00:39:15,732 --> 00:39:16,940 Па ајде да ги разгледаме во тоа. 701 00:39:16,940 --> 00:39:18,700 А јас ќе поминете неколку минути за овој, затоа што овој 702 00:39:18,700 --> 00:39:20,310 е прилично важно за Свифт. 703 00:39:20,310 --> 00:39:22,900 Го гледаме ова цело време. 704 00:39:22,900 --> 00:39:24,550 Ние ќе треба да се дефинира функција. 705 00:39:24,550 --> 00:39:26,380 Тоа се случува да се нарече powerOf. 706 00:39:26,380 --> 00:39:29,470 Тоа се случува да се прифати параметар наречен y од типот Инт. 707 00:39:29,470 --> 00:39:32,220 Но да ги разгледаме во видот враќање. 708 00:39:32,220 --> 00:39:38,730 Вид на враќање е, загради, Двоен Двојно стрелка. 709 00:39:38,730 --> 00:39:43,370 Што значи дека на оваа функција, оваа функција powerOf, 710 00:39:43,370 --> 00:39:46,550 се враќа во функција. 711 00:39:46,550 --> 00:39:50,845 Што е прифаќање на двојното и враќајќи се двојно. 712 00:39:50,845 --> 00:39:53,720 Така што би можело да звучи вид на луд, но ајде да дојдете долу малку 713 00:39:53,720 --> 00:39:55,060 и гледам да видам што се случува. 714 00:39:55,060 --> 00:39:57,910 Ние сме во внатрешноста на оваа функција powerOf. 715 00:39:57,910 --> 00:40:00,760 Ние сме создавање на нова функција наречен exponentiator, 716 00:40:00,760 --> 00:40:02,900 но тоа не е важно она што е. 717 00:40:02,900 --> 00:40:06,410 >> Забележете дека ова има влезна вредност на x. 718 00:40:06,410 --> 00:40:09,910 И дека ги презема во Двокреветна и враќајќи се двојно. 719 00:40:09,910 --> 00:40:16,320 И ова е истиот код кои ги видовме погоре, освен тоа што вредноста на 2 720 00:40:16,320 --> 00:40:20,060 или на вредноста на 3, кој горна граница на тоа ниво, 721 00:40:20,060 --> 00:40:23,210 е заменет со оваа вредност на y, која 722 00:40:23,210 --> 00:40:27,230 беше првичната параметар од нашите powerOf функција. 723 00:40:27,230 --> 00:40:31,700 И во овој момент, ние врати exponentiator. 724 00:40:31,700 --> 00:40:33,345 Ние сме да се врати на функцијата. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> Тоа е вид на како мала феноменално. 727 00:40:39,550 --> 00:40:44,360 Но, ајде да се замисли што ќе се случи кога ќе се јавам оваа функција powerOf 728 00:40:44,360 --> 00:40:47,610 и да го положат во неа некои вредност, како и 2. 729 00:40:47,610 --> 00:40:50,020 Што ова значи е дека Јас сега имаат вредност 730 00:40:50,020 --> 00:40:55,130 2 за y, што значи дека оваа вредност y во овој exponentiator функција 731 00:40:55,130 --> 00:40:56,410 ќе биде дека вредноста 2. 732 00:40:56,410 --> 00:41:01,290 Но јас сум враќање на овој exponentiator функција. 733 00:41:01,290 --> 00:41:05,900 >> Па види што Свифт вели јас направивме во овој случај. 734 00:41:05,900 --> 00:41:10,550 нека плоштадот е дефиниција, тоа е функција која прифаќа Двоен 735 00:41:10,550 --> 00:41:12,610 и се враќа двојно. 736 00:41:12,610 --> 00:41:16,590 Имам креирано функција дека плоштадите нешто 737 00:41:16,590 --> 00:41:19,782 со користење на овој механизам, токму тука. 738 00:41:19,782 --> 00:41:22,490 И навистина она што се случува е дека тоа се враќа на оваа функција 739 00:41:22,490 --> 00:41:26,390 exponentiator, но оваа вредност y е завиткано во него. 740 00:41:26,390 --> 00:41:31,080 И така сега секој пат кога ќе го користите овој променлива или оваа постојана наречен 741 00:41:31,080 --> 00:41:35,180 плоштад, тоа што се случува да се однесуваат како функција. 742 00:41:35,180 --> 00:41:39,960 И така јас, тогаш може да се јавите дека променливата како би се јавите на функција, 743 00:41:39,960 --> 00:41:43,830 и да помине во тоа голем број, како во овој случај 3. 744 00:41:43,830 --> 00:41:45,910 И јас тогаш ќе се соочат на оваа вредност. 745 00:41:45,910 --> 00:41:53,340 Па 3 квадрат ќе потоа стане 9, како што може да се види тука. 746 00:41:53,340 --> 00:41:56,530 >> Навистина луди, но ова сега ми овозможува можност 747 00:41:56,530 --> 00:41:59,040 да се создадат други функции powerOf. 748 00:41:59,040 --> 00:42:03,680 Како што може да се каже, во ред, и сега сакам да се создаде нова функција, powerOf (3), 749 00:42:03,680 --> 00:42:06,290 и чување на кои во постојана наречен коцка. 750 00:42:06,290 --> 00:42:10,220 Коцка и сега се случува да се биде посебна функција која ќе потоа 751 00:42:10,220 --> 00:42:14,800 преземат некои вредност како влез и коцка која вредност, како што можеме да видиме во крајна линија 752 00:42:14,800 --> 00:42:16,420 овде. 753 00:42:16,420 --> 00:42:18,590 коцка 2 ќе резултира со 8. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> Се надевам дека прилично уредни работи. 756 00:42:22,680 --> 00:42:25,920 Никогаш не сум видел тоа порано. 757 00:42:25,920 --> 00:42:29,990 Ги охрабрувам да се погледне во куќишта и да го испита овој малку повеќе. 758 00:42:29,990 --> 00:42:33,570 Тоа е навистина моќна работи можеме да видиме многу во вклучите Javascript-и некои други јазици. 759 00:42:33,570 --> 00:42:37,160 Тоа е навистина од витално значење за разбирање на API-јата, како и 760 00:42:37,160 --> 00:42:38,620 дека ние ќе дојдеме до во само една секунда. 761 00:42:38,620 --> 00:42:39,456 Да? 762 00:42:39,456 --> 00:42:43,740 >> ПУБЛИКАТА: Кога ќе го направите powerOf (2), загради, а потоа 763 00:42:43,740 --> 00:42:48,764 друг заграда, друг input-- ти си во основа на местото на плоштадот. 764 00:42:48,764 --> 00:42:50,930 ДАН AMRMENDARIZ: Па гледам во последен линија тука. 765 00:42:50,930 --> 00:42:55,930 Тоа е, всушност, сосема е можно да се врзувањето направите тоа како што е предложено. 766 00:42:55,930 --> 00:43:00,990 Па powerOf (5) значи дека ние ќе треба да имаат exponentiator од 5 до тука. 767 00:43:00,990 --> 00:43:04,160 Па тоа е во суштина ќе биде истото што и 4 на петтиот моќ, 768 00:43:04,160 --> 00:43:07,200 затоа што сме создале exponentiating функционира на петтиот моќ, 769 00:43:07,200 --> 00:43:09,920 и ние сме поминува во кои функционираат на вредноста 4. 770 00:43:09,920 --> 00:43:12,619 И да добиеме таа вредност кои ги очекуваме, 1024. 771 00:43:12,619 --> 00:43:14,785 ПУБЛИКАТА: И тоа не е име, така што тоа го прави полесно 772 00:43:14,785 --> 00:43:16,570 да се читаат, на плоштадот сеедно. 773 00:43:16,570 --> 00:43:17,903 >> ДАН AMRMENDARIZ: Точно, точно. 774 00:43:17,903 --> 00:43:21,120 Така пред да само да го стави во постојана тука, па 775 00:43:21,120 --> 00:43:23,808 што го направи тоа лесно да го користи тоа име. 776 00:43:23,808 --> 00:43:24,308 Да? 777 00:43:24,308 --> 00:43:26,942 >> ПУБЛИКАТА: Во овој контекст powerOf, тоа е дел 778 00:43:26,942 --> 00:43:30,774 на програмскиот јазик за разлика од начинот на кој што го 779 00:43:30,774 --> 00:43:33,952 мислам на powerOf во [Беззвучен]? 780 00:43:33,952 --> 00:43:35,660 ДАН AMRMENDARIZ: Значи во овој случај, powerOf 781 00:43:35,660 --> 00:43:39,280 е само името на функција која јас дефинирани овде. 782 00:43:39,280 --> 00:43:41,801 Па тоа не е вродено на тој јазик, 783 00:43:41,801 --> 00:43:43,550 но наместо тоа, тоа е само функција која има 784 00:43:43,550 --> 00:43:45,628 тоа име, бидејќи јас го даде тоа име. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 Било какви други прашања? 787 00:43:51,920 --> 00:43:52,800 Во ред. 788 00:43:52,800 --> 00:43:54,750 >> Сега ова е одлично. 789 00:43:54,750 --> 00:43:58,170 Но вие нема да ја видите многу функции кои затворање 790 00:43:58,170 --> 00:44:03,440 се вака каде што се дефинираат, внатре од една функција, друга функција. 791 00:44:03,440 --> 00:44:04,320 И можете да го стори тоа. 792 00:44:04,320 --> 00:44:06,430 Но, тоа не е вид на навистина е потребно, нели? 793 00:44:06,430 --> 00:44:09,189 Како и зошто да дефинирам овој функција наречена exponentiator 794 00:44:09,189 --> 00:44:10,480 а веднаш потоа се врати. 795 00:44:10,480 --> 00:44:15,220 Зошто не можам само веднаш се врати на оваа функција? 796 00:44:15,220 --> 00:44:18,890 >> И всушност, ова е токму Идејата зад концептот наречен 797 00:44:18,890 --> 00:44:22,410 Анонимен функции, доколку Анонимен функции не се всушност 798 00:44:22,410 --> 00:44:25,270 да има име, бидејќи тие не треба да имаат еден. 799 00:44:25,270 --> 00:44:28,700 И така во овој случај, во 7B, може да се најде токму тоа. 800 00:44:28,700 --> 00:44:31,470 Тоа е за сите на истиот код, го прави токму истото, 801 00:44:31,470 --> 00:44:35,570 но сега ние сме го смени малку па дека овој powerOf функција веднаш 802 00:44:35,570 --> 00:44:37,750 се враќа во функција. 803 00:44:37,750 --> 00:44:44,150 Се забележи дека по враќањето, тука е отворена малите загради. 804 00:44:44,150 --> 00:44:46,410 Се очекува овој влез Брачен. 805 00:44:46,410 --> 00:44:48,560 Се очекува дека производството Брачен. 806 00:44:48,560 --> 00:44:52,175 А потоа и во клучен збор го дели кодот себе. 807 00:44:52,175 --> 00:44:53,550 Значи ова е анонимен функција. 808 00:44:53,550 --> 00:44:57,030 Тоа всушност не има име, а пред тоа беше наречен exponentiator. 809 00:44:57,030 --> 00:45:00,229 Но, како што видовме, само навистина не се однесуваше на exponentiator 810 00:45:00,229 --> 00:45:01,270 надвор од таа функција. 811 00:45:01,270 --> 00:45:02,470 Па тоа не е важно. 812 00:45:02,470 --> 00:45:06,300 Значи ова е анонимен функција т.н., бидејќи тоа е безимен, 813 00:45:06,300 --> 00:45:09,107 но сè уште се користат во смисла на овој закон. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> Следните неколку од нив сум се надевам дека ќе продолжи 816 00:45:16,079 --> 00:45:17,370 дува вашиот ум малку. 817 00:45:17,370 --> 00:45:20,410 Ние може да се поедностави оваа уште повеќе. 818 00:45:20,410 --> 00:45:24,490 Бидејќи, како што беше лукаво претходно истакнато, 819 00:45:24,490 --> 00:45:29,100 можеби ние всушност знаеме, од страна на inferring од овој законик, што 820 00:45:29,100 --> 00:45:31,750 на излез од овој закон е и ќе биде. 821 00:45:31,750 --> 00:45:38,180 И всушност, во овој анонимен функција, всушност можеме да заклучиме типови на податоци. 822 00:45:38,180 --> 00:45:41,650 >> Така што во овој еден, ние веќе не треба експлицитно да се дефинира 823 00:45:41,650 --> 00:45:44,850 видот на податоците и тоа е се влез и излез од оваа функција 824 00:45:44,850 --> 00:45:45,890 за неколку причини. 825 00:45:45,890 --> 00:45:51,390 Една од нив е дека ние сме се дефинирани, до на Прототипот на функцијата за приближување, 826 00:45:51,390 --> 00:45:55,770 кој тип на податоци овој анонимен функција треба влез и излез. 827 00:45:55,770 --> 00:45:57,900 А од друга страна, ние може да заклучиме од кодот 828 00:45:57,900 --> 00:46:01,930 овде дека сме прифаќање внесување дека е од типот Двоен 829 00:46:01,930 --> 00:46:03,670 и враќајќи се двојно. 830 00:46:03,670 --> 00:46:07,890 >> Забележите дека овде не сме експлицитно дефинирани имињата на аргументи 831 00:46:07,890 --> 00:46:11,220 дека оваа функција е прифаќање. 832 00:46:11,220 --> 00:46:16,180 И така го гледаме ние може да се однесува оние параметри користејќи $ 0, $ 1, 833 00:46:16,180 --> 00:46:20,140 така натаму и така натаму, во зависност од бројот на кој параметар се користи 834 00:46:20,140 --> 00:46:20,850 во оваа функција. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> Ова е нешто што ви се случува да се види многу е ова отворен малите загради 837 00:46:29,740 --> 00:46:32,797 дефиниција проследено со $ 0, а потоа некои од работењето, 838 00:46:32,797 --> 00:46:34,130 а потоа затворен малите загради. 839 00:46:34,130 --> 00:46:38,630 Кој е анонимен функција која врши оваа операција. 840 00:46:38,630 --> 00:46:42,940 Таа има овој параметар, каде што тоа е тип се заклучува. 841 00:46:42,940 --> 00:46:44,860 Дека првиот параметар е $ 0. 842 00:46:44,860 --> 00:46:49,010 А некои операција е случува на таа $ 0. 843 00:46:49,010 --> 00:46:52,100 >> ПУБЛИКАТА: Значи знакот за долар значи параметар во основа, 844 00:46:52,100 --> 00:46:53,429 и 0 значи првиот? 845 00:46:53,429 --> 00:46:54,720 ДАН ARMENDARIZ: Тоа е точно. 846 00:46:54,720 --> 00:46:59,100 Така знакот за долар во основа значи параметар, и 0 означува првата. 847 00:46:59,100 --> 00:47:02,760 Но таа работи конкретно во овој случај каде што не сум по име 848 00:47:02,760 --> 00:47:07,940 аргументите во мојата анонимни функција. 849 00:47:07,940 --> 00:47:11,119 >> ПУБЛИКАТА: Дали Perl или нешто има овој знак за долар, долар 0 таму? 850 00:47:11,119 --> 00:47:12,702 ДАН ARMENDARIZ: Дали кои, Жал ми е? 851 00:47:12,702 --> 00:47:15,360 ПУБЛИКАТА: Дали Perl ова доларот 0, доларот 1-- 852 00:47:15,360 --> 00:47:17,318 ДАН ARMENDARIZ: Не сум премногу запознаен со Perl, 853 00:47:17,318 --> 00:47:21,340 но она што ја дефинира PHP променливи врз основа на доларот знаци. 854 00:47:21,340 --> 00:47:26,120 А може да има некои јазици кои имаат особини се допаѓа ова. 855 00:47:26,120 --> 00:47:28,240 Всушност, Свифт позајмува број на функции се допаѓа ова 856 00:47:28,240 --> 00:47:29,489 од голем број на други јазици. 857 00:47:29,489 --> 00:47:32,380 Гледаме навестувања на Пајтон во неа. 858 00:47:32,380 --> 00:47:35,800 Оваа дефиниција на тип чини дека доаѓа од OCaml. 859 00:47:35,800 --> 00:47:38,932 А ние имаме само еден куп на работи од многу различни јазици. 860 00:47:38,932 --> 00:47:40,640 Тоа е една од убавите работи во врска Свифт 861 00:47:40,640 --> 00:47:43,390 е дека е потребно многу од најдобрите идеи од еден куп на јазиците 862 00:47:43,390 --> 00:47:47,229 и на сите нив заедно shoehorns во една супер јазик. 863 00:47:47,229 --> 00:47:49,520 Всушност, ако ми дозволите да продолжи дува вашиот ум, 864 00:47:49,520 --> 00:47:51,000 па ние сме биле прави сето ова. 865 00:47:51,000 --> 00:47:56,690 Можеби и ние може да се поедностави овој малку малку по свесен дека, се разбира, 866 00:47:56,690 --> 00:48:02,120 Свифт има exponentiating функција изградена во. 867 00:48:02,120 --> 00:48:04,660 Ако увезувам Дарвин, кој е само библиотека 868 00:48:04,660 --> 00:48:09,680 се одликува оваа функција наречена Pow, сега Јас може да се поедностави мојата моќ на функцијата 869 00:48:09,680 --> 00:48:11,830 да биде следново. 870 00:48:11,830 --> 00:48:15,860 Тоа се случува да се врати овој анонимен функција. 871 00:48:15,860 --> 00:48:17,950 >> Но погледнете како едноставно тоа е сега. 872 00:48:17,950 --> 00:48:22,780 Ова е анонимен функција што е прифаќање на некои од типот на податоци, 873 00:48:22,780 --> 00:48:26,600 и тоа се случува да биде една аргумент конкретно, 874 00:48:26,600 --> 00:48:29,320 референцирани од $ 0, кој е од типот Двојната Круна. 875 00:48:29,320 --> 00:48:32,680 Тоа се случува да се врати еден вид Брачен. 876 00:48:32,680 --> 00:48:35,760 Но, изјавата на враќање сега е имплицитно. 877 00:48:35,760 --> 00:48:39,990 >> И тоа е точно дека овој стил е многу, многу распространети кај Свифт, 878 00:48:39,990 --> 00:48:40,790 сите над местото. 879 00:48:40,790 --> 00:48:43,190 Ние ќе треба да се види ова цело време во Свифт. 880 00:48:43,190 --> 00:48:46,150 Па јас сум покажува сето ова да се вие, бидејќи на оваа синтакса. 881 00:48:46,150 --> 00:48:49,070 Ова е многу честа да се види, што тоа значи 882 00:48:49,070 --> 00:48:51,420 е анонимен функција кој врши 883 00:48:51,420 --> 00:48:54,640 некои операција на овие аргументи. 884 00:48:54,640 --> 00:48:56,940 И постои имплицитна враќање. 885 00:48:56,940 --> 00:49:01,850 Па тоа е апсолутно истото за нас да се каже ова, токму тука. 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> Бидејќи овој кадрава заградата е во функција, 888 00:49:08,150 --> 00:49:10,480 ние сме ја извршите оваа операција на првиот аргумент. 889 00:49:10,480 --> 00:49:12,170 Ние ќе треба да се врати тоа. 890 00:49:12,170 --> 00:49:14,815 Но, ова е надворешниот враќање враќајќи се дека целата функција, 891 00:49:14,815 --> 00:49:19,855 дека целата анонимни функција дека ние сме само замислен. 892 00:49:19,855 --> 00:49:21,689 Било какви други прашања? 893 00:49:21,689 --> 00:49:23,980 Добро, јас не знам дали вие момци се подготвени за тоа, 894 00:49:23,980 --> 00:49:27,455 но можеме да одиме уште полуда со Свифт. 895 00:49:27,455 --> 00:49:28,560 Дали сте подготвени? 896 00:49:28,560 --> 00:49:29,930 Добро, ова е одлично. 897 00:49:29,930 --> 00:49:35,310 >> Сега ние, всушност, имаат способност да, кај Свифт, бидејќи за тоа како модуларен 898 00:49:35,310 --> 00:49:39,650 и како што е врз основа на протоколот, да се дефинираат сопствените freaking оператори. 899 00:49:39,650 --> 00:49:44,060 Како во овој случај, ние немавме оператор за exponentiation-- добро, 900 00:49:44,060 --> 00:49:47,990 за вршење на овластувањата на нешто. 901 00:49:47,990 --> 00:49:53,632 Но, можам да, кај Свифт, дефинирање на нов оператор кој го прави токму тоа. 902 00:49:53,632 --> 00:49:55,590 Значи во овој случај постои еден куп на синтаксата тука. 903 00:49:55,590 --> 00:49:59,980 А јас ќе ви овозможи да се погледне во него, дома кога ќе се погледне на овој. 904 00:49:59,980 --> 00:50:06,890 Но, ние се дефинира оваа инфикс оператор, **, која што тогаш ќе ни овозможи, 905 00:50:06,890 --> 00:50:09,840 со дефинирање на она што функција ** всушност 906 00:50:09,840 --> 00:50:15,010 не, да се прифати на левата рака, страна и десната страна, 907 00:50:15,010 --> 00:50:21,190 а потоа да се вратат на експонент на таа левата страна на десната страна. 908 00:50:21,190 --> 00:50:24,850 >> И така сега одеднаш јас создадоа нова броителот. 909 00:50:24,850 --> 00:50:29,490 Па 2 ** 3 значи 2 до третата власт. 910 00:50:29,490 --> 00:50:34,420 [Феноменално SOUND] Оваа страна себе треба да се направи да биде како, 911 00:50:34,420 --> 00:50:37,960 Добро, завртка В. Одам Свифт на целиот пат. 912 00:50:37,960 --> 00:50:38,740 Ова е супер. 913 00:50:38,740 --> 00:50:40,140 Ова е прилично фантастично. 914 00:50:40,140 --> 00:50:42,240 >> Иако ова е одличен пример. 915 00:50:42,240 --> 00:50:45,570 Но никогаш не сум еднаш надвор на овој пример, всушност, 916 00:50:45,570 --> 00:50:46,800 дефинирани моето оператор. 917 00:50:46,800 --> 00:50:49,710 Но, сепак, тоа покажува Голем дел од моќта на Свифт 918 00:50:49,710 --> 00:50:54,050 и зошто ова е всушност навистина многу кул. 919 00:50:54,050 --> 00:50:55,832 Во ред, да? 920 00:50:55,832 --> 00:50:57,790 ПУБЛИКАТА: Ако сте дефинирање на вашиот сопствен оператор, 921 00:50:57,790 --> 00:51:02,940 како знаеш, да не случајно се обиде да креира оператор кој е 922 00:51:02,940 --> 00:51:06,040 некаде во C, како скриени некаде во Свифт, 923 00:51:06,040 --> 00:51:12,210 како една мрачна оној кој ви се може да не сте виделе порано. 924 00:51:12,210 --> 00:51:15,050 >> ДАН ARMENDARIZ: Значи, ако сте се обидува да се дефинира свој оператори, 925 00:51:15,050 --> 00:51:20,970 постои ризик на дефинирање еден преку постоечката оператор. 926 00:51:20,970 --> 00:51:24,870 Што оди во нивото на детали кои Јас не мислам дека имаме време да се премине. 927 00:51:24,870 --> 00:51:27,620 Но, тоа е ризик. 928 00:51:27,620 --> 00:51:31,320 А тоа е всушност многу причина зошто Јас не го користат знакот за карет, која 929 00:51:31,320 --> 00:51:36,210 кога сме пишување од власта, ние обично користете 4 мали карет 5 или нешто 930 00:51:36,210 --> 00:51:40,560 како што, само кога сме Gchatting пријатели или whatever. 931 00:51:40,560 --> 00:51:43,660 Но, во тој случај, кои, всушност, ќе предизвика судир. 932 00:51:43,660 --> 00:51:46,450 И така јас тоа само затоа што се избегнува Јас се случи да се знае во овој случај 933 00:51:46,450 --> 00:51:50,430 кои што би предизвикало тој судир. 934 00:51:50,430 --> 00:51:52,270 >> Во ред. 935 00:51:52,270 --> 00:51:55,080 Сега за жал, за последните седум минути, 936 00:51:55,080 --> 00:51:57,410 Морам да продолжам дува вашите мисли малку. 937 00:51:57,410 --> 00:52:00,230 Па, дозволете ми да ви покажеме некои други работи, како и. 938 00:52:00,230 --> 00:52:03,710 >> Ние сме ви покажале оваа идеја на имаат овие анонимни функции, 939 00:52:03,710 --> 00:52:07,040 овие куќишта кои ќе ви овозможи да се вид на функции помине околу. 940 00:52:07,040 --> 00:52:08,100 Можете да ги врати. 941 00:52:08,100 --> 00:52:09,490 Можете да манипулира со нив. 942 00:52:09,490 --> 00:52:11,790 Можете да го направите сите видови на луди нешта. 943 00:52:11,790 --> 00:52:14,850 >> Но, една друга работа што се случува да биде корисна 944 00:52:14,850 --> 00:52:19,740 е способноста да се, што е спротивно да се враќаат тие функции 945 00:52:19,740 --> 00:52:25,146 во функција, да се пренесат на функција како параметар за друга функција. 946 00:52:25,146 --> 00:52:30,430 Може да се размислува и зошто на земјата јас би сакал да се направи такво нешто? 947 00:52:30,430 --> 00:52:33,660 >> Па, ајде да кажам дека сакам да се земе овој оператор дека јас 948 00:52:33,660 --> 00:52:40,260 работеле толку тешко да се создаде и да се примени тоа до еден куп на различни броеви 949 00:52:40,260 --> 00:52:41,770 во низа. 950 00:52:41,770 --> 00:52:46,700 Значи во овој случај имам низа integers-- 1, 4, 7, 2, 5, 10, 56. 951 00:52:46,700 --> 00:52:48,080 И сакам да ги удвои. 952 00:52:48,080 --> 00:52:50,430 На начинот на кој ние би обично го направите тоа е да се пишува 953 00:52:50,430 --> 00:52:53,440 едноставен за јамка дека iterates над сите нив 954 00:52:53,440 --> 00:52:57,140 и изведување на некои вид на квадратни операција над нив, 955 00:52:57,140 --> 00:53:02,700 внесување на овие нови вредности во нов променлива, или подобро кажано, нова низа тука. 956 00:53:02,700 --> 00:53:07,370 А вредноста на производството на Резултатот е тогаш сите оние низи, 957 00:53:07,370 --> 00:53:10,200 односно сите оние елементи сега квадрат. 958 00:53:10,200 --> 00:53:12,680 >> И ние би можеле да го направат истото нешто за тоа местење Рубикова коцка, 959 00:53:12,680 --> 00:53:15,360 но малку аларм Треба да се оди надвор 960 00:53:15,360 --> 00:53:17,360 велејќи дека можеби има на некој начин дека ќе 961 00:53:17,360 --> 00:53:19,860 да биде во можност да се поедностави оваа малку. 962 00:53:19,860 --> 00:53:21,130 И всушност постои. 963 00:53:21,130 --> 00:53:25,320 Што ако ние би можеле да се создаде функција која ни овозможува 964 00:53:25,320 --> 00:53:28,350 да се прифати, како предатор, на функција? 965 00:53:28,350 --> 00:53:30,350 Значи во овој случај, може да донесе изгледа на овие аргументи. 966 00:53:30,350 --> 00:53:33,220 Ние ќе треба да се прифати листа на двојки. 967 00:53:33,220 --> 00:53:35,030 И тогаш ние ќе да прифати функција 968 00:53:35,030 --> 00:53:40,990 во променлива наречена f кој се случува да се земе и да се врати двојно двојно. 969 00:53:40,990 --> 00:53:43,320 И целиот излез на целата оваа функција 970 00:53:43,320 --> 00:53:47,310 наречен Mapper ќе врати низа наречен двојно. 971 00:53:47,310 --> 00:53:52,380 >> Што е ова, тогаш ќе ми дозволите да направите е да iterate во текот на таа листа 972 00:53:52,380 --> 00:53:56,350 и го прават истото, но сега применуваат таа функција на секоја 973 00:53:56,350 --> 00:53:58,970 на индивидуалните вредности во таа листа. 974 00:53:58,970 --> 00:54:00,750 Па јас навистина не знам што f е. 975 00:54:00,750 --> 00:54:02,010 Тоа не е важно за мене. 976 00:54:02,010 --> 00:54:06,530 Но толку колку што е потребно во Двокреветна, врши некоја работа на неа, 977 00:54:06,530 --> 00:54:08,640 а потоа се враќа Двојно, јас тогаш ќе биде 978 00:54:08,640 --> 00:54:13,415 можност да на сајтот на таа функција во склопот секој елемент во листата. 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> И овој вид на програмирање наречен повисоки функции, со цел, 981 00:54:20,930 --> 00:54:24,440 каде што ние сме поминува функции околу како параметри 982 00:54:24,440 --> 00:54:26,430 и вршење на работите со функции. 983 00:54:26,430 --> 00:54:29,640 Тоа е вид на како преземање на сите овие идеи дека сме научиле во CS50 984 00:54:29,640 --> 00:54:31,390 а земајќи вид за да на следното ниво. 985 00:54:31,390 --> 00:54:34,140 И тоа е сè CS51 стил работи. 986 00:54:34,140 --> 00:54:37,080 И така ќе оди во длабочина повеќе во класи како што. 987 00:54:37,080 --> 00:54:38,930 >> Но, ова е, исто така, важно, бидејќи ние тука 988 00:54:38,930 --> 00:54:42,010 види голем број на функции кои се користат во Свифт 989 00:54:42,010 --> 00:54:45,590 кои во суштина го прави тоа овој, каде што имаме 990 00:54:45,590 --> 00:54:48,300 некои броеви, некои низа на броеви. 991 00:54:48,300 --> 00:54:50,850 Ние ќе треба да мине низа во нашата Mapper. 992 00:54:50,850 --> 00:54:55,770 И ние исто така ќе треба да поминат некои функција, која 993 00:54:55,770 --> 00:54:57,950 ние сме веќе дефиниран овде. 994 00:54:57,950 --> 00:54:59,690 Тоа се случува да биде квадратни. 995 00:54:59,690 --> 00:55:02,220 И ние си оди за да потоа плоштад сите оние броеви 996 00:55:02,220 --> 00:55:04,710 и чување на кои во овој резултат тука. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> Па овој случај ние сме дефинирани нашите сопствена функција наречена Mapper. 999 00:55:11,000 --> 00:55:15,370 Но ова точната работа е, всушност, се вградени во Свифт. 1000 00:55:15,370 --> 00:55:18,960 Постојат голем број на функции наречен мапата. 1001 00:55:18,960 --> 00:55:21,520 Има функција на сајтот, има намалување на функција, 1002 00:55:21,520 --> 00:55:25,630 и има функција на филтерот, со кои суштински се применуваат функции 1003 00:55:25,630 --> 00:55:30,782 на секој елемент во една листа за да ги измените, на некој начин. 1004 00:55:30,782 --> 00:55:34,510 >> ПУБЛИКАТА: Значи, бидејќи ви се трансформира податоците во друг формат 1005 00:55:34,510 --> 00:55:36,134 преку function-- 1006 00:55:36,134 --> 00:55:37,050 ДАН ARMENDARIZ: Добро. 1007 00:55:37,050 --> 00:55:39,420 Да, па на функцијата дека ние сме прифаќање 1008 00:55:39,420 --> 00:55:41,790 е трансформирање на податоците на некој начин. 1009 00:55:41,790 --> 00:55:44,700 Во овој случај, ние беа или тоа квадратура, или сме биле тоа местење Рубикова коцка, 1010 00:55:44,700 --> 00:55:50,060 или навистина, би можеле да се изврши Нема работа за неа на сите. 1011 00:55:50,060 --> 00:55:54,150 >> Но, дозволете ми да ви покаже колку е тогаш ова ќе изгледа во пракса. 1012 00:55:54,150 --> 00:55:56,681 И повторно, јас сум водење на малку време. па не сум 1013 00:55:56,681 --> 00:55:59,430 ќе биде во можност да ги прегледа сите на изворниот код овде во детали. 1014 00:55:59,430 --> 00:56:00,721 Но, јас ве охрабруваме да го направите тоа. 1015 00:56:00,721 --> 00:56:03,850 Ние ќе го објавите во најкраток можно по овој разговор. 1016 00:56:03,850 --> 00:56:07,610 >> Но, ако се погледне на овој, претпоставиме дека имаме листа на броеви, 1017 00:56:07,610 --> 00:56:10,260 низа на броеви во оваа променлива наречена броеви. 1018 00:56:10,260 --> 00:56:16,670 Тогаш сакаме да се изврши оваа операција филтер на тие бројки. 1019 00:56:16,670 --> 00:56:19,730 Па филтер е повисока функција, така што 1020 00:56:19,730 --> 00:56:24,660 прифаќа низа и исто така функција. 1021 00:56:24,660 --> 00:56:28,760 И на секој елемент во таа низа, ја врши таа функција. 1022 00:56:28,760 --> 00:56:31,990 >> Ако таа функција се враќа вистина, тоа држи таа ставка. 1023 00:56:31,990 --> 00:56:36,100 Ако таа функција се враќа false, го фрла таа ставка. 1024 00:56:36,100 --> 00:56:40,480 А потоа го враќа листа тогаш тоа е составена сите 1025 00:56:40,480 --> 00:56:44,360 на оние предмети кои се филтрира. 1026 00:56:44,360 --> 00:56:47,150 >> Па во друга зборови, ова е истата идеја, gradebook. 1027 00:56:47,150 --> 00:56:50,800 Ние би можеле да имаат различни оценки во оваа вредност повикуваните броеви. 1028 00:56:50,800 --> 00:56:55,590 Би можело да биде 100, и 70, и 40, па натаму и така натаму. 1029 00:56:55,590 --> 00:56:59,110 Она што го прави овој филтер е најава дека ова е тоа што синтаксички шеќер 1030 00:56:59,110 --> 00:57:01,310 за анонимен функција. 1031 00:57:01,310 --> 00:57:05,980 Ова е анонимен функција велејќи дека параметарот дека сум прифаќање 1032 00:57:05,980 --> 00:57:09,690 ќе биде, ако тоа е поголем од 70, 1033 00:57:09,690 --> 00:57:15,837 тогаш ова ќе се врати вистина, што значи дека таа ставка ќе се чуваат во овој филтер. 1034 00:57:15,837 --> 00:57:17,920 Значи, да се биде малку поконкретни за ова. 1035 00:57:17,920 --> 00:57:25,760 Ако имам оваа низа на броеви и се состои од 100, 70, и 40, 1036 00:57:25,760 --> 00:57:29,730 Јас изведувам овој филтер операција на секој од нив. 1037 00:57:29,730 --> 00:57:33,270 Така што првиот е оваа вредност од 100. 1038 00:57:33,270 --> 00:57:36,770 100 е поголема или еднаква 70 Вистина е, што 1039 00:57:36,770 --> 00:57:41,950 значи дека 100 се чува во оваа нова копија од оваа низа. 1040 00:57:41,950 --> 00:57:44,290 70, исто така, поминува. 1041 00:57:44,290 --> 00:57:46,020 40 но не е така. 1042 00:57:46,020 --> 00:57:54,290 Значи она што се враќа во passingCount е низа на елементи 100 и 70-- 1043 00:57:54,290 --> 00:57:57,410 100, запирка, 70. 1044 00:57:57,410 --> 00:57:59,870 Тие се единствените две предмети кои се чуваат. 1045 00:57:59,870 --> 00:58:03,740 И така причина јас брзо отиде преку многу од овие вид на висока цел 1046 00:58:03,740 --> 00:58:08,680 работите се бидејќи ова е дека заедничкиот Она што ќе го видите во Swift прилично 1047 00:58:08,680 --> 00:58:16,810 често, се врши некоја работа со користење на овој анонимен функција синтакса. 1048 00:58:16,810 --> 00:58:18,450 >> Има некои кул работи. 1049 00:58:18,450 --> 00:58:24,730 Прекинувачи се навистина моќна кај Свифт, Мислам само како луд, луд моќна. 1050 00:58:24,730 --> 00:58:28,250 Можете да го користите Switch, и вие всушност може да ги применуваат 1051 00:58:28,250 --> 00:58:33,160 да се движи, што е вид на луд, и направи фенси работи како што. 1052 00:58:33,160 --> 00:58:37,540 >> Но, во последните неколку минути, Јас да прескокнете многу далеку 1053 00:58:37,540 --> 00:58:46,940 и ќе покаже конкретен пример за тоа како може да се создаде во iOS стан користење Свифт. 1054 00:58:46,940 --> 00:58:49,040 Така, кога правите ова, ќе треба да ги преземат 1055 00:58:49,040 --> 00:58:51,990 а изгледа at-- на Apple документација, тие 1056 00:58:51,990 --> 00:58:56,084 имате голем број на навистина добри вежби за создавање на вашиот прв апликација. 1057 00:58:56,084 --> 00:58:58,250 И јас ве охрабруваме да се направи дека, бидејќи тие ќе се земе 1058 00:58:58,250 --> 00:59:04,110 низ сите чекори за тоа што точно да се кликнете на за да се создаде некоја апликација iOS. 1059 00:59:04,110 --> 00:59:07,290 >> Но, тука имаме оваа iOS стан. 1060 00:59:07,290 --> 00:59:10,960 И тоа е прилично едноставна стан навистина. 1061 00:59:10,960 --> 00:59:13,840 Ако јас се кандидира тоа, дозволете ми покаже вие како изгледа. 1062 00:59:13,840 --> 00:59:19,480 Сето тоа во суштина не е повлекува од интернет датотека JSON 1063 00:59:19,480 --> 00:59:22,300 дека сум се чуваат на серверот. 1064 00:59:22,300 --> 00:59:26,310 И дека JSON датотека дефинира слики кои дозволуваат 1065 00:59:26,310 --> 00:59:31,680 мене да потоа циклус преку, на мојот стан, слики од мојата веб сервер. 1066 00:59:31,680 --> 00:59:32,880 >> Па имам тука getNextImage. 1067 00:59:32,880 --> 00:59:37,100 Се вчитува слика од интернет, а потоа тоа го прикажува на екранот. 1068 00:59:37,100 --> 00:59:38,200 >> Така, тоа е прилично едноставна. 1069 00:59:38,200 --> 00:59:41,550 Но, целта е да се покаже вие како ние може да се комбинираат работи 1070 00:59:41,550 --> 00:59:47,820 од вториот неколку недели од CS50 во вистински iOS апликација. 1071 00:59:47,820 --> 00:59:53,140 Со други зборови, можеби една од работи што ќе сакате да направите, 1072 00:59:53,140 --> 00:59:56,340 е да се имаат некоја апликација iOS кои може да се повлече податоци од интернет 1073 00:59:56,340 --> 00:59:59,070 и да го покаже на корисник некои информации. 1074 00:59:59,070 --> 01:00:03,130 Кој е целосно точката на овој изворен код овде. 1075 01:00:03,130 --> 01:00:07,890 >> Значи, има многу да се каже за како да се направи вистински развој на iOS. 1076 01:00:07,890 --> 01:00:12,860 Постои многу луди синтакса дека сме сосема уште не се гледа 1077 01:00:12,860 --> 01:00:15,580 како класа, што, всушност, е класа. 1078 01:00:15,580 --> 01:00:19,470 Ние во голема мера може да се игнорира дека сега засега. 1079 01:00:19,470 --> 01:00:23,250 >> Не се забележи дека ние сме содржани во рамките на оваа различни нешта 1080 01:00:23,250 --> 01:00:27,720 што веќе видовме како функциите кои имаат специфични имиња. 1081 01:00:27,720 --> 01:00:32,650 И кога ќе се даде на оние функционира точни имиња 1082 01:00:32,650 --> 01:00:36,530 кои се очекува од страна на iOS, всушност тоа се чувствува малку магично. 1083 01:00:36,530 --> 01:00:40,300 Но, кога ќе се создаде iOS апликација, постојат 1084 01:00:40,300 --> 01:00:47,590 се специфични имиња на функции кои се нарекуваат со самиот телефон 1085 01:00:47,590 --> 01:00:52,440 како апликација се вчитува да се обиде да се создаде процес кој, всушност, 1086 01:00:52,440 --> 01:00:54,787 тече вашата апликација. 1087 01:00:54,787 --> 01:00:58,120 Значи, повторно, има многу работи кои јас треба да се замачкаат тука со цел за нас 1088 01:00:58,120 --> 01:01:00,570 да се зборува за ова конкретно. 1089 01:01:00,570 --> 01:01:06,050 Но, јас ве охрабруваме да ги погледне во можеби Од друга семинар iOS, но исто така и некои 1090 01:01:06,050 --> 01:01:09,290 на вежби онлајн, кој го направи многу подобра работа на опишување 1091 01:01:09,290 --> 01:01:11,030 на конкретни информации. 1092 01:01:11,030 --> 01:01:15,760 >> Но, можеме да видиме неколку работи кои се интересни од код овде. 1093 01:01:15,760 --> 01:01:17,950 Известување дека имаме ако извештаи. 1094 01:01:17,950 --> 01:01:20,400 Патем, една важна ако нешто во врска со изјавите 1095 01:01:20,400 --> 01:01:24,860 е дека загради околу Булова израз се опционални. 1096 01:01:24,860 --> 01:01:30,800 Но големите загради не се обврзувачки, без разлика колку малку или многу линии на код 1097 01:01:30,800 --> 01:01:32,360 имаш во ако соопштението. 1098 01:01:32,360 --> 01:01:38,670 Вие не може да има ако извештаи без големите загради во Свифт. 1099 01:01:38,670 --> 01:01:41,000 >> А тоа е, добро, нешто глупо. 1100 01:01:41,000 --> 01:01:43,910 Но, има историски причини за тоа. 1101 01:01:43,910 --> 01:01:46,180 Тоа би требало да ве спаси од себе. 1102 01:01:46,180 --> 01:01:49,899 Вака на пример, не можете да елиминирање на големите загради околу тоа 1103 01:01:49,899 --> 01:01:50,440 ако соопштението. 1104 01:01:50,440 --> 01:01:52,730 Тие се всушност е потребно. 1105 01:01:52,730 --> 01:01:54,480 Па јас ве охрабруваме да ги да ги разгледаме во тоа. 1106 01:01:54,480 --> 01:01:56,230 Но, има уште еден конструираат дека сакам 1107 01:01:56,230 --> 01:02:02,640 за да ви покаже дека околу Свифт е ново Свифт 2.0 споредба 1108 01:02:02,640 --> 01:02:08,460 со постарите верзии на Свифт, кој е следниот. 1109 01:02:08,460 --> 01:02:11,620 Да видиме од каде го ставив тука? 1110 01:02:11,620 --> 01:02:16,630 >> Значи во оваа функција наречена fetchJSON, оваа функција 1111 01:02:16,630 --> 01:02:23,450 е одговорен за влечење која JSON датотека од URL-то, што само така се случува 1112 01:02:23,450 --> 01:02:26,310 што треба да се работи на мојот CS50 ИРО. 1113 01:02:26,310 --> 01:02:28,580 Јас само што почнав Apache-то, ставам JSON датотека таму, 1114 01:02:28,580 --> 01:02:32,110 и јас сум во можност потоа да се повлече дека податоци од интернет со користење на 1115 01:02:32,110 --> 01:02:36,430 оваа функција и тоа рачно, кои се предвидени од страна на телефонот. 1116 01:02:36,430 --> 01:02:40,490 Тоа е предвидено од страна на библиотека со која ќе се користи кога 1117 01:02:40,490 --> 01:02:43,140 правиш некои развој iOS стан. 1118 01:02:43,140 --> 01:02:49,690 >> Забележите дека овде има оваа необична синтаксичката конструкција наречена стража. 1119 01:02:49,690 --> 01:02:53,530 И навистина сето тоа е во Свифт е начин на проверка 1120 01:02:53,530 --> 01:02:56,870 дека некои работи треба се исполнети пред да 1121 01:02:56,870 --> 01:03:00,000 продолжи со остатокот од функцијата. 1122 01:03:00,000 --> 01:03:04,260 Па јас би можеле да имаат, со користење на овој изборен тип, 1123 01:03:04,260 --> 01:03:10,530 Јас можев да се најде од страна на URL извршува оваа функција NSURL 1124 01:03:10,530 --> 01:03:16,640 и зачувување на таа во URL-то постојана, а потоа проверка 1125 01:03:16,640 --> 01:03:20,820 да се види дали рачно беше нула, затоа што требаше да се вратат изборен тип. 1126 01:03:20,820 --> 01:03:25,660 И ако тоа е нула, тогаш јас би печатење на грешка, а потоа се врати. 1127 01:03:25,660 --> 01:03:29,970 >> Но, наместо тоа, што им овозможува на стража ни направи е тоа нешто многу, 1128 01:03:29,970 --> 01:03:34,550 но се осигура дека тоа е всушност случај оваа адреса 1129 01:03:34,550 --> 01:03:38,020 е правилно поставен од NSURL. 1130 01:03:38,020 --> 01:03:41,810 И ако е така, тогаш тоа прескокнува ова, и тоа 1131 01:03:41,810 --> 01:03:46,110 ќе ви овозможи да се продолжи со URL биле правилно дефиниран. 1132 01:03:46,110 --> 01:03:48,830 Но, ако тоа е случај и дека URL-то не е правилно дефиниран, 1133 01:03:48,830 --> 01:03:52,550 ако оваа функција враќа грешка или некои други неочекувани работа 1134 01:03:52,550 --> 01:03:58,030 всушност се случува, ова стража конструкт ни овозможува да потоа и излез кој грешка 1135 01:03:58,030 --> 01:04:00,390 и да се врати веднаш. 1136 01:04:00,390 --> 01:04:00,890 Да? 1137 01:04:00,890 --> 01:04:04,839 >> ПУБЛИКАТА: Значи тоа е вид на како ако тогаш на друго место? 1138 01:04:04,839 --> 01:04:07,130 ДАН ARMENDARIZ: Тоа е вид на како и ако потоа друг, да, 1139 01:04:07,130 --> 01:04:14,200 освен дека овој URL е тогаш дефинирани за сè под ова. 1140 01:04:14,200 --> 01:04:20,420 Ако тој помине оваа стража, тогаш тоа всушност, ќе биде исполнет со податоци 1141 01:04:20,420 --> 01:04:29,500 и употребливи во останатите изворниот код во вашата функција. 1142 01:04:29,500 --> 01:04:33,790 Па се сомневам дека си оди за да почнете да ја видите оваа стража, како и. 1143 01:04:33,790 --> 01:04:36,670 И да бидат свесни за тоа. 1144 01:04:36,670 --> 01:04:46,270 >> Па само гледајќи во неколку други работи, ова е она што токму овде, 1145 01:04:46,270 --> 01:04:53,377 Што мислиш, само врз основа на она што ние се зборува за и пред тоа? 1146 01:04:53,377 --> 01:04:56,650 >> ПУБЛИКАТА: Мислам дека ќе се кандидира во листата? 1147 01:04:56,650 --> 01:04:59,100 >> ДАН ARMENDARIZ: Значи тоа е блиску. 1148 01:04:59,100 --> 01:05:02,360 Ова е функција која се дефинираат. 1149 01:05:02,360 --> 01:05:07,240 И ние сме внесување на таа функција како аргумент за оваа функција овде. 1150 01:05:07,240 --> 01:05:09,120 >> ПУБЛИКАТА: [Беззвучен] ако не нула. 1151 01:05:09,120 --> 01:05:11,470 Па не е во листата, нели? 1152 01:05:11,470 --> 01:05:15,450 >> ДАН ARMENDARIZ: Ако грешката не е нула, така што is-- па морам да се движите. 1153 01:05:15,450 --> 01:05:18,060 Па, ајде да видиме, јас навистина не може скролувајте до овде. 1154 01:05:18,060 --> 01:05:23,161 грешка е аргумент кој се предадена на овој анонимен функција. 1155 01:05:23,161 --> 01:05:24,410 Ова е анонимен функција. 1156 01:05:24,410 --> 01:05:25,480 Тоа нема име. 1157 01:05:25,480 --> 01:05:29,850 Но, ние сме прифаќање на овие три аргументи, податоци, одговор, и грешки. 1158 01:05:29,850 --> 01:05:33,590 И тоа се случува да се врати празен, па тоа не се случува да се врати ништо. 1159 01:05:33,590 --> 01:05:37,910 И ова е содржината на таа функција. 1160 01:05:37,910 --> 01:05:41,961 А потоа имаме пристап во внатрешноста, кои функцијата на секој од овие аргументи. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> Така, тоа е виорот турнеја на јазикот. 1163 01:05:48,679 --> 01:05:50,470 Но се надевам дека со ова, се надевам дека штом ќе се земе 1164 01:05:50,470 --> 01:05:54,490 разгледаме во некои од вежбите специфични за iOS развој со Свифт, 1165 01:05:54,490 --> 01:05:57,481 особено ако се оди на Епл развивач на веб page-- 1166 01:05:57,481 --> 01:05:59,980 тие имаат многу навистина добри вежби за да го започна. 1167 01:05:59,980 --> 01:06:05,010 Но се надевам дека само овој час на зборување за синтаксата има се дадени 1168 01:06:05,010 --> 01:06:08,760 ви е доволно за да започнете со тоа. 1169 01:06:08,760 --> 01:06:12,950 >> Ние ќе ги објави сите на овој извор кодот на веб-страницата на семинарот 1170 01:06:12,950 --> 01:06:17,800 што е можно побрзо, а исто така на слајдови па мора да биде референца за сите оние. 1171 01:06:17,800 --> 01:06:20,530 Но, со среќа со вашите проекти. 1172 01:06:20,530 --> 01:06:23,640 И сите многу Ви благодарам што дојдовте. 1173 01:06:23,640 --> 01:06:26,990 >> [Аплауз] 1174 01:06:26,990 --> 01:06:28,026