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 >> Дан АМРМЕНДАРИЗ: Свако, велцоме то тхе ЦС50 семинара, 4 00:00:09,590 --> 00:00:11,690 иОС апликација развој са Свифт. 5 00:00:11,690 --> 00:00:15,690 Ја сам Дан Армендариз, а ја сам прецептор рачунарских наука овде на Харварду. 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 види у Ц током ЦС50, или Чак и неки други језици 20 00:01:06,600 --> 00:01:09,310 да смо почели користите у ЦС50 као ПХП 21 00:01:09,310 --> 00:01:12,670 па ћу морати да покуша да увести и неке теме које 22 00:01:12,670 --> 00:01:18,580 се односе на језицима вишег нивоа да можда нећете видети у дубину у ЦС50, 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 са Свифт, или стварно свака иОС апликација развој, 28 00:01:34,442 --> 00:01:35,900 постоји неколико услова. 29 00:01:35,900 --> 00:01:39,940 Пре свега, морате да користите Мац, трчање у примерима 30 00:01:39,940 --> 00:01:43,880 да ћемо користити данас, релативно нова верзија ОС 31 00:01:43,880 --> 00:01:46,580 Кс. У том случају, ја водим Кс 10.5. 32 00:01:46,580 --> 00:01:48,600 Можете се ради 10.11 ако желите. 33 00:01:48,600 --> 00:01:52,430 Али све што ћеш види се укључује Ксцоде 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 Од тада Аппле је објавио, мислим оно, што је мало више од годину дана 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 >> Сада можете јоин-- и надам ми заправо још увек имају ову овај Иеар-- 64 00:03:28,430 --> 00:03:30,910 ЦС 50 је Аппле Апп развојни тим, који 65 00:03:30,910 --> 00:03:34,680 ће вам омогућити да инсталирате све апликације који сте креирали на својим иОС уређајима. 66 00:03:34,680 --> 00:03:39,190 Дакле, погледајте овај УРЛ ако сте заинтересовани за то. 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 >> Много синтаксе је позајмљен од Ц. То је заснована и написано у Ц. 72 00:03:56,350 --> 00:04:00,400 И тако ћемо видети да има доста Такеаваис 73 00:04:00,400 --> 00:04:04,450 из свог постојећег знања из Ц да можемо порта да Свифт. 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 Другим речима, можете га користити у све врсте контекста, из Аппле Ватцх 80 00:04:19,480 --> 00:04:26,290 за иПхоне скроз до ОС Кс, и чак и неки сервери, чак и неке скрипт. 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 на вашем Мац или ваш иПхоне. 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 У ствари, ЦС 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 Има доста АПИ да су доступни. 98 00:05:16,930 --> 00:05:21,170 И то је добра база за вас да траже, специфичне ствари које сте 99 00:05:21,170 --> 00:05:23,020 желите да урадите са АПИ укључује иОС. 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 U redu. 104 00:05:37,880 --> 00:05:38,700 Idemo dalje. 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 Пролазимо у њу а гудачки зове Хелло ЦС50. 114 00:06:03,010 --> 00:06:04,750 Обратите пажњу да нема зарезом. 115 00:06:04,750 --> 00:06:07,010 Обратите пажњу да нема маин. 116 00:06:07,010 --> 00:06:10,392 Има ниједан од цруфт да смо имали са Ц. 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 >> Обратите пажњу да овде сам не користите ЦС50 ИДЕ. 120 00:06:20,920 --> 00:06:24,460 То претпоставља да сам ја ради и да сам на ОС Кс, 121 00:06:24,460 --> 00:06:27,870 и да сам Ксцоде већ инсталирана на овој машини како би за то 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 свифтц 1.свифт. 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 И сада смо штампани нашу ЦС50, наша Здраво свете апликација прилично. 130 00:06:51,090 --> 00:06:54,690 >> Обратите пажњу на још једну ствар као добро је да по дефаулту, 131 00:06:54,690 --> 00:07:00,090 нисмо имали да улаз А / Н да одштампате нову линију. 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 Али Гоогле за више информација о томе. 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 пружају на то неки дата-- у овај случај, стринг Ден. 144 00:07:38,200 --> 00:07:40,630 Али, користећи ову Лет кључна реч, ми говоримо 145 00:07:40,630 --> 00:07:43,860 да је ово вариабле-- или поново позвао цонстант-- 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 а затим помоћу бацксласх отворене паренс, и онда име моје променљиве, 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 ставити у ствар линије, што у основи само прецизира 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 da je. 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 коришћењем овог синтаксу инстеад-- нека Име дебелог стринг једнако 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 Сада други начин да можемо створити вариаблес-- 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 да је променљива дефинед-- смо користити вар кључну реч уместо пустити. 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 И ми ћемо онда спојите две жице заједно, стринг здраво, 200 00:10:43,030 --> 00:10:48,070 а стринг представља од стране променљива, односно константа име. 201 00:10:48,070 --> 00:10:50,660 >> Дакле, ово је лепо, јер ово је донекле ПХП као у које смо 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 желе да пробају да спојите стринг са тим цео број, 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 Ali na nesreću, ово ће заиста не 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 >> Ово је веома разликује од других језици као ПХП који су заиста 235 00:12:36,856 --> 00:12:38,480 Лоосеи Гоосеи са својим врстом типова. 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 >> Zasada je dobro? 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 разреда је променљиво вариабле-- ми не користимо ЛЕТ кључну реч. 274 00:14:45,350 --> 00:14:49,620 Значи онда можемо изменити садржај овог низа. 275 00:14:49,620 --> 00:14:53,420 Она је типа Арраи Инт, и можемо рећи да 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 имају приступ многим Dodatne Informacije 279 00:15:02,310 --> 00:15:07,110 о низу користећи само нека једноставна тачка нотација. 280 00:15:07,110 --> 00:15:10,500 Тако на пример, градес.цоунт даје нам 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 не можете урадити ПХП стил где баш експлицитно дефинисати, 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 >> И сада овај низ има следеће цонтентс-- 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 градес-- 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 хтети да поновити преко сваке ставке у овој петљи. 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 .. <граде.цоунт. 307 00:16:46,820 --> 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Дакле, ова конструкција, 0 .. <градес.цоунт је низ операција где смо 309 00:16:57,390 --> 00:17:01,860 каже да ћемо да створимо низ целих бројева од 0 уп 310 00:17:01,860 --> 00:17:05,750 да али искључујући градес.цоунт. 311 00:17:05,750 --> 00:17:09,577 Тако ће ово бити 0, 1, 2, 3, 4, 5, до колико год један 312 00:17:09,577 --> 00:17:10,410 пре градес.цоунт. 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 ... граде.цоунт, 320 00:17:40,570 --> 00:17:45,120 ово представља опсег 0 да градес.цоунт закључно, 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 kao. 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 до тачке која је једнака градес.цоунт, 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 Онда смо се експлицитно типецаст износ који смо изнад израчунати 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 biće. 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 Veliki. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Сада ћемо да почне да се добри стуфф-- Дефинисање функција, 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 Аргументи такође морају да специфи-- генералли-- 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 >> Тако да смо у овом случају имају функција названа принтГрадеЦоунт. 383 00:21:09,920 --> 00:21:12,840 Ми ћемо прихватити вариабле-- односно у овом случају, 384 00:21:12,840 --> 00:21:14,450 цонстант-- зове градебоок. 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 Градебоок променљива овде. 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 ВАР кључна реч овде. 395 00:21:52,070 --> 00:21:56,832 Али то је Капирам да смо Приметили су људи урадили у прошлости 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 Ако је градебоок празан, која у овом случају 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 која је градебоок, а овај пут ће вратити двоструку тип. 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 али вероватно нико да сте видели у ЦС50. 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 Па, ако градебоок је празна, па онда смо 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 израчунати у просеку ако имамо празан градебоок. 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 за петље, што нам омогућава да поновити преко сваког ставку у низу 431 00:23:49,190 --> 00:23:53,630 и поставите сваки елемент у свом променљиве. 432 00:23:53,630 --> 00:23:56,200 Одређивањем за разред Градебоок, шта ми говоримо 433 00:23:56,200 --> 00:24:00,560 јесте да ћемо имплицитно створити нову константу која се зове 434 00:24:00,560 --> 00:24:05,180 разред који ће представљати свака уникат у градебоок 435 00:24:05,180 --> 00:24:06,769 сваки пут када фор петље итерацију. 436 00:24:06,769 --> 00:24:08,560 Тако је први пут да то рун, разред ће 437 00:24:08,560 --> 00:24:09,800 бити прва тачка у градебоок. 438 00:24:09,800 --> 00:24:12,300 Други пут ће бити Друга тачка, и тако даље и тако даље 439 00:24:12,300 --> 00:24:15,970 до градебоок има исцрпљени се елемената. 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 Дан АМРМЕНДАРИЗ: Можете ли поновите питање? 449 00:24:37,520 --> 00:24:39,587 ПУБЛИКА: Могу ли цео као просек? 450 00:24:39,587 --> 00:24:41,670 Дан АМРМЕНДАРИЗ: Можете ли уради цео број као просек? 451 00:24:41,670 --> 00:24:45,015 Дакле, вратити цео број Просечна уместо дупло? 452 00:24:45,015 --> 00:24:48,204 >> ПУБЛИКА: Ретурн-- вас имају то право сада испод. 453 00:24:48,204 --> 00:24:49,870 Дан АМРМЕНДАРИЗ: Овде, врати 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 >> Дан АМРМЕНДАРИЗ: Дакле, у том случају, тако да је неколико различитих начина 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 Ја могу поставити повратни тип на инт, ретурн 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 >> Дан АМРМЕНДАРИЗ: Па у случају, ово је део 473 00:25:45,010 --> 00:25:50,580 од који-- тако да поновите питање, зато што је имплицитно од повратка 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 Али постоји су- 480 00:26:11,050 --> 00:26:12,560 >> ПУБЛИКА: [неразумљиво] арров? 481 00:26:12,560 --> 00:26:19,490 >> Дан АМРМЕНДАРИЗ: Постоје случајеви када можемо навести да смо имплицитно могу 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 је-- док, некако даје ми чудан грешку. 492 00:26:54,900 --> 00:26:59,730 Морам да га прође неколико цели бројеви као аргумент командне линије. 493 00:26:59,730 --> 00:27:06,220 Па да видимо, 150 и 80, и притисните Ентер да сазнате шта то заправо ради. 494 00:27:06,220 --> 00:27:09,890 То је прихватање сваког од ове вредности као цели бројеви. 495 00:27:09,890 --> 00:27:12,040 Их је унос у градебоок. 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 у Ц и другим језицима, први 0-ог ставка у том командне линије аргумента 502 00:27:32,640 --> 00:27:35,774 Листа је име команде да заправо погубљен. 503 00:27:35,774 --> 00:27:38,690 Дакле, у овом случају, ја само петље над свим аргументе командне линије у. 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 тај аргумент у цео број од обавља експлицитан типецаст, 512 00:28:07,620 --> 00:28:12,310 јер је, на улазу, стринг а не у ствари цео број. 513 00:28:12,310 --> 00:28:18,140 >> Али ово је чудно синтаксе, ако дозволите разреда износи Инт (аргумент). 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 то је вредност АБЦ, на пример. 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 >> ПУБЛИКА Нил је Н-И-Л? 546 00:30:09,652 --> 00:30:11,110 Дан АМРМЕНДАРИЗ: Нил је Н-И-Л, да. 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 посебно када сте у коров на иОС апликације на 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 Али када схватите оут-- ако вас посвети мало времена да смисли 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 Дакле, важно је да је понети опционо тип је нека врста метатипе. 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 То је донекле слична хеш табели у Ц. То је у суштини мапирање тастера 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 тако псет0, можда имам 100. 582 00:32:18,490 --> 00:32:20,790 И псет1, имам 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 >> Када сам ударио Ентер, можете видети обавља неке рачунања. 586 00:32:30,940 --> 00:32:33,740 Пише градебоок је три оцене, псет1, псет0, испит. 587 00:32:33,740 --> 00:32:36,120 И градебоок има ова специфична просек. 588 00:32:36,120 --> 00:32:38,370 Дакле, опет радимо са овом идејом градебоок, 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 То није нешто што ћете користити у иОС апп. 595 00:32:56,530 --> 00:32:59,750 Ово је само, у овом случају, са командне линије аргумента. 596 00:32:59,750 --> 00:33:01,990 Даље ћемо почети креће ка Ксцоде. 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 можда се сећате да сам имао тај списак од итемс-- псет1, псет0, и испит. 602 00:33:26,090 --> 00:33:29,130 Можете заправо брзо и лако урадити 603 00:33:29,130 --> 00:33:34,490 тако што ће Градебоок, што је рјечник који има кључеве и вредности. 604 00:33:34,490 --> 00:33:38,730 Пронађи све кључа је кроз метод овде дот кључеви, 605 00:33:38,730 --> 00:33:43,180 и онда користите ову јоинВитхСепаратор, који ће онда предузети све кључеве 606 00:33:43,180 --> 00:33:48,590 да смо укуцали, или псет1-- Жао ми је, псет0, псет1 и екам-- 607 00:33:48,590 --> 00:33:53,030 и спојите их заједно коришћењем зарез и простор 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 И тако је то јоинВитхСепаратор. 611 00:34:03,450 --> 00:34:06,939 >> И то је једна ствар која је променио од 1 до Свифт Свифт 2. 612 00:34:06,939 --> 00:34:08,730 Ту је некада био Питон стиле-- ако сте 613 00:34:08,730 --> 00:34:13,219 упознат са Питхон-- питон стил придружи метод на жицама. 614 00:34:13,219 --> 00:34:15,699 Али, то више није случај у Свифт 2. 615 00:34:15,699 --> 00:34:19,400 Ви желите да користите ово ако желите да спојите низ ствари 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 шта ако стварно градебоок нема вредности унутар ње? 622 00:34:41,550 --> 00:34:44,280 Шта би требало да просечна повратак? 623 00:34:44,280 --> 00:34:46,350 >> Па, можда у Ц ти би урадио нешто 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 И сада говорим све ове речи, али ово заправо не користи Оптионалс. 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 У супротном ћемо се вратити нула, рекавши да је овај 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 Али стварно шта ћеш да се бави је Ксцоде. 638 00:35:39,470 --> 00:35:43,720 А једна од лепих ствари о Ксцоде је, а посебно у Свифт, 639 00:35:43,720 --> 00:35:47,450 је да имамо ово ствар се зове Плаигроунд. 640 00:35:47,450 --> 00:35:51,470 И Игралиште је није нимало иОС апп. 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 И вероватно сте видели ово мало у ЈаваСцрипт. 654 00:36:36,960 --> 00:36:40,770 За оне од вас који у ЦС50, затварачи 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 То ће бити позвани повероф. 706 00:39:26,380 --> 00:39:29,470 То ће прихватити параметар се зове и типа Инт. 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 Што значи да ове функције, Ова функција повероф, 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 Ми смо унутар ове функције повероф. 715 00:39:57,910 --> 00:40:00,760 Ми правите нову функцију зове екпонентиатор, 716 00:40:00,760 --> 00:40:02,900 али то није битно шта је то. 717 00:40:02,900 --> 00:40:06,410 >> Обратите пажњу да ово има улазни вредност к. 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 је замењено са ова вредност и, која 722 00:40:23,210 --> 00:40:27,230 био иницијална параметар наше повероф функције. 723 00:40:27,230 --> 00:40:31,700 И у овом тренутку, ми врати екпонентиатор. 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 Али, хајде да замислимо шта се догађа кад зовем ову функцију повероф 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 за и, што значи да ове вредности и у овом екпонентиатор функцији 731 00:40:55,130 --> 00:40:56,410 ће бити та вредност 2. 732 00:40:56,410 --> 00:41:01,290 Али ја ово враћа екпонентиатор функција. 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 екпонентиатор, али ова вредност и је обавијен унутра. 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 да створи друге повероф функције. 748 00:41:59,040 --> 00:42:03,680 Као што могу да кажем, у реду, али сада желим да створи нову функцију, повероф (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 То је стварно моћна ствар видимо доста у ЈаваСцрипт и неким другим језицима. 759 00:42:33,570 --> 00:42:37,160 То је заиста од виталног значаја за разумевање АПИ као и 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 >> ПУБЛИКА: Када радите повероф (2), заграда, а затим 763 00:42:43,740 --> 00:42:48,764 друга заграда, други инпут-- ви сте у основи замене квадрат. 764 00:42:48,764 --> 00:42:50,930 Дан АМРМЕНДАРИЗ: Зато погледајте у последњем реду овде. 765 00:42:50,930 --> 00:42:55,930 То је заправо потпуно могуће то везивање као што сте предложили. 766 00:42:55,930 --> 00:43:00,990 Дакле, повероф (5) значи да идемо да има екпонентиатор од 5 до овде. 767 00:43:00,990 --> 00:43:04,160 Дакле, ово је у суштини ће бити исто као 4 до петог власт, 768 00:43:04,160 --> 00:43:07,200 јер смо створили екпонентиатинг функционишу у пети власт, 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 >> Дан АМРМЕНДАРИЗ: Да, управо тако. 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 >> ПУБЛИКА: У овом контексту повероф, то је део 778 00:43:26,942 --> 00:43:30,774 од програмског језика за разлику од вас који начин 779 00:43:30,774 --> 00:43:33,952 мислим на повероф у [неразумљиво]? 780 00:43:33,952 --> 00:43:35,660 Дан АМРМЕНДАРИЗ: Па у овом случају, повероф 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 U redu. 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 Као зашто сам ово дефинисати функција названа екпонентиатор 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 И тако у овом случају, у 7Б, можемо прецизно да пронађу. 800 00:44:28,700 --> 00:44:31,470 Све је исто код, ради потпуно исту ствар, 801 00:44:31,470 --> 00:44:35,570 али сада смо га променили нешто тако да је ова функција повероф одмах 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 То не заправо имају име, док пре него што је позвао екпонентиатор. 809 00:44:57,030 --> 00:45:00,229 Али, као што смо видели, само стварно није се односе на екпонентиатор 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 Можда ми заправо знамо, од закључујете из овог кода, што 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 Дан Армендариз: То је тачно. 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 >> ПУБЛИКА: Да ли Перл или нешто има ово знак долара, долар 0 тамо? 850 00:47:11,119 --> 00:47:12,702 Дан Армендариз: Да ли која, жао ми је? 851 00:47:12,702 --> 00:47:15,360 ПУБЛИКА: Да ли Перл има ово долар 0, долар 1-- 852 00:47:15,360 --> 00:47:17,318 ДАН Армендариз: Нисам превише упознат са Перл, 853 00:47:17,318 --> 00:47:21,340 али оно што дефинише ПХП-променљиве на основу зараду. 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 Ова дефиниција типа Изгледа да долази из ОЦамл. 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 и схоехорнс их све заједно у једну супер језику. 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 Свифт има екпонентиатинг Функција изграђен. 867 00:48:02,120 --> 00:48:04,660 Ако увоз Дарвин, која је само да библиотека 868 00:48:04,660 --> 00:48:09,680 има ову функцију зове бум, сада Ја могу поједноставити своју моћ функције 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 svuda. 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 Ste spremni? 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 и како заснована протокола је, да се дефинише своје проклети оператере. 899 00:49:39,650 --> 00:49:44,060 Као у овом случају, нисмо имали оператор за екпонентиатион-- добро, 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 [Минд Бловинг Соунд] Ово стране Сама би требало да вас буде као, 911 00:50:34,420 --> 00:50:37,960 У реду, завртањ Ц Идем Свифт скроз. 912 00:50:37,960 --> 00:50:38,740 Ovo je super. 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 негдје у Ц, као и скривена негде у Свифт, 923 00:51:06,040 --> 00:51:12,210 као опскурне онај који вас можда није видела. 924 00:51:12,210 --> 00:51:15,050 >> Дан Армендариз: Дакле, ако покушавате да дефинише своје оператере, 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 тако, само кад смо Гцхаттинг пријатеље или било шта друго. 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 >> U redu. 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 Дакле, у овом случају имам низ интегерс-- 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 једноставан за петљу да Примењује преко свих њих 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 у променљивој по имену Ф која ће да узимајте дуплу и вратити дупло. 969 00:53:40,990 --> 00:53:43,320 И цео излаз целог ове функције 970 00:53:43,320 --> 00:53:47,310 зове маппер ће врати низ се зове двоструко. 971 00:53:47,310 --> 00:53:52,380 >> Шта то онда би ми дозволили да урадите је да поновити преко тог списка 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 Тако да ја не знам шта је ф. 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 То је врста Као узимање свих ових идеје које смо научили у ЦС50 984 00:54:29,640 --> 00:54:31,390 и узимајући их на неки од на следећи ниво. 985 00:54:31,390 --> 00:54:34,140 И то је све цс51 стилу ствари. 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 Ми ћемо проћи да Арраи у наш маппер. 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 >> Дакле, овај случај смо дефинише наше властити функција названа маппер. 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 кроз фунцтион-- 1006 00:55:36,134 --> 00:55:37,050 Дан Армендариз: Тако је. 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 Ако је функција враћа фалсе, да баци ту ставку. 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 >> Дакле, другим речима, ово је иста идеја, градебоок. 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 Дакле, шта се враћа у пассингЦоунт је низ елемената 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 ствари су јер је то уобичајено да Оно што ћете видети у прилично Свифт 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 Можете користити прекидач, и заправо можете их применити 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 и показаћу вам конкретан пример како можемо створити у иОС апп помоћу Свифт. 1054 00:58:46,940 --> 00:58:49,040 Дакле, када радите ово, мораћете да 1055 00:58:49,040 --> 00:58:51,990 А Лоок ат-- на Апплеов документације, они 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 кроз све кораке шта тачно да кликните на стварање иОС апликацију. 1059 00:59:04,110 --> 00:59:07,290 >> Али овде имамо овај иОС апликација. 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 Све што у суштини ради је то повлачи са Интернета ЈСОН фајл 1063 00:59:19,480 --> 00:59:22,300 да сам чувају на серверу. 1064 00:59:22,300 --> 00:59:26,310 И то ЈСОН фајл дефинише слике које омогућавају 1065 00:59:26,310 --> 00:59:31,680 ја онда циклус кроз, на мој Апп, слике из мог веб сервера. 1066 00:59:31,680 --> 00:59:32,880 >> Зато сам овде гетНектИмаге имам. 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 из каснијих неколико недеља ЦС50 у стварном иОС апликације. 1071 00:59:47,820 --> 00:59:53,140 Другим речима, можда један од ствари које ћете желети да урадите 1072 00:59:53,140 --> 00:59:56,340 је да има иОС апликацију која може да извуче податке са интернета 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 >> Дакле, има много да се каже о како се то стварно иОС развој. 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 које очекују се ИОС, у ствари ово изгледа мало магичан. 1083 01:00:36,530 --> 01:00:40,300 Али кад створи иОС апликација, ту 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 Али ја вам и да погледате можда друга иПхоне семинара, али и неке 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 >> Дакле, у овој функцији зове фетцхЈСОН, ова функција 1111 01:02:16,630 --> 01:02:23,450 је одговоран за повлачење тог ЈСОН филе са УРЛ који Десило се 1112 01:02:23,450 --> 01:02:26,310 да се ради на мом ЦС50 ИДЕ. 1113 01:02:26,310 --> 01:02:28,580 Управо сам почео Апацхе, ставио тамо мој ЈСОН фајл, 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 радиш нешто иОС апп развој. 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 Могао сам пронашао УРЛ би руннинг ову функцију НСУРЛ 1124 01:03:10,530 --> 01:03:16,640 и складиштења да у УРЛ константа, затим провера 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 је правилно постављена од стране НСУРЛ. 1130 01:03:38,020 --> 01:03:41,810 А ако јесте, онда је прескаче ово, и то 1131 01:03:41,810 --> 01:03:46,110 ће вам омогућити да наставите са урл пошто је дефинисана. 1132 01:03:46,110 --> 01:03:48,830 Али, ако је случај да УРЛ адреса није правилно дефинисана, 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 Дан Армендариз: Мало је Лике Ан ако онда друго, да, 1139 01:04:07,130 --> 01:04:14,200 осим да је ово урл је тада дефинисан за све испод тога. 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 >> Дан Армендариз: То је близу. 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 >> Дан Армендариз: Ако грешка није нула, тако да је-- тако да морам да се крећете. 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 поглед на неке од туторијала специфични за иОС развој са Свифт, 1165 01:05:54,490 --> 01:05:57,481 Посебно ако одете на Аппле Девелопер Веб паге-- 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