1 00:00:00,000 --> 00:00:03,332 >> [Гуляе музыка] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> Дадзены AMRMENDARIZ: Усе, Сардэчна запрашаем у CS50 семінара, 4 00:00:09,590 --> 00:00:11,690 IOS App развіцця з Swift. 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 Мы пачынаем рабіць некаторыя асноўныя Сінтаксіс з Swift мовы, 16 00:00:52,820 --> 00:00:56,290 ўдаючыся ў некаторыя больш прасунутыя Сінтаксіс Свіфта мове. 17 00:00:56,290 --> 00:00:59,560 Таму што мова сапраўды сучасны і яго 18 00:00:59,560 --> 00:01:02,110 ёсць шмат высокім узроўні асаблівасці, рэчы, якія мы не 19 00:01:02,110 --> 00:01:06,600 бачыў у C на працягу CS50 або нават некаторыя іншыя мовы 20 00:01:06,600 --> 00:01:09,310 што мы пачалі выкарыстання ў CS50, як PHP, 21 00:01:09,310 --> 00:01:12,670 так што я буду мець, каб паспрабаваць таксама ўводзіць некаторыя тэмы, якія 22 00:01:12,670 --> 00:01:18,580 звязаныя з высокаўзроўневых моў што вы не можаце бачыць у глыбіні CS50, 23 00:01:18,580 --> 00:01:21,380 але вы ўбачыце пазней камп'ютэрныя навукі класы. 24 00:01:21,380 --> 00:01:25,290 Так што гэта будзе шчыльна гадзіну. 25 00:01:25,290 --> 00:01:28,897 І, калі ласка, не саромейцеся, дайце мне ведаць, калі ў вас ёсць якія-небудзь пытанні. 26 00:01:28,897 --> 00:01:30,730 Так што, калі вы зацікаўлены у гэтым развіццё 27 00:01:30,730 --> 00:01:34,442 з Swift, або сапраўды любое развіццё IOS прыкладанне, 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 X. У гэтым выпадку, я бягу X 10.5. 32 00:01:46,580 --> 00:01:48,600 Вы можаце быць запушчаны 10.11, калі вы хочаце. 33 00:01:48,600 --> 00:01:52,430 Але ўсё, што вы збіраецеся бачыце, з удзелам Xcode 7 і больш позняй версіі, 34 00:01:52,430 --> 00:01:56,271 які мае апошнюю версію Свіфта, які Свіфт 2.0. 35 00:01:56,271 --> 00:01:58,270 Гэта на самай справе даволі важнае адрозненне. 36 00:01:58,270 --> 00:02:01,510 Шмат сінтаксіс даволі істотна змянілася 37 00:02:01,510 --> 00:02:05,890 у некаторых выпадках ад Swift 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 Вы можаце відавочна шукаць Swift 2 43 00:02:20,710 --> 00:02:24,950 чым проста стары Swift зрабіць Пераканайцеся, што вы атрымліваеце сінтаксіс правільна. 44 00:02:24,950 --> 00:02:26,920 >> На самай справе, гэта ў цэлым дакладна. 45 00:02:26,920 --> 00:02:31,210 Там гэта хуткі колькасць развіцця адбываецца ў Swift мовы 46 00:02:31,210 --> 00:02:35,110 З тых часоў кампанія Apple выпусціла яго, я думаю, Што, гэта было крыху больш за год 47 00:02:35,110 --> 00:02:36,370 Цяпер. 48 00:02:36,370 --> 00:02:39,080 І ўсё змянілася рэзка ў той час. 49 00:02:39,080 --> 00:02:42,160 І так што не будуць расчараваныя калі, калі вы шукаеце вакол 50 00:02:42,160 --> 00:02:48,310 па тэмах па Swift ці як выканаць то з дапамогай некаторых прыклад кода 51 00:02:48,310 --> 00:02:51,210 ці нешта, што гэта не на самай справе працуе на Swift 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 што вы будзеце мець з Swift знаходзіць прыклад кода, які старэй, нават проста 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 ёсць даволі добры вопыт з Swift ў цэлым. 63 00:03:24,200 --> 00:03:28,430 >> Цяпер вы можаце на самой справе join-- і я спадзяюся, мы на самай справе да гэтага часу гэтая гэтай год-- 64 00:03:28,430 --> 00:03:30,910 CS 50 Яблык прыкладанне Каманда распрацоўнікаў, якія 65 00:03:30,910 --> 00:03:34,680 дазволіць вам ўсталёўваць якія-небудзь прыкладання якія вы ствараеце на вашым IOS прылад. 66 00:03:34,680 --> 00:03:39,190 Так зірніце на гэты URL, калі Вы зацікаўлены ў гэтым, што. 67 00:03:39,190 --> 00:03:41,450 >> Так што пару рэчы, пра самую хуткай. 68 00:03:41,450 --> 00:03:43,580 Гэта кампіляваная мову. 69 00:03:43,580 --> 00:03:45,870 Але вы ўбачыце, што некаторыя з асаблівасцяў, якія мы выкарыстоўваем 70 00:03:45,870 --> 00:03:50,650 дазваляюць выкарыстоўваць яго таксама ў трохі як інтэрпрэтаваны, як добра. 71 00:03:50,650 --> 00:03:56,350 >> Шмат сінтаксісу запазычанае з C. Ён заснаваны і напісаны на C. 72 00:03:56,350 --> 00:04:00,400 І такім чынам, мы ўбачым, што Ёсць шмат ежы на дом 73 00:04:00,400 --> 00:04:04,450 ад існуючай ведаў з З, што мы можам порт Swift. 74 00:04:04,450 --> 00:04:07,290 >> Але ёсць рэчы, якія зрабіць гэта вельмі адрозніваецца ад C. 75 00:04:07,290 --> 00:04:08,860 Гэта вельмі моцна набралі. 76 00:04:08,860 --> 00:04:10,380 Там гэта аўтаматычнае кіраванне памяццю. 77 00:04:10,380 --> 00:04:13,170 Вы не будзеце мець, каб выкарыстоўваць Таноса або бясплатна ў любым месцы. 78 00:04:13,170 --> 00:04:15,110 Ён прызначаны для абагульнення. 79 00:04:15,110 --> 00:04:19,480 Такім чынам, іншымі словамі, вы можаце выкарыстоўваць яго ў усе віды кантэкстаў, з Apple Назіраць 80 00:04:19,480 --> 00:04:26,290 у iPhone ўсё, аж да OS X, і нават некаторыя серверы, нават некаторыя сцэнарыяў. 81 00:04:26,290 --> 00:04:28,400 Але мы бачым, што падтрымка сцэнарыяў 82 00:04:28,400 --> 00:04:31,360 не зусім там яшчэ, як гэта на іншых мовах. 83 00:04:31,360 --> 00:04:34,930 Так што хутчэй за ўсё вы будзеце выкарыстоўваць гэта выключна для развіцця 84 00:04:34,930 --> 00:04:37,060 на вашым кампутары або ў вашым iPhone. 85 00:04:37,060 --> 00:04:40,150 >> І яна мае шмат сучасных функцый. 86 00:04:40,150 --> 00:04:43,380 І многія з гэтых рэчаў рэчы, якія мы збіраемся, каб паспрабаваць вырашыць сёння, 87 00:04:43,380 --> 00:04:47,590 але таксама нашы тэмы, якія, шчыра кажучы, мы можам прысвяціць усю курсы. 88 00:04:47,590 --> 00:04:50,140 На самай справе, CS 51, які прапанаваў у наступным семестры, 89 00:04:50,140 --> 00:04:53,990 факусуюць шмат на гэтыя тэмы якія апісаны ніжэй. 90 00:04:53,990 --> 00:04:56,781 Такім чынам, вы можаце правесці ўвесь семестр разуменне гэтых рэчаў. 91 00:04:56,781 --> 00:04:58,530 Але мы збіраемся, каб паспрабаваць атрымаць праз іх 92 00:04:58,530 --> 00:05:00,800 па меншай меры, дастаткова, каб вас можа зразумець, што 93 00:05:00,800 --> 00:05:03,700 адбываецца, калі вы глядзіце у Swift праграмы 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 адкрыта проста праз Apple, прадаставіў дакументацыю для Swift. 97 00:05:14,700 --> 00:05:16,930 Там вельмі шмат API, якія даступныя. 98 00:05:16,930 --> 00:05:21,170 І гэта добрая базай для вас шукаць, канкрэтных рэчаў, якія вы 99 00:05:21,170 --> 00:05:23,020 хачу зрабіць з API з удзелам IOS. 100 00:05:23,020 --> 00:05:26,350 Калі вы хочаце выкарыстоўваць камеру для Напрыклад, вы можаце пачаць шукаць тут, 101 00:05:26,350 --> 00:05:32,540 а таксама выкарыстоўваць Google і стэк Перапаўненне, як звычайна. 102 00:05:32,540 --> 00:05:36,670 >> Любыя пытанні па гэтай перш, чым мы скакаць прама ў? 103 00:05:36,670 --> 00:05:37,880 Добра. 104 00:05:37,880 --> 00:05:38,700 Давайце рухацца далей. 105 00:05:38,700 --> 00:05:42,620 >> Такім чынам, спачатку, у мяне ёсць Колькасць прыкладаў файлаў. 106 00:05:42,620 --> 00:05:46,040 І я збіраюся паспрабаваць крок праз іх адносна хутка. 107 00:05:46,040 --> 00:05:49,190 Гэта Hello World файла для Swift. 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 Мы праходзячы ў яго радок называецца Hello CS50. 114 00:06:03,010 --> 00:06:04,750 Звярніце ўвагу, што няма ніякіх коскі. 115 00:06:04,750 --> 00:06:07,010 Звярніце ўвагу, што няма INT асноўнай. 116 00:06:07,010 --> 00:06:10,392 Там няма ні адзін з хламу, што ў нас з С. 117 00:06:10,392 --> 00:06:15,020 Пры мы выкарыстоўваем Свіфта, такім чынам, які толькі што напісаў у тэкставым файле 118 00:06:15,020 --> 00:06:18,340 і захоўваецца на маім кампутары, а затым Я магу скампіляваць яго і запусціце яго. 119 00:06:18,340 --> 00:06:20,920 >> Звярніце ўвагу, што тут я не выкарыстоўваючы CS50 IDE. 120 00:06:20,920 --> 00:06:24,460 Гэта прадугледжвае, што я працуе і што я на OS X, 121 00:06:24,460 --> 00:06:27,870 і што я ўжо ўстаноўлена Xcode на гэтай машыне для таго, каб гэта 122 00:06:27,870 --> 00:06:29,080 на самай справе функцыі. 123 00:06:29,080 --> 00:06:33,349 Але гэта ўсяго толькі звычайны тэкставы файл што мы можам скампіляваць і рэдагаваць. 124 00:06:33,349 --> 00:06:34,890 Такім чынам, давайце паглядзім, як гэта працуе насамрэч. 125 00:06:34,890 --> 00:06:37,430 Што рабіць, калі я хачу, каб скампіляваць яго? 126 00:06:37,430 --> 00:06:40,450 swiftc 1.Swift. 127 00:06:40,450 --> 00:06:42,960 Праз некаторы час ці два, гэта ўбачыце, што мы маем цяпер 128 00:06:42,960 --> 00:06:45,360 складзены гэты код у файл пад назвай 1. 129 00:06:45,360 --> 00:06:51,090 І зараз мы надрукавалі нашу CS50, наша дадатак Hello World, а. 130 00:06:51,090 --> 00:06:54,690 >> Звярніце ўвагу адну рэч як добра, што па змаўчанні, 131 00:06:54,690 --> 00:07:00,090 мы не павінны ўвесці а / п для друку на новы радок. 132 00:07:00,090 --> 00:07:05,315 Па змаўчанні, функцыя друку ў Свіфт друку новую лінію для вас. 133 00:07:05,315 --> 00:07:09,284 Вы можаце перадаць неабавязковы дадатковы Параметр, каб сказаць яму, каб не зрабіць так. 134 00:07:09,284 --> 00:07:10,950 Але Google для атрымання дадатковай інфармацыі аб тым, што. 135 00:07:10,950 --> 00:07:13,450 Па змаўчанні, ён будзе рабіць пячатку лінію. 136 00:07:13,450 --> 00:07:16,420 >> Добра, так што давайце рухацца далей затым з некаторымі іншымі рэчамі. 137 00:07:16,420 --> 00:07:18,620 Так як мы можам на самай справе вызначыць зменныя? 138 00:07:18,620 --> 00:07:21,960 Мы можам зрабіць гэта з дапамогай адзін з двух метадаў. 139 00:07:21,960 --> 00:07:26,122 І той, які я хачу вам сказаць, о-першае, гэта хай вызначэння. 140 00:07:26,122 --> 00:07:27,830 І гэта важна таму эфектыўна 141 00:07:27,830 --> 00:07:30,240 тое, што мы робім, вызначаючы канстанту. 142 00:07:30,240 --> 00:07:34,010 Мы збіраемся стварыць зменную, ці, хутчэй, пастаянная называецца імя, 143 00:07:34,010 --> 00:07:38,200 забяспечыць яму некаторыя data-- ў гэты выпадак, радок Дан. 144 00:07:38,200 --> 00:07:40,630 Але з дапамогай гэтага Хай Ключавое слова, мы кажам 145 00:07:40,630 --> 00:07:43,860 што гэта переменная-- або зноў constant-- называецца 146 00:07:43,860 --> 00:07:46,220 імя ніколі не будзе зменены. 147 00:07:46,220 --> 00:07:50,120 Гэта збіраецца быць нязменнымі на працягу працягласць гэтай праграмы 148 00:07:50,120 --> 00:07:53,100 або на працягу Працягласць кантэксце 149 00:07:53,100 --> 00:07:55,390 што гэта зменная даступная. 150 00:07:55,390 --> 00:08:00,096 >> Гэта сапраўды важна, што, калі ў вас ёсць дадзеныя, якія ня 151 00:08:00,096 --> 00:08:02,970 збіраецца мяняць у сваёй праграме, і вы ўбачыце разнастайныя прыклады 152 00:08:02,970 --> 00:08:06,790 пра тое, калі мы хочам выкарыстоўваць хай у параўнанні з іншым сінтаксісам, 153 00:08:06,790 --> 00:08:11,040 важна, што вы карыстаецеся хай там, дзе гэта магчыма, таму што гэтага паведамляе 154 00:08:11,040 --> 00:08:13,740 мова, што гэта не будзе зменены, 155 00:08:13,740 --> 00:08:16,590 і ён можа фактычна выконваць шмат аптымізацый 156 00:08:16,590 --> 00:08:19,560 для павышэння хуткасці і бяспеку вашай праграмы. 157 00:08:19,560 --> 00:08:24,480 І бяспека, я маю на ўвазе не дазволіць гэта крах з вар'ятамі памылак 158 00:08:24,480 --> 00:08:27,910 што мы маглі б быць прывыклі бачыць у С. 159 00:08:27,910 --> 00:08:32,460 >> Тады мы можам выкарыстоўваць радок інтэрпаляцыі інкапсуляваць гэта ў радку. 160 00:08:32,460 --> 00:08:35,200 Такім чынам, мы бачым у гэтым друк лініі, раздрукаваць прывітанне, 161 00:08:35,200 --> 00:08:38,950 а затым з дапамогай зваротнай касой рысы адкрытыя дужкі, а затым імя майго зменнай, 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 што гэта. 179 00:09:29,820 --> 00:09:32,780 І гэта таму, што кампілятар, Свіфт можа 180 00:09:32,780 --> 00:09:36,910 вызначыць тып дадзеных, грунтуючыся толькі ад дадзеных, якія я ўклаў у яе. 181 00:09:36,910 --> 00:09:41,760 Таму што ён ведае, што, ацэньваючы гэта Пераменная прама тут, гэта права дадзеныя 182 00:09:41,760 --> 00:09:43,370 Тут, ён ведае, што гэта радок. 183 00:09:43,370 --> 00:09:48,690 І так гэта пастаяннае імя, таму будзе радок, як добра. 184 00:09:48,690 --> 00:09:52,730 >> Але мы таксама можа быць відавочным аб тыпе, што гэта 185 00:09:52,730 --> 00:09:55,790 мы збіраемся выкарыстаць для сталыя і зменныя 186 00:09:55,790 --> 00:10:01,590 з дапамогай гэтага сінтаксіс instead-- хай імя тоўстай кішкі Радок роўная 187 00:10:01,590 --> 00:10:05,530 Дэн, які ў дадзеным выпадку азначае, што мы будзе вызначаць пастаянную назвай імя. 188 00:10:05,530 --> 00:10:07,150 Гэта будзе тыпу String. 189 00:10:07,150 --> 00:10:10,550 І каштоўнасць будзе Дан. 190 00:10:10,550 --> 00:10:12,550 Цяпер у іншы бок, што мы можам стварыць variables-- 191 00:10:12,550 --> 00:10:15,549 і гэтыя змяняныя зменныя, якія азначае, што мы, па сутнасці, адбываецца 192 00:10:15,549 --> 00:10:19,670 змяніць іх змест небудзь у працягласці кантэксце 193 00:10:19,670 --> 00:10:23,890 што гэтая пераменная defined-- мы выкарыстоўваць Вар ключавое слова, а не няхай. 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 >> Так што гэта добра, таму што гэта у некалькі PHP, як і ў гэтым мы 202 00:10:50,660 --> 00:10:52,250 ёсць вельмі просты канкатэнацыі. 203 00:10:52,250 --> 00:10:56,350 Мы не павінны аўтаматычна выкарыстоўваць якой-небудзь кіравання памяццю 204 00:10:56,350 --> 00:11:00,580 павялічыць памер і рабіць якой-небудзь пацешных рэчаў там. 205 00:11:00,580 --> 00:11:05,040 Гэта працуе, як мы б на самай справе чакаць. 206 00:11:05,040 --> 00:11:09,370 >> Добра, якія-небудзь пытанні па гэтай нагоды? 207 00:11:09,370 --> 00:11:12,520 >> Цяпер іншая прычына, што мы маем патрэбу ў вас ёсць здольнасць 208 00:11:12,520 --> 00:11:15,490 каб быць у стане вызначыць, што тып зменных дадзеных з'яўляюцца 209 00:11:15,490 --> 00:11:18,170 таму што часам мы не хачу, каб ініцыялізаваць зменныя 210 00:11:18,170 --> 00:11:21,080 з некаторымі дадзенымі на кропка вызначэння. 211 00:11:21,080 --> 00:11:23,500 Такім чынам, у гэтым выпадку, скажам, што я хачу, каб пачаць ўвод 212 00:11:23,500 --> 00:11:25,040 некаторыя гатункі ў кнізе класа. 213 00:11:25,040 --> 00:11:27,530 Ну, я ведаю, што адзін з зменныя, якія я хачу быць 214 00:11:27,530 --> 00:11:30,280 будзе зменлівая гатунку. 215 00:11:30,280 --> 00:11:33,010 І мы таксама ведаем, што мы хачу, каб гэта было цэлае. 216 00:11:33,010 --> 00:11:36,030 Але, можа быць, мы яшчэ не ёсць, што гатунак даступныя. 217 00:11:36,030 --> 00:11:39,570 >> У Swift, вы павінны вызначыць тып дадзеных, 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 Але, на жаль, гэта будзе на самой справе не 232 00:12:26,460 --> 00:12:29,270 працаваць, таму што вы па сутнасці, выконваючы 233 00:12:29,270 --> 00:12:32,380 аперацыя на двух розных тыпаў. 234 00:12:32,380 --> 00:12:36,856 >> Зараз гэта вельмі адрозніваецца ад іншых Мовы, як PHP, якія сапраўды 235 00:12:36,856 --> 00:12:38,480 loosey неўраўнаважаны з іх роду тыпаў. 236 00:12:38,480 --> 00:12:40,030 Яны проста хацелі, ды, усе, я не хвалюе. 237 00:12:40,030 --> 00:12:42,710 Проста дайце мне адзін тып і можа быць, я буду рабіць правільныя рэчы. 238 00:12:42,710 --> 00:12:46,060 >> У гэтым выпадку, Свіфт надзвычай строгі пра тыпы 239 00:12:46,060 --> 00:12:47,350 што вы маеце справу з. 240 00:12:47,350 --> 00:12:50,700 Гэты аператар падсумоўвання або аператар канкатэнацыі 241 00:12:50,700 --> 00:12:54,400 па сутнасці мае пару розныя магчымыя варыянты. 242 00:12:54,400 --> 00:12:56,970 Вы можаце зрабіць сумаванне з цэлымі лікамі, ці вы 243 00:12:56,970 --> 00:13:00,870 можна зрабіць канкатэнацыяй, і магчыма, некаторыя іншыя рэчы, як добра. 244 00:13:00,870 --> 00:13:05,550 Але калі аператар не прызнае тое, што на абодва бакі ад яго, 245 00:13:05,550 --> 00:13:10,452 ці, хутчэй, спалучэнне гэтых два тыпу, гэта не тое, што чакае, 246 00:13:10,452 --> 00:13:11,910 то гэта будзе выклікаць збой. 247 00:13:11,910 --> 00:13:16,690 >> Такім чынам, у гэтым выпадку, што гэта значыць мець радок плюс цэлы лік? 248 00:13:16,690 --> 00:13:18,880 Добра ў кантэксце гэта, мы, верагодна, хочаце 249 00:13:18,880 --> 00:13:21,990 зрабіць аперацыю канкатэнацыі. 250 00:13:21,990 --> 00:13:26,420 Але, вядома, кампутар не мае, нешта з кантэксту. 251 00:13:26,420 --> 00:13:29,950 І таму мы павінны забяспечыць што дадатковая інфармацыя 252 00:13:29,950 --> 00:13:32,390 каб яна ведаю, што гэта з'яўляецца тое, што мы хочам зрабіць. 253 00:13:32,390 --> 00:13:36,860 >> Такім чынам, іншымі словамі, з тым, што Свіфт моцна тыпізаваных 254 00:13:36,860 --> 00:13:39,520 азначае, што вы павінны зрабіць трохі дадатковай працы 255 00:13:39,520 --> 00:13:42,100 каб атрымаць гэта, каб кіраваць шлях, які вы хацелі б. 256 00:13:42,100 --> 00:13:43,710 Але ў выніку, гэта бяспечней. 257 00:13:43,710 --> 00:13:46,290 І як толькі ў вас ёсць ўзяць у кошт тых відаў, 258 00:13:46,290 --> 00:13:49,300 рэчы проста адкрыта пачаць працаваць вельмі добра. 259 00:13:49,300 --> 00:13:52,520 >> Такім чынам, у гэтым выпадку, мы тады б выканаць канкатэнацыяй 260 00:13:52,520 --> 00:13:56,040 відавочным ліцця цэлы лік у радок 261 00:13:56,040 --> 00:13:58,490 абгарнуўшы яго ў гэтым Сталіца функцыя S Радок, 262 00:13:58,490 --> 00:14:03,510 а затым з дапамогай канкатэнацыі Аператар змяніць нашу зменную пазнакі, 263 00:14:03,510 --> 00:14:06,280 а затым раздрукаваць яго. 264 00:14:06,280 --> 00:14:08,420 >> Так далёка, так добра? 265 00:14:08,420 --> 00:14:12,020 Добра, давайце рухацца далей. 266 00:14:12,020 --> 00:14:16,300 >> Цяпер ёсць мноства дадзеных тыпы, якія мы можам выкарыстоўваць у Swift. 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 Гэта тыпу масіў Int, і мы можам сказаць, што 276 00:14:53,420 --> 00:14:56,260 на аснове гэтых квадратных дужках тут. 277 00:14:56,260 --> 00:14:58,930 >> Цяпер адзін з добрых рэчаў пра тое, што мы 278 00:14:58,930 --> 00:15:02,310 мець доступ да шмат дадатковая інфармацыя 279 00:15:02,310 --> 00:15:07,110 аб масіве толькі з дапамогай некаторыя простыя кропкавай натацыі. 280 00:15:07,110 --> 00:15:10,500 Так, напрыклад, grades.count забяспечвае нас 281 00:15:10,500 --> 00:15:14,820 колькасць элементаў, якія існуюць у тым, што масіў, мы можам атрымаць доступ да даволі 282 00:15:14,820 --> 00:15:19,090 лёгка проста з дапамогай кропкавай натацыі, што. 283 00:15:19,090 --> 00:15:21,830 >> Калі вы хочаце дадаць дадатковыя прадметы ў гэтым масіве, 284 00:15:21,830 --> 00:15:27,220 Вы не можаце зрабіць стыль PHP дзе вы проста відавочна вызначыць, 285 00:15:27,220 --> 00:15:30,910 па дадзеным індэксе, некаторы значэнне што вы хочаце ўставіць. 286 00:15:30,910 --> 00:15:37,210 Замест гэтага, выкарыстоўвайце каманды дадання Спосаб тыпу масіва 287 00:15:37,210 --> 00:15:40,920 дадаць гэты пункт, 95, да гэтага спісу. 288 00:15:40,920 --> 00:15:45,990 >> Так што зараз гэты масіў мае наступнае contents-- 100, 0, 90, 85. 289 00:15:45,990 --> 00:15:49,270 І зараз мы прыклалі 95 да таго, што, як добра. 290 00:15:49,270 --> 00:15:51,830 >> Ёсць і іншыя спосабы мы можам дадаць рэчы. 291 00:15:51,830 --> 00:15:55,030 Вы можаце выкарыстоўваць аператар падсумоўвання, 292 00:15:55,030 --> 00:15:59,200 які будзе інтэрпрэтавацца як аперацыя масіў даданнем. 293 00:15:59,200 --> 00:16:04,680 І вы можаце дадаць яшчэ адзін, то Масіў, змесціва якога 70 і 80, 294 00:16:04,680 --> 00:16:05,560 у гэтым масіве. 295 00:16:05,560 --> 00:16:08,250 Так што цяпер у нас ёсць Утрыманне ў гэтай зменнай 296 00:16:08,250 --> 00:16:17,220 grades-- 100, 0, 90, 85, 95, 70 і 80. 297 00:16:17,220 --> 00:16:21,850 Гэта проста міленькі сінтаксічны цукар, які забяспечвае Свіфт нам. 298 00:16:21,850 --> 00:16:23,850 >> Так што, калі мы хочам, каб падсумаваць гатункаў, мы, магчыма, 299 00:16:23,850 --> 00:16:27,340 захоча паўтараць над кожным пунктам у гэтым цыкле. 300 00:16:27,340 --> 00:16:32,150 І ў нас ёсць, у Свіфта, паняцце А для цыклу, як можна было б чакаць. 301 00:16:32,150 --> 00:16:35,350 Але шлях, які мы паказваем дыяпазон трохі адрозніваецца. 302 00:16:35,350 --> 00:16:37,790 Такім чынам, у гэтым выпадку, каб Падводзячы ўсё, мы будзем 303 00:16:37,790 --> 00:16:40,650 збіраецца стварыць часовы Пераменная называецца сума для таго, каб нас 304 00:16:40,650 --> 00:16:42,580 каб захаваць гэты конт. 305 00:16:42,580 --> 00:16:44,430 >> І заўважце, наш для цыкл будаўніцтва тут. 306 00:16:44,430 --> 00:16:46,820 Для індэкса ў 0 .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Такім чынам, гэта будаўніцтва, 0 .. 00:17:01,860 сказаўшы, што мы збіраемся стварыць дыяпазон цэлых лікаў ад 0 да 310 00:17:01,860 --> 00:17:05,750 каб выключаючы grades.count. 311 00:17:05,750 --> 00:17:09,577 Так што гэта будзе 0, 1, 2, 3, 4, 5, да таго часу, пакуль Аднак многія сябар 312 00:17:09,577 --> 00:17:10,410 Перад grades.count. 313 00:17:10,410 --> 00:17:14,160 >> Так што гэта адрозніваецца ад, як мы звычайна выкарыстоўваецца для завес 314 00:17:14,160 --> 00:17:18,569 дзе вы ёсць індэкс Пераменная, ўсталюйце яго роўным 0, па-першае, 315 00:17:18,569 --> 00:17:25,480 а затым інтэграваць, што да некаторых значэнне менш, чым колькасць элементаў 316 00:17:25,480 --> 00:17:27,140 у гэтым масіве. 317 00:17:27,140 --> 00:17:29,820 >> Так што ёсць мадыфікацыя да гэтага, на самай справе, 318 00:17:29,820 --> 00:17:35,010 што дазваляе вельмі лёгка ўсталяваць розныя тыпы дыяпазонаў. 319 00:17:35,010 --> 00:17:40,570 Калі вы зменіце гэты дыяпазон для тры кропкі, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 гэта ўяўляе дыяпазон 0 каб grades.count ўключна, 321 00:17:45,120 --> 00:17:49,260 Гэта азначае, што гэта лік таксама затым ўключаюцца ў гэтым дыяпазоне. 322 00:17:49,260 --> 00:17:52,110 >> Але гэта вельмі зручна для гэтых дакладных рэчаў, 323 00:17:52,110 --> 00:17:54,590 калі мы павінны выканаць ітэрацыі цыклу больш 324 00:17:54,590 --> 00:17:59,630 таму што гэтыя індэксы роўныя нулю індэксуюцца, як мы бачылі ў іншых мовах 325 00:17:59,630 --> 00:18:02,360 а таксама. 326 00:18:02,360 --> 00:18:05,210 Любыя пытанні па гэтаму для цыкла? 327 00:18:05,210 --> 00:18:10,660 >> Так што невідавочнае вызначэнне гэтай індэкснай зменнай, 328 00:18:10,660 --> 00:18:14,350 значэнне якога пачынаецца з 0, і працягваецца ў кожнай ітэрацыі цыклу 329 00:18:14,350 --> 00:18:17,950 не павялічыцца на 1 да тых часоў, кропкі што роўна grades.count, 330 00:18:17,950 --> 00:18:20,380 у якім пункце, цыкл перарываецца. 331 00:18:20,380 --> 00:18:23,730 >> Звярніце ўвагу, што ў нашай радку інтэрпаляцыі тут, 332 00:18:23,730 --> 00:18:26,910 мы можам на самай справе выканаць некаторыя простыя маніпуляцыі з гэтымі значэннямі. 333 00:18:26,910 --> 00:18:31,230 Так індэкс плюс 1 будзе на самой справе выканаць сумаванне кошту гэтага 334 00:18:31,230 --> 00:18:34,780 таму што індэкс, у гэты выпадак, цэлы лік. 335 00:18:34,780 --> 00:18:37,810 І ў той момант, ён будзе Затым быць ператвораныя ў радок 336 00:18:37,810 --> 00:18:42,230 і ў гэты радок тут, і раздрукаваць, як можна было б чакаць. , 337 00:18:42,230 --> 00:18:44,520 >> І добрая рэч аб масівах тут 338 00:18:44,520 --> 00:18:50,730 што мы таксама ў стане мець Выманне значэння і значэння параметраў 339 00:18:50,730 --> 00:18:54,080 выкарыстоўваючы квадратны абазначэння кранштэйн як мы бачылі ў іншых мовах. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> Добра, так тут, мы цяпер вылічыць наш суму ўсіх нашых марак. 342 00:19:01,030 --> 00:19:02,780 Цяпер накшталт наступнага лагічным крокам было б 343 00:19:02,780 --> 00:19:07,580 зрабіць аперацыю дзялення, каб знайсці з сярэдняга гэтых марак. 344 00:19:07,580 --> 00:19:10,150 Але нешта важнае тут адбываецца, які 345 00:19:10,150 --> 00:19:15,020 з'яўляецца тое, што гэтая сума можа быць, цэлы лік. 346 00:19:15,020 --> 00:19:18,020 Але мы павінны выканаць некаторыя Сартаваць падвойнага дзялення. 347 00:19:18,020 --> 00:19:20,600 І гэта будзе надзвычай важна, калі 348 00:19:20,600 --> 00:19:24,140 мы хочам, каб выканаць гэтую аперацыю, таму што тое, што мы гаворым, 349 00:19:24,140 --> 00:19:28,430 з'яўляецца тое, што мы на самай справе трэба выконваць дзяленне на два двухмесных. 350 00:19:28,430 --> 00:19:31,370 І зноў, таму што Свіфт вельмі моцна набралі, 351 00:19:31,370 --> 00:19:36,760 мы павінны відавочна ўсталяваць ўсе прадметы ў парным разрадзе, перш чым мы на самай справе 352 00:19:36,760 --> 00:19:38,300 выканаць гэтую аперацыю. 353 00:19:38,300 --> 00:19:40,550 >> Так для таго, каб нас выконваць двайную падзел, 354 00:19:40,550 --> 00:19:43,730 гэта не дастаткова толькі для аднаго з тых пунктаў, якія будуць у два разы. 355 00:19:43,730 --> 00:19:46,400 Абодва з іх павінны быць двойчы для таго, каб хуткім 356 00:19:46,400 --> 00:19:50,860 каб пераканацца, што гэта гэта тое, што мы хочам зрабіць. 357 00:19:50,860 --> 00:19:54,360 Такім чынам, мы тады відавочна прывядзенне сума, якую мы вылічаецца вышэй 358 00:19:54,360 --> 00:19:58,970 і колькасць гатункаў да падвойваецца, і затым выканаць гэтую аперацыю і крама 359 00:19:58,970 --> 00:20:02,390 што ў гэтым новым зменнай, або, хутчэй, гэта новая пастаянная называецца сярэднім 360 00:20:02,390 --> 00:20:06,810 якія будуць мець які тып, вы ўяўляеце? 361 00:20:06,810 --> 00:20:07,587 Двухмесны, так. 362 00:20:07,587 --> 00:20:09,420 Такім чынам, у гэтым выпадку, мы ня трэба паказваць яго 363 00:20:09,420 --> 00:20:13,450 таму што гэта можа быць выведзена з праца, які тып дадзеных у сярэднім 364 00:20:13,450 --> 00:20:14,730 будзе. 365 00:20:14,730 --> 00:20:19,025 І Свіфт правіла, вельмі добра аб тым, у стане вывесці тыпы. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> Вы хочаце, каб гэта бегчы, ці я магу рухацца далей? 368 00:20:24,200 --> 00:20:25,640 Я хачу, каб працягваць ісці. 369 00:20:25,640 --> 00:20:28,130 Любыя пытанні па любой з гэтага? 370 00:20:28,130 --> 00:20:28,630 Выдатна. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Цяпер мы збіраемся, каб пачаць, каб дабрацца да добрыя stuff-- якія вызначаюць функцыі, 373 00:20:35,010 --> 00:20:39,090 і некалькі іншых тыпаў, якія унікальным для Swift, што ў вас няма 374 00:20:39,090 --> 00:20:41,620 відаць на іншых мовах да гэтага моманту, 375 00:20:41,620 --> 00:20:46,290 але яны прысутнічаюць у іншым мовы, якія вы маглі б знайсці пазней. 376 00:20:46,290 --> 00:20:48,210 Такім чынам, спачатку, калі вы хочаце вызначыць функцыю, 377 00:20:48,210 --> 00:20:52,170 Вы вызначаеце яго з фанкі словы Функцыя, а затым імя функцыі, 378 00:20:52,170 --> 00:20:56,710 а затым у дужках, аргументы што вы хочаце, каб функцыя прыняць. 379 00:20:56,710 --> 00:21:00,280 Аргументы павінны таксама specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 неабходна таксама пазначыць тып дадзеных, якія яны, калі яны не могуць быць выпадковымі. 381 00:21:05,010 --> 00:21:07,500 І мы ўбачым, што крыху перасцярога ў толькі крыху. 382 00:21:07,500 --> 00:21:09,920 >> Такім чынам, у гэтым выпадку ў нас ёсць Функцыя называецца printGradeCount. 383 00:21:09,920 --> 00:21:12,840 Мы збіраемся прыняць переменная-- ці, хутчэй, у дадзеным выпадку, 384 00:21:12,840 --> 00:21:14,450 constant-- называецца заліковую кніжку. 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 але, верагодна, не, што ні адзін вы бачылі ў CS50. 420 00:23:15,674 --> 00:23:17,090 Але да гэтага часу не бянтэжцеся гэтым. 421 00:23:17,090 --> 00:23:21,650 Стрэлка азначае, што адбываецца павінны быць вернутыя ў гэтым выпадку. 422 00:23:21,650 --> 00:23:23,650 Такім чынам, як мы збіраемся вылічыць гэта сярэдняе? 423 00:23:23,650 --> 00:23:25,649 Ну, калі заліковую кніжку пусты, а затым мы 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 Дадзены AMRMENDARIZ: Ці можаце вы паўтарыць гэтае пытанне? 449 00:24:37,520 --> 00:24:39,587 АЎДЫТОРЫЯ: Ці магу я зрабіць лік як сярэдняе? 450 00:24:39,587 --> 00:24:41,670 Дадзены AMRMENDARIZ: Ці можаце вы зрабіць цэлае, як у сярэднім? 451 00:24:41,670 --> 00:24:45,015 Так вяртаюць цэлы лік, Сярэдняя замест двайны? 452 00:24:45,015 --> 00:24:48,204 >> АЎДЫТОРЫЯ: Return-- вас ёсць, што цяпер ніжэй. 453 00:24:48,204 --> 00:24:49,870 Дадзены AMRMENDARIZ: Прама тут, вярнуцца 0.0? 454 00:24:49,870 --> 00:24:51,790 АЎДЫТОРЫЯ: Так, проста вярнуць 0. 455 00:24:51,790 --> 00:24:56,590 Дык гэта будзе альбо 80 або 85, але не 85,2. 456 00:24:56,590 --> 00:24:59,465 >> Дадзены AMRMENDARIZ: Такім чынам, у гэтым выпадку, так што пару розныя спосабы 457 00:24:59,465 --> 00:25:00,090 адказаць на гэта. 458 00:25:00,090 --> 00:25:02,760 Дазвольце мне адказаць на іх у парадку. 459 00:25:02,760 --> 00:25:06,740 Так што, калі я проста зрабіць гэта вяртанне 0, а 0 з'яўляецца цэлым лікам. 460 00:25:06,740 --> 00:25:09,730 І так, што выкліча Памылка тыпу ў гэтым выпадку 461 00:25:09,730 --> 00:25:13,210 таму што ён чакаў двайны але затым вяртаюцца цэлае. 462 00:25:13,210 --> 00:25:16,770 Калі я хачу, каб вяртаць цэлы лік, я магу. 463 00:25:16,770 --> 00:25:20,450 Я магу ўсталяваць тып якое вяртаецца у цэлае, вярнуцца сюды 0, 464 00:25:20,450 --> 00:25:22,047 і не выконваюць двайную дзяленне. 465 00:25:22,047 --> 00:25:23,880 Але тады мы былі б робіць цэлае падраздзяленне. 466 00:25:23,880 --> 00:25:27,080 І так мы тады не атрымалі б Сярэдняя што мы, магчыма, чакалі. 467 00:25:27,080 --> 00:25:29,210 Але так, мы можам змяніць тыпы такім чынам. 468 00:25:29,210 --> 00:25:32,598 >> АЎДЫТОРЫЯ: А па-другое, вам ёсць адзін двайны на вяршыні. 469 00:25:32,598 --> 00:25:35,502 Але ўнізе, калі вам зрабіць вярнуцца двайны двайны, 470 00:25:35,502 --> 00:25:38,280 што ўжо аўтаматычна вяртанне падвойным фармаце. 471 00:25:38,280 --> 00:25:42,278 Чаму вы ўсё яшчэ павінны вызначыць яго са стрэлкай на вяршыні з двайны? 472 00:25:42,278 --> 00:25:45,010 >> Дадзены AMRMENDARIZ: Так У выпадку, гэта частка 473 00:25:45,010 --> 00:25:50,580 з the-- так, каб паўтарыць пытанне, таму што гэта невідавочнае ад вяртання 474 00:25:50,580 --> 00:25:56,030 тыпы тут, тое, што гэта на самай справе тып , Мы павінны быць дакладна з Свіфт 475 00:25:56,030 --> 00:25:59,970 пра тое, што мы хочам, каб вярнуцца з гэтай функцыі 476 00:25:59,970 --> 00:26:02,690 так што, калі ён выконвае тып праверкі, ён можа пераканацца, што 477 00:26:02,690 --> 00:26:05,850 што тое, што мы на самай справе напісана унізе на самай справе адпавядае гэтаму. 478 00:26:05,850 --> 00:26:10,225 Так што гэта накшталт як праверкі з самім сабой свайго роду сітуацыі. 479 00:26:10,225 --> 00:26:11,050 Але are-- 480 00:26:11,050 --> 00:26:12,560 >> АЎДЫТОРЫЯ: [неразборліва] стрэлка? 481 00:26:12,560 --> 00:26:19,490 >> Дадзены AMRMENDARIZ: Ёсць выпадкі, калі мы можам паказаць, што мы можам няяўна 482 00:26:19,490 --> 00:26:21,550 ўсталяваць тып якое вяртаецца значэння. 483 00:26:21,550 --> 00:26:23,940 Але ў гэтым выпадку, я не думаю, што будзе працаваць. 484 00:26:23,940 --> 00:26:26,190 Там нейкая іншая сінтаксіс што мы ўбачым пазней. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> Добра, так што гэта крыніца код трохі адрозніваецца 487 00:26:35,280 --> 00:26:41,839 таму што гэта разбірае аргументы з функцыя, мы называем. 488 00:26:41,839 --> 00:26:44,130 Дазвольце мне паказаць вам, як гэта працуе перш, чым мы на самай справе рухацца далей 489 00:26:44,130 --> 00:26:48,050 у некаторых цікавых рэчаў што адбываецца ў Swift. 490 00:26:48,050 --> 00:26:51,870 >> Такім чынам, у гэтым выпадку, калі я проста запусціце гэты Код, заўважыць, што тое, што ён робіць 491 00:26:51,870 --> 00:26:54,900 is-- у той час, гэта свайго роду дае мне дзіўныя памылкі. 492 00:26:54,900 --> 00:26:59,730 Мне трэба, каб перадаць ёй пару цэлыя як аргумент каманднага радка. 493 00:26:59,730 --> 00:27:06,220 Такім чынам, давайце паглядзім, 150 і 80, і ціснем Enter каб высветліць, што гэта на самай справе робіць. 494 00:27:06,220 --> 00:27:09,890 Гэта прыняцце кожнай з гэтыя значэння як цэлыя лікі. 495 00:27:09,890 --> 00:27:12,040 Гэта ўводу іх у заліковую кніжку. 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 >> Але гэта свайго роду дзіўны сінтаксіс, калі дазволіць адзнака роўная Int (аргумент). 514 00:28:18,140 --> 00:28:21,120 Што на самой справе адбываецца тут надзвычай 515 00:28:21,120 --> 00:28:24,390 важна, каб ваш выкарыстаннем Swift. 516 00:28:24,390 --> 00:28:27,610 Гэта тое, што з дапамогай называецца дадатковы тып. 517 00:28:27,610 --> 00:28:34,790 >> Такім чынам, гэта функцыя, Int (аргумент), вяртае не толькі цэлы лік, а вяртаецца 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 >> АЎДЫТОРЫЯ: Ніл з'яўляецца N-я-L? 546 00:30:09,652 --> 00:30:11,110 Дадзены AMRMENDARIZ: нуль з'яўляецца N-я-Л, так. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> Так што гэта, магчыма, адзін з цяжкія рэчы пра Swift, 549 00:30:20,310 --> 00:30:23,690 асабліва, калі вы знаходзіцеся ў пустазелле на дадатак IOS 550 00:30:23,690 --> 00:30:27,442 і вы на самой справе спрабуе зрабіць некаторыя распрацоўкі ёсць. 551 00:30:27,442 --> 00:30:29,400 Гэта будзе крычаць ў вас аб неабавязковай. 552 00:30:29,400 --> 00:30:33,050 Гэта будзе прасіць вас за пытальнікі і клічнікі. 553 00:30:33,050 --> 00:30:37,100 Але як толькі вы зразумееце out-- калі вы прысвяціць некаторы час, каб высветліць, 554 00:30:37,100 --> 00:30:41,990 што адбываецца з дадатковымі відамі, Вы зэканоміце шмат галаўнога болю 555 00:30:41,990 --> 00:30:46,040 як вы спрабуеце напісаць прыкладанне ў Swift. 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 Адным з іх з'яўляецца слоўнікі, які вельмі падобны на Python слоўнікаў. 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 так pset0, можа быць, я атрымаў 100. 582 00:32:18,490 --> 00:32:20,790 І pset1, я атрымаў 5. 583 00:32:20,790 --> 00:32:24,630 І тады на экзамене, я зрабіў вельмі добра, і атрымаў 30. 584 00:32:24,630 --> 00:32:27,180 І ой, я ўдарыў прастора тут. 585 00:32:27,180 --> 00:32:30,940 >> Калі я трапіў Enter, вы можаце ўбачыць ён выконвае некаторыя вылічэнні. 586 00:32:30,940 --> 00:32:33,740 Гэта кажа заліковую кніжку ў тры гатункаў, pset1, pset0, іспыт. 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 Гэта не тое, што Вы будзеце выкарыстоўваць у IOS прыкладанне. 595 00:32:56,530 --> 00:32:59,750 Гэта толькі ў гэтым выпадку, з аргументам каманднага радка. 596 00:32:59,750 --> 00:33:01,990 Далей мы пачнем рухацца ў бок Xcode. 597 00:33:01,990 --> 00:33:07,760 Але гэта ставіцца толькі да каманды Праграма Стыль лініі ў Swift. 598 00:33:07,760 --> 00:33:11,490 >> Давайце зірнем на некаторыя з цікавыя рэчы тут. 599 00:33:11,490 --> 00:33:15,150 Давайце паглядзім, толькі пару цікавыя рэчы кажучы, магчыма, 600 00:33:15,150 --> 00:33:19,930 з'яўляецца тое, што ў маёй функцыі друку колькасць гатункаў, 601 00:33:19,930 --> 00:33:26,090 Вы маглі б успомніць, што ў мяне гэты спіс з items-- pset1, pset0, і іспыт. 602 00:33:26,090 --> 00:33:29,130 Вы можаце на самой справе хутка і лёгка зрабіць гэта 603 00:33:29,130 --> 00:33:34,490 узяўшы заліковую кніжку, якая з'яўляецца Слоўнікі, якая мае ключы і значэння. 604 00:33:34,490 --> 00:33:38,730 Знайсці ўсе клавішы праз метад ключы кропка тут, 605 00:33:38,730 --> 00:33:43,180 а затым выкарыстоўваць гэтую joinWithSeparator, якія будуць затым усё ключы 606 00:33:43,180 --> 00:33:48,590 што мы ўвялі ў, pset1-- або прабачце, pset0, pset1 і exam-- 607 00:33:48,590 --> 00:33:53,030 і аб'яднаць іх разам праз коску і прабел 608 00:33:53,030 --> 00:33:55,400 каб стварыць адну доўгую радок. 609 00:33:55,400 --> 00:34:00,190 Гэта аперацыя зліцця проста фенаменальна карысна ў розных кантэкстах. 610 00:34:00,190 --> 00:34:03,450 І так гэта joinWithSeparator. 611 00:34:03,450 --> 00:34:06,939 >> І гэта адна рэч, якая змяняецца ад 1 да Swift Swift 2. 612 00:34:06,939 --> 00:34:08,730 Там калісьці Python style-- калі вы 613 00:34:08,730 --> 00:34:13,219 знаёмыя з Python-- пітона стыль далучыцца метад на радках. 614 00:34:13,219 --> 00:34:15,699 Але, што больш ня у выпадку Swift 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 >> Ну, можа быць, у C вы зрабілі б нешта 624 00:34:46,350 --> 00:34:50,040 як прадугледжана значэнне дазорнай, як 0.0, або, можа быць адмоўным лікам, 625 00:34:50,040 --> 00:34:53,690 або што-то проста, які ўяўляе той факт, што існуе некаторы стан памылкі 626 00:34:53,690 --> 00:34:57,910 і вы, магчыма, на самай справе не маюць здольнасць вылічыць, што ў сярэднім. 627 00:34:57,910 --> 00:35:05,590 Ну прыгажосць паказаўшы дадатковы тып будзе гэта рабіць. 628 00:35:05,590 --> 00:35:09,540 І я цяпер гавораць усе гэтыя словы, але гэта на самай справе не выкарыстоўваць АБСТАЛЯВАННЯ. 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 Але на самой справе тое, што вы збіраецеся каб мець справу з з'яўляецца Xcode. 638 00:35:39,470 --> 00:35:43,720 І адна з добрых рэчаў аб Xcode з'яўляецца, і ў прыватнасці, у Swift, 639 00:35:43,720 --> 00:35:47,450 з'яўляецца тое, што ў нас ёсць гэта што называецца дзіцячая пляцоўка. 640 00:35:47,450 --> 00:35:51,470 І гэта пляцоўка зусім не прыкладанне IOS. 641 00:35:51,470 --> 00:35:54,751 Але гэта дазваляе эксперыментаваць з Свіфт ў вельмі просты спосаб. 642 00:35:54,751 --> 00:35:56,000 Вы можаце ўвесці увесь код. 643 00:35:56,000 --> 00:35:58,140 Гэта прыгожа з падсветкай сінтаксісу тут. 644 00:35:58,140 --> 00:36:01,600 Пры стварэнні новага файла, ён будзе прасіць Вы, калі вы хочаце стварыць Экспазіцыя. 645 00:36:01,600 --> 00:36:08,720 Але добрая рэч аб пляцоўка з'яўляецца тое, што ў правай частцы акна, 646 00:36:08,720 --> 00:36:12,020 гэта на самай справе паказаць вам, Выхад з вашага кода. 647 00:36:12,020 --> 00:36:16,110 Так што, калі я пракруціць ўніз, мы можам бачыць, што выхад розных радкоў кода 648 00:36:16,110 --> 00:36:17,200 на самай справе адбываецца, каб быць. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> Такім чынам, у гэтым выпадку, мы збіраемся Змяненне напрамкі толькі крыху 651 00:36:26,790 --> 00:36:30,960 і казаць пра нешта, што сапраўды Важна гэтую высокую чынам ўзроўню 652 00:36:30,960 --> 00:36:34,020 што Свіфт працуе, і яго гэтая ідэя замыканняў. 653 00:36:34,020 --> 00:36:36,960 І вы, напэўна, бачылі гэта трохі ў JavaScript. 654 00:36:36,960 --> 00:36:40,770 Для тых з вас, у CS50, замкі 655 00:36:40,770 --> 00:36:47,240 вельмі папулярныя, вельмі добры спосаб зрабіць рэчы высокага ўзроўню ў сучасных мовах. 656 00:36:47,240 --> 00:36:50,270 Але гэта таксама свайго роду цяжка абгарнуць вакол галавы ў першы раз. 657 00:36:50,270 --> 00:36:52,269 Так што калі вы шукаеце на гэта першы раз, гэта нармальна. 658 00:36:52,269 --> 00:36:56,740 Проста паглядзіце на зыходны код і паглядзець, калі вы можаце зразумець гэта ў сябе дома. 659 00:36:56,740 --> 00:37:01,050 >> Такім чынам, у гэтым выпадку, давайце скажам, што мы хочаце стварыць шмат індэксаў 660 00:37:01,050 --> 00:37:04,134 з некаторым фіксаваных значэннем. 661 00:37:04,134 --> 00:37:05,800 Такім чынам, у гэтым выпадку я магу стварыць функцыю. 662 00:37:05,800 --> 00:37:09,270 Я буду называць яго магутнасць 2 чыя адзіная мэта ў жыцці 663 00:37:09,270 --> 00:37:15,770 гэта зойме некаторы ўваход і двойчы гэта, і вярнуць гэта значэнне. 664 00:37:15,770 --> 00:37:21,210 Звярніце ўвагу, што тут я прымаючы адзін тып дадзеных. 665 00:37:21,210 --> 00:37:23,137 Гэта будзе пераменная называецца х. 666 00:37:23,137 --> 00:37:23,970 Гэта тыпу Double. 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 Усё астатняе аб гэтых двух функцыі, сіла і ўлада сакавіка 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 даволі важна для Swift. 703 00:39:20,310 --> 00:39:22,900 Мы бачым гэта ўвесь час. 704 00:39:22,900 --> 00:39:24,550 Мы збіраемся, каб вызначыць функцыю. 705 00:39:24,550 --> 00:39:26,380 Гэта будзе называцца powerOf. 706 00:39:26,380 --> 00:39:29,470 Гэта збіраецца прыму ў параметр, званы ў тыпу Int. 707 00:39:29,470 --> 00:39:32,220 Але зірніце на тып вяртання. 708 00:39:32,220 --> 00:39:38,730 Які вяртаецца тып, у дужкі, Двухмесны падвойную стрэлку. 709 00:39:38,730 --> 00:39:43,370 Гэта азначае, што гэтай функцыі, гэтая функцыя powerOf, 710 00:39:43,370 --> 00:39:46,550 вяртаецца функцыю. 711 00:39:46,550 --> 00:39:50,845 Гэта прымае двайную і вяртанне ў два разы. 712 00:39:50,845 --> 00:39:53,720 Так што можа здацца роду вар'ятам, але давайце пракруціць ўніз трохі 713 00:39:53,720 --> 00:39:55,060 і паглядзіце, што адбываецца. 714 00:39:55,060 --> 00:39:57,910 Мы ўнутры гэтай функцыі powerOf. 715 00:39:57,910 --> 00:40:00,760 Мы ствараем новую функцыю называецца exponentiator, 716 00:40:00,760 --> 00:40:02,900 але гэта не мае значэння, што гэта такое. 717 00:40:02,900 --> 00:40:06,410 >> Звярніце ўвагу, што гэта мае уваходнае значэнне х. 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 быў першапачатковы параметр нашай функцыі powerOf. 723 00:40:27,230 --> 00:40:31,700 І ў гэты момант, мы вярнуцца exponentiator. 724 00:40:31,700 --> 00:40:33,345 Мы вяртаемся з функцыі. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> Гэта накшталт як трохі страшэнна. 727 00:40:39,550 --> 00:40:44,360 Але давайце прадставім, што адбываецца калі я выклікаць гэтую функцыю powerOf 728 00:40:44,360 --> 00:40:47,610 і перадаць у яго некаторы значэнне, як 2. 729 00:40:47,610 --> 00:40:50,020 Што гэта азначае, што Цяпер у мяне ёсць значэнне 730 00:40:50,020 --> 00:40:55,130 2 пры у, што азначае, што гэта значэнне у гэтай функцыі exponentiator 731 00:40:55,130 --> 00:40:56,410 будзе тое, што значэнне 2. 732 00:40:56,410 --> 00:41:01,290 Але я вяртаюся гэта Функцыя exponentiator. 733 00:41:01,290 --> 00:41:05,900 >> Так заўважаць, што Свіфт кажа, што я стварылі ў гэтым выпадку. 734 00:41:05,900 --> 00:41:10,550 хай квадрат вызначэнне, гэта гэта функцыя, якая прымае двайную 735 00:41:10,550 --> 00:41:12,610 і вяртае ў два разы. 736 00:41:12,610 --> 00:41:16,590 Я стварыў функцыю нешта квадратаў 737 00:41:16,590 --> 00:41:19,782 з дапамогай гэтага механізму прама тут. 738 00:41:19,782 --> 00:41:22,490 І на самай справе, што адбываецца па-за што яна вяртаецца гэтую функцыю 739 00:41:22,490 --> 00:41:26,390 exponentiator, але гэта значэнне у абгорнутая ўнутры яго. 740 00:41:26,390 --> 00:41:31,080 І вось цяпер кожны раз, калі я выкарыстоўваю гэта пераменная або канстанта называецца гэта 741 00:41:31,080 --> 00:41:35,180 квадрат, то гэта будзе паводзіць сябе як функцыі. 742 00:41:35,180 --> 00:41:39,960 І таму я магу назваць тое, што пераменная як я б выклікаць функцыю, 743 00:41:39,960 --> 00:41:43,830 і перадаць у яго шэраг, як у дадзеным выпадку 3. 744 00:41:43,830 --> 00:41:45,910 І я тады квадрат гэтага значэння. 745 00:41:45,910 --> 00:41:53,340 То так будзе квадрат 3 стаць 9, як мы бачым тут. 746 00:41:53,340 --> 00:41:56,530 >> Сапраўды з розуму, але гэта цяпер дазваляе мне магчымасць 747 00:41:56,530 --> 00:41:59,040 ствараць іншыя функцыі powerOf. 748 00:41:59,040 --> 00:42:03,680 Як я магу сказаць, добра, добра цяпер я хачу каб стварыць новую функцыю, powerOf (3), 749 00:42:03,680 --> 00:42:06,290 і захоўваць, што ў пастаянная называецца куб. 750 00:42:06,290 --> 00:42:10,220 А цяпер куб будзе асобная функцыя, якая будзе затым 751 00:42:10,220 --> 00:42:14,800 заняць некаторы значэнне ў якасці ўваходных дадзеных і куба, Значэнне, як мы можам бачыць у ніжняй радку 752 00:42:14,800 --> 00:42:16,420 тут. 753 00:42:16,420 --> 00:42:18,590 куб 2 будзе прыводзіць у 8. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> Спадзяюся, даволі акуратныя рэчы. 756 00:42:22,680 --> 00:42:25,920 Вы ніколі не бачылі гэта раней. 757 00:42:25,920 --> 00:42:29,990 Я заклікаю вас, каб паглядзець у закрыццё і даследаваць гэта крыху больш. 758 00:42:29,990 --> 00:42:33,570 Гэта сапраўды магутная штука, мы бачым шмат у JavaScript і некаторых іншых мовах. 759 00:42:33,570 --> 00:42:37,160 Гэта сапраўды важна для разуменне API, а таксама 760 00:42:37,160 --> 00:42:38,620 што мы атрымаем у толькі секунды. 761 00:42:38,620 --> 00:42:39,456 Да? 762 00:42:39,456 --> 00:42:43,740 >> АЎДЫТОРЫЯ: Калі вы робіце powerOf (2), дужка, а затым 763 00:42:43,740 --> 00:42:48,764 іншы дужкі, іншы input-- Вы ў асноўным замяніў квадрат. 764 00:42:48,764 --> 00:42:50,930 Дадзены AMRMENDARIZ: Так што глядзіце ў самы апошні лініі тут. 765 00:42:50,930 --> 00:42:55,930 Гэта на самай справе цалкам можна зрабіць ланцужок, як Вы прапанавалі. 766 00:42:55,930 --> 00:43:00,990 Так powerOf (5) азначае, што мы збіраемся мець exponentiator з 5 тут. 767 00:43:00,990 --> 00:43:04,160 Так што гэта, па сутнасці, стане Тое ж самае як 4 у пятай ступені, 768 00:43:04,160 --> 00:43:07,200 таму што мы стварылі потенцируя функцыянаваць у пятай ступені, 769 00:43:07,200 --> 00:43:09,920 і мы перадаем у што функцыянаваць значэнне 4. 770 00:43:09,920 --> 00:43:12,619 І мы атрымліваем, што значэнне што мы чакаем, 1024. 771 00:43:12,619 --> 00:43:14,785 АЎДЫТОРЫЯ: І гэта не назавеце, так яна лягчэй 772 00:43:14,785 --> 00:43:16,570 чытаць, плошча незалежна. 773 00:43:16,570 --> 00:43:17,903 >> Дадзены AMRMENDARIZ: справа, дакладна. 774 00:43:17,903 --> 00:43:21,120 Таму, перш чым я проста пакласці яго у пастаяннай вось так 775 00:43:21,120 --> 00:43:23,808 што ён зрабіў гэта лёгка выкарыстоўваць гэтае імя. 776 00:43:23,808 --> 00:43:24,308 Да? 777 00:43:24,308 --> 00:43:26,942 >> АЎДЫТОРЫЯ: У гэтым кантэксце powerOf, гэта частка 778 00:43:26,942 --> 00:43:30,774 мовы праграмавання у адрозненне ад вас, як 779 00:43:30,774 --> 00:43:33,952 думаць пра powerOf ў [неразборліва]? 780 00:43:33,952 --> 00:43:35,660 Дадзены AMRMENDARIZ: Так У гэтым выпадку, powerOf 781 00:43:35,660 --> 00:43:39,280 гэта проста назва з функцыя, я вызначыў тут. 782 00:43:39,280 --> 00:43:41,801 Так што гэта не ўласціва на самай мове, 783 00:43:41,801 --> 00:43:43,550 але замест гэтага, гэта проста гэта функцыя, якая мае 784 00:43:43,550 --> 00:43:45,628 што імя, таму што я даю яму гэтае імя. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 Любыя іншыя пытанні? 787 00:43:51,920 --> 00:43:52,800 Добра. 788 00:43:52,800 --> 00:43:54,750 >> Зараз гэта выдатна. 789 00:43:54,750 --> 00:43:58,170 Але вы не збіраецеся, каб убачыць Шмат функцый замыканне, 790 00:43:58,170 --> 00:44:03,440 , Як гэта, дзе вы вызначаеце, унутры адной функцыі, іншы функцыі. 791 00:44:03,440 --> 00:44:04,320 І вы можаце зрабіць гэта. 792 00:44:04,320 --> 00:44:06,430 Але гэта, здаецца, не сапраўды неабходна, ці не так? 793 00:44:06,430 --> 00:44:09,189 Як, чаму я вызначыць гэта Функцыя называецца exponentiator 794 00:44:09,189 --> 00:44:10,480 а затым адразу ж вярнуць яго. 795 00:44:10,480 --> 00:44:15,220 Чаму я не магу проста адразу вярнуцца гэтую функцыю? 796 00:44:15,220 --> 00:44:18,890 >> І на самай справе, гэта менавіта ідэя канцэпцыі называецца 797 00:44:18,890 --> 00:44:22,410 ананімныя функцыі, дзе ананімныя функцыі на самай справе не 798 00:44:22,410 --> 00:44:25,270 ёсць імя, таму што яны ня трэба ёсць. 799 00:44:25,270 --> 00:44:28,700 І таму ў дадзеным выпадку, у 7В, мы можам знайсці менавіта гэта. 800 00:44:28,700 --> 00:44:31,470 Гэта ўсё той жа код, робіць тое ж самае, 801 00:44:31,470 --> 00:44:35,570 але зараз мы змянілі яго крыху, такім чынам што гэтая функцыя неадкладна powerOf 802 00:44:35,570 --> 00:44:37,750 вяртае функцыю. 803 00:44:37,750 --> 00:44:44,150 Звярніце ўвагу, што пасля вяртання, ёсць адкрытая фігурная дужка. 804 00:44:44,150 --> 00:44:46,410 Гэта чакаючы гэты ўваход Падвойны. 805 00:44:46,410 --> 00:44:48,560 Гэта чакаючы, што выхад Double. 806 00:44:48,560 --> 00:44:52,175 І тады ў ключавое слова аддзяляе сам код. 807 00:44:52,175 --> 00:44:53,550 Так што гэта ананімная функцыя. 808 00:44:53,550 --> 00:44:57,030 Гэта на самай справе не мае назвы, у той час як перш чым ён быў названы exponentiator. 809 00:44:57,030 --> 00:45:00,229 Але, як мы бачылі, на самай справе проста не адносяцца да exponentiator 810 00:45:00,229 --> 00:45:01,270 за межамі гэтай функцыі. 811 00:45:01,270 --> 00:45:02,470 Так што не мае значэння. 812 00:45:02,470 --> 00:45:06,300 Так што гэта ананімная функцыя з'яўляецца так званы, таму што гэта безназоўны, 813 00:45:06,300 --> 00:45:09,107 але ён па-ранейшаму выкарыстоўваецца У кантэксце дадзенага кода. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> Наступныя пару тыя, якія я збіраецца працягнуць спадзяюся, 816 00:45:16,079 --> 00:45:17,370 дзьме ваш розум трохі. 817 00:45:17,370 --> 00:45:20,410 Мы можам спрасціць гэта нават больш. 818 00:45:20,410 --> 00:45:24,490 Таму што, як было пранікліва адзначалася раней, 819 00:45:24,490 --> 00:45:29,100 магчыма, мы на самай справе ведаем, па вывядзенне з гэтага кода, тое, што 820 00:45:29,100 --> 00:45:31,750 выхад гэтага кода будзе. 821 00:45:31,750 --> 00:45:38,180 І на самай справе, у гэтым ананімнай функцыі, мы можам зрабіць выснову, на самай справе тыпы дадзеных. 822 00:45:38,180 --> 00:45:41,650 >> Так што ў гэтым, мы больш не неабходна відавочна вызначыць 823 00:45:41,650 --> 00:45:44,850 тып дадзеных, які з'яўляецца ўваход і выхад з гэтай функцыі 824 00:45:44,850 --> 00:45:45,890 на працягу некалькіх прычын. 825 00:45:45,890 --> 00:45:51,390 Адным з іх з'яўляецца, што мы вызначылі, да на Прататып функцыі ўключэння, 826 00:45:51,390 --> 00:45:55,770 які тып дадзеных гэтага ананімных функцыя павінна ўваход і выхад. 827 00:45:55,770 --> 00:45:57,900 І з другога боку, мы можа вывесці з кода 828 00:45:57,900 --> 00:46:01,930 сюды, што мы прымаем ўваход, які мае тып двайны 829 00:46:01,930 --> 00:46:03,670 і вяртанне ў два разы. 830 00:46:03,670 --> 00:46:07,890 >> Звярніце ўвагу, што тут мы маем відавочна не вызначаны імёны аргументаў 831 00:46:07,890 --> 00:46:11,220 што гэтая функцыя прымае. 832 00:46:11,220 --> 00:46:16,180 І так мы бачым, мы можам звярнуцца да гэтыя параметры, выкарыстоўваючы $ 0, $ 1, 833 00:46:16,180 --> 00:46:20,140 гэтак далей, і гэтак далей, у залежнасці ад колькасць гэтага параметру выкарыстоўваецца 834 00:46:20,140 --> 00:46:20,850 у гэтай функцыі. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> Гэта тое, што вы збіраецеся каб убачыць шмат гэта адкрытая фігурная дужка 837 00:46:29,740 --> 00:46:32,797 Вызначэнне суправаджаны $ 0, а затым некаторыя аперацыі, 838 00:46:32,797 --> 00:46:34,130 а затым закрытая дужка. 839 00:46:34,130 --> 00:46:38,630 Гэта ананімная функцыя які выконвае гэтую аперацыю. 840 00:46:38,630 --> 00:46:42,940 Ён мае гэты параметр дзе гэта тып выводзіцца. 841 00:46:42,940 --> 00:46:44,860 Гэта першы параметр $ 0. 842 00:46:44,860 --> 00:46:49,010 І некаторыя аперацыі адбываецца на тым, што $ 0. 843 00:46:49,010 --> 00:46:52,100 >> АЎДЫТОРЫЯ: Так знак даляра азначае параметр у асноўным, 844 00:46:52,100 --> 00:46:53,429 і 0 азначае першы? 845 00:46:53,429 --> 00:46:54,720 Дадзены Armendariz: Гэта правільна. 846 00:46:54,720 --> 00:46:59,100 Такім чынам, знак даляра ў асноўным азначае, параметр, 0 азначае першы. 847 00:46:59,100 --> 00:47:02,760 Але гэта працуе менавіта ў гэта выпадак, калі я не назваў 848 00:47:02,760 --> 00:47:07,940 аргументы ў маёй ананімнай функцыі. 849 00:47:07,940 --> 00:47:11,119 >> АЎДЫТОРЫЯ: Ці мае Perl ці нешта ёсць гэта знак даляра, даляр 0 там? 850 00:47:11,119 --> 00:47:12,702 Дадзены Armendariz: Ці ёсць, якія, прабачце ,? 851 00:47:12,702 --> 00:47:15,360 АЎДЫТОРЫЯ: Ці ёсць у Perl гэта долар 0, даляр 1-- 852 00:47:15,360 --> 00:47:17,318 Дадзены Armendariz: Я не занадта добра знаёмыя з Perl, 853 00:47:17,318 --> 00:47:21,340 але тое, што вызначае PHP зменныя на аснове даляравых знакаў. 854 00:47:21,340 --> 00:47:26,120 І можа быць у некаторых мовах якія маюць такія функцыі, як гэта. 855 00:47:26,120 --> 00:47:28,240 На самай справе, Свіфт запазычвае шмат магчымасцяў, як гэта 856 00:47:28,240 --> 00:47:29,489 ад многіх іншых мовах. 857 00:47:29,489 --> 00:47:32,380 Мы бачым намёкі Python ў ім. 858 00:47:32,380 --> 00:47:35,800 Гэта вызначэнне тыпу здаецца, прыбывае з OCaml. 859 00:47:35,800 --> 00:47:38,932 І ў нас ёсць толькі цэлую кучу матэрыял ад многіх розных мовах. 860 00:47:38,932 --> 00:47:40,640 Гэта адна з добра рэчы, пра Swift 861 00:47:40,640 --> 00:47:43,390 з'яўляецца тое, што яна займае шмат з лепшых ідэі з кучай моў 862 00:47:43,390 --> 00:47:47,229 і shoehorns іх усё разам у адзін супер мову. 863 00:47:47,229 --> 00:47:49,520 На самай справе, калі вы дазволіце мне працягваць дзьмуць ваш розум, 864 00:47:49,520 --> 00:47:51,000 такім чынам, мы рабілі ўсё гэта. 865 00:47:51,000 --> 00:47:56,690 Мы, магчыма, можа спрасціць гэта крыху трохі, разумеючы, што, вядома, 866 00:47:56,690 --> 00:48:02,120 Свіфт мае экспаненту Убудаваная функцыя ст. 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, што мае тып Double. 875 00:48:29,320 --> 00:48:32,680 Гэта будзе вяртаць тып Double. 876 00:48:32,680 --> 00:48:35,760 Але вяртанне заяву Цяпер няяўныя. 877 00:48:35,760 --> 00:48:39,990 >> І менавіта гэта дакладнае стыль, які вельмі, вельмі распаўсюджаныя ў Swift, 878 00:48:39,990 --> 00:48:40,790 паўсюдна. 879 00:48:40,790 --> 00:48:43,190 Мы збіраемся, каб убачыць гэта увесь час у Swift. 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 але мы можам пайсці яшчэ больш шалёна з Swift. 895 00:49:27,455 --> 00:49:28,560 Вы гатовыя? 896 00:49:28,560 --> 00:49:29,930 ОК, гэта выдатна. 897 00:49:29,930 --> 00:49:35,310 >> Цяпер мы на самай справе маюць магчымасць каб у Swift, таму што, як модульная 898 00:49:35,310 --> 00:49:39,650 і як пратакол на аснове гэта, каб вызначыць нашы ўласныя дзяўбаць аператараў. 899 00:49:39,650 --> 00:49:44,060 Як і ў гэтым выпадку, мы не мелі аператар exponentiation-- добра, 900 00:49:44,060 --> 00:49:47,990 для выканання паўнамоцтваў нешта. 901 00:49:47,990 --> 00:49:53,632 Але я магу, у Свіфта, вызначыць новую Аператар, які робіць менавіта гэта. 902 00:49:53,632 --> 00:49:55,590 Такім чынам, у гэтым выпадку ёсць куча сінтаксісу тут. 903 00:49:55,590 --> 00:49:59,980 І я буду дазволіць Вам зірнуць на яго дома, калі вы глядзіце на гэта. 904 00:49:59,980 --> 00:50:06,890 Але мы вызначаем гэты инфикс Аператар **, які затым дазволіць нам, 905 00:50:06,890 --> 00:50:09,840 вызначаючы, што гэта Функцыя ** на самай справе 906 00:50:09,840 --> 00:50:15,010 робіць, каб прыняць левую руку бок і правы бок, 907 00:50:15,010 --> 00:50:21,190 і затым вярнуць экспаненту, што левы бок да правага боку. 908 00:50:21,190 --> 00:50:24,850 >> І вось зараз раптам I стварылі новы лічнік. 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 ОК, шруба C. Я іду Свіфт ўвесь шлях. 912 00:50:37,960 --> 00:50:38,740 Гэта выдатна. 913 00:50:38,740 --> 00:50:40,140 Гэта даволі фантастычным. 914 00:50:40,140 --> 00:50:42,240 >> Хоць гэта выдатны прыклад. 915 00:50:42,240 --> 00:50:45,570 Але я ні разу не звонку у гэтым прыкладзе фактычна 916 00:50:45,570 --> 00:50:46,800 вызначаецца свой уласны аператар. 917 00:50:46,800 --> 00:50:49,710 Але ўсё-ткі, ён паказвае шмат ўлады Swift 918 00:50:49,710 --> 00:50:54,050 і чаму гэта на самай справе сапраўды вельмі выдатна. 919 00:50:54,050 --> 00:50:55,832 ОК, так? 920 00:50:55,832 --> 00:50:57,790 АЎДЫТОРЫЯ: Калі вы Вызначэнне ўласнага аператара, 921 00:50:57,790 --> 00:51:02,940 як вы ведаеце, выпадкова не паспрабаваць стварыць аператара, што гэта 922 00:51:02,940 --> 00:51:06,040 ў дзе-то ў C, як скрытыя дзесьці ў Swift, 923 00:51:06,040 --> 00:51:12,210 як смутнай адзін, што вы магчыма, не бачылі раней. 924 00:51:12,210 --> 00:51:15,050 >> Дадзены Armendariz: Так што, калі вы спрабуеце каб вызначыць свае ўласныя аператары, 925 00:51:15,050 --> 00:51:20,970 існуе рызыка вызначэння адным-над існуючага аператара. 926 00:51:20,970 --> 00:51:24,870 Гэта ідзе ва ўзровень дэталізацыі, што Я не думаю, што ў нас ёсць час, каб пайсці зноў. 927 00:51:24,870 --> 00:51:27,620 Але гэта рызыка. 928 00:51:27,620 --> 00:51:31,320 І гэта на самай справе прычына таго, чаму Я не выкарыстоўваць сімвал курсора, які 929 00:51:31,320 --> 00:51:36,210 калі мы ўводзім з улады, мы, як правіла выкарыстоўваць 4 крыху карэткі 5 ці нешта 930 00:51:36,210 --> 00:51:40,560 так, проста, калі мы Gchatting прыяцеляў або любы іншы. 931 00:51:40,560 --> 00:51:43,660 Але ў гэтым выпадку, што на самой справе выклікала б сутыкненне. 932 00:51:43,660 --> 00:51:46,450 І таму я пазбягаў яго толькі таму, што Я выпадкова даведаўся, у гэтым выпадку 933 00:51:46,450 --> 00:51:50,430 што якія могуць выклікаць што сутыкненне. 934 00:51:50,430 --> 00:51:52,270 >> Добра. 935 00:51:52,270 --> 00:51:55,080 Цяпер, на жаль, для апошнія сем хвілін, 936 00:51:55,080 --> 00:51:57,410 Я павінен трымаць дзьме вашыя розумы няшмат. 937 00:51:57,410 --> 00:52:00,230 Так што дазвольце мне паказаць вам, некаторыя іншыя рэчы, як добра. 938 00:52:00,230 --> 00:52:03,710 >> Мы паказалі вам гэтую ідэю маючы гэтыя ананімныя функцыі, 939 00:52:03,710 --> 00:52:07,040 гэтыя замкі, якія дазваляюць вам выгляд перадаваць функцыі вакол. 940 00:52:07,040 --> 00:52:08,100 Вы можаце вярнуць іх. 941 00:52:08,100 --> 00:52:09,490 Вы можаце маніпуляваць імі. 942 00:52:09,490 --> 00:52:11,790 Вы можаце зрабіць усё віды вар'яты рэчы. 943 00:52:11,790 --> 00:52:14,850 >> Але адна рэч, якая бывае карысна 944 00:52:14,850 --> 00:52:19,740 з'яўляецца магчымасць, у адрозненне вяртання гэтых функцый 945 00:52:19,740 --> 00:52:25,146 у функцыі, каб перадаць функцыю ў якасці параметру іншай функцыі. 946 00:52:25,146 --> 00:52:30,430 Вы маглі б думаць, ну чаму на Зямлі я хачу зрабіць нешта падобнае? 947 00:52:30,430 --> 00:52:33,660 >> Ну, давайце скажам, што я хачу, прыняць гэты аператар, што я 948 00:52:33,660 --> 00:52:40,260 працаваў так цяжка стварыць і прымяніць гэта кучу розных лікаў 949 00:52:40,260 --> 00:52:41,770 у масіве. 950 00:52:41,770 --> 00:52:46,700 Такім чынам, у гэтым выпадку ў мяне ёсць масіў integers-- 1, 4, 7, 2, 5, 10, 56. 951 00:52:46,700 --> 00:52:48,080 І я хачу, каб падвоіць іх усіх. 952 00:52:48,080 --> 00:52:50,430 Такім чынам, што мы, як правіла, зрабіць гэта, каб проста напісаць 953 00:52:50,430 --> 00:52:53,440 просты цыкл, што перабірае ўсе з іх 954 00:52:53,440 --> 00:52:57,140 і выконваць нейкую квадрат аперацыі над імі, 955 00:52:57,140 --> 00:53:02,700 ўвод гэтыя новыя значэння ў новы зменнай ці, хутчэй, новы масіў тут. 956 00:53:02,700 --> 00:53:07,370 І значэнне на выхадзе Вынікам з'яўляецца тое ўсе гэтых масіваў, 957 00:53:07,370 --> 00:53:10,200 ці, хутчэй, усе тыя Цяпер элементы ў квадраце. 958 00:53:10,200 --> 00:53:12,680 >> І мы маглі б зрабіць тое ж самае рэч для кубатуры яго, 959 00:53:12,680 --> 00:53:15,360 але трохі трывожны званочак павінен ісці ад 960 00:53:15,360 --> 00:53:17,360 сказаўшы, што, магчыма, ёсць нейкім чынам, што мы 961 00:53:17,360 --> 00:53:19,860 быць у стане, каб спрасціць гэта няшмат. 962 00:53:19,860 --> 00:53:21,130 І на самай справе ёсць. 963 00:53:21,130 --> 00:53:25,320 Што рабіць, калі мы маглі б стварыць функцыя, якая дазваляе 964 00:53:25,320 --> 00:53:28,350 прыняць, як драпежнік, функцыі? 965 00:53:28,350 --> 00:53:30,350 Такім чынам, у гэтым выпадку, заняць паглядзіце на гэтыя аргументы. 966 00:53:30,350 --> 00:53:33,220 Мы збіраемся прыняць спіс парным разрадзе. 967 00:53:33,220 --> 00:53:35,030 А потым мы збіраемся прыняць функцыю 968 00:53:35,030 --> 00:53:40,990 ў зменнай пад назвай F, што адбываецца ўзяць падвойную і вярнуць падвойную. 969 00:53:40,990 --> 00:53:43,320 І ўвесь выхад ўсёй гэтай функцыі 970 00:53:43,320 --> 00:53:47,310 называецца пераўтваральнік будзе вярнуць масіў з імем двойчы. 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 Гэта накшталт як браць усе гэтыя ідэі, якія мы даведаліся ў CS50 984 00:54:29,640 --> 00:54:31,390 і прымаючы іх роду з на наступны ўзровень. 985 00:54:31,390 --> 00:54:34,140 І ўсё гэта CS51 стыль матэрыял. 986 00:54:34,140 --> 00:54:37,080 І таму мы пойдзем у глыбіню больш класаў, як, што. 987 00:54:37,080 --> 00:54:38,930 >> Але гэта таксама Тут важна, таму што мы 988 00:54:38,930 --> 00:54:42,010 ўбачыць шмат функцый якія выкарыстоўваюцца ў Свіфт 989 00:54:42,010 --> 00:54:45,590 што па сутнасці робіць гэта, дзе ў нас ёсць 990 00:54:45,590 --> 00:54:48,300 некаторыя колькасці, некаторы масіў лікаў. 991 00:54:48,300 --> 00:54:50,850 Мы збіраемся прайсці, што Масіў у нашай картографа. 992 00:54:50,850 --> 00:54:55,770 І мы таксама збіраемся прайсці некаторую функцыю, якая 993 00:54:55,770 --> 00:54:57,950 мы ўжо вызначылі тут. 994 00:54:57,950 --> 00:54:59,690 Гэта збіраецца быць квадратнай. 995 00:54:59,690 --> 00:55:02,220 І мы збіраемся, каб затым квадрат ўсе гэтыя лічбы 996 00:55:02,220 --> 00:55:04,710 і захоўваць, што ў гэтым выніку тут. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> Так што гэта справа мы вызначылі наш Функцыя называецца уласны Mapper. 999 00:55:11,000 --> 00:55:15,370 Але гэта дакладна рэч, на самай справе, убудаваны ў Swift. 1000 00:55:15,370 --> 00:55:18,960 Ёсць мноства Функцыі называецца карту. 1001 00:55:18,960 --> 00:55:21,520 Там гэта карта функцыя, ёсць знізіць функцыю, 1002 00:55:21,520 --> 00:55:25,630 і ёсць функцыя фільтра, якія па сутнасці ўжываць функцыі 1003 00:55:25,630 --> 00:55:30,782 да кожнага элементу ў спіс, каб змяніць іх у некаторым родзе. 1004 00:55:30,782 --> 00:55:34,510 >> АЎДЫТОРЫЯ: Так, так як вы трансфармацыі дадзеныя ў іншы фармат 1005 00:55:34,510 --> 00:55:36,134 праз function-- 1006 00:55:36,134 --> 00:55:37,050 Дадзены Armendariz: Дакладна. 1007 00:55:37,050 --> 00:55:39,420 Так, так што функцыя што мы прымаць 1008 00:55:39,420 --> 00:55:41,790 пераўтворыць дадзеныя ў некаторым родзе. 1009 00:55:41,790 --> 00:55:44,700 У гэтым выпадку мы былі альбо квадратура яго, ці мы былі кубатуры яго, 1010 00:55:44,700 --> 00:55:50,060 ці сапраўды, мы маглі б выканаць няма аперацыі на ім усё. 1011 00:55:50,060 --> 00:55:54,150 >> Але дазвольце мне паказаць вам, то, як гэта будзе выглядаць на практыцы. 1012 00:55:54,150 --> 00:55:56,681 І зноў жа, я бягу крыху часу. так што я не 1013 00:55:56,681 --> 00:55:59,430 будзе ў стане перайсці на ўсе зыходнага кода тут у дэталях. 1014 00:55:59,430 --> 00:56:00,721 Але я заклікаю вас, каб зрабіць гэта. 1015 00:56:00,721 --> 00:56:03,850 Мы апублікуем яе, як толькі магчыма пасля гэтай размовы. 1016 00:56:03,850 --> 00:56:07,610 >> Але калі вы паглядзіце на гэта, Выкажам здагадку, што ў нас ёсць спіс лікаў, 1017 00:56:07,610 --> 00:56:10,260 масіў лікаў у гэтым Пераменная званыя лічбы. 1018 00:56:10,260 --> 00:56:16,670 Затым мы хочам, каб выканаць гэта праца фільтра на гэтых лікаў. 1019 00:56:16,670 --> 00:56:19,730 Так фільтр вышэйшую Функцыя парадку, што 1020 00:56:19,730 --> 00:56:24,660 прымае масіў, а таксама функцыі. 1021 00:56:24,660 --> 00:56:28,760 І на кожным элеменце ў тым, што Масіў, ён выконвае гэтую функцыю. 1022 00:56:28,760 --> 00:56:31,990 >> Калі гэтая функцыя вяртае праўда, ён трымае гэты пункт. 1023 00:56:31,990 --> 00:56:36,100 Калі гэтая функцыя вяртае хлусня, гэта адкідвае гэты пункт. 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 Так што вяртаецца ў passingCount гэта масіў элементаў 100 і 70-- 1043 00:57:54,290 --> 00:57:57,410 100, коска, 70. 1044 00:57:57,410 --> 00:57:59,870 Гэта былі толькі два прадметы, якія захаваліся. 1045 00:57:59,870 --> 00:58:03,740 І так па гэтай прычыне я хутка пайшоў праз Многія з гэтых відаў высокага парадку 1046 00:58:03,740 --> 00:58:08,680 рэчы, таму што гэта тое, што агульная рэч, якую вы ўбачыце ў Swift даволі 1047 00:58:08,680 --> 00:58:16,810 часта, выконвае некаторыя аперацыі выкарыстоўваючы наступны сінтаксіс ананімнай функцыі. 1048 00:58:16,810 --> 00:58:18,450 >> Там нейкая цікавы матэрыял. 1049 00:58:18,450 --> 00:58:24,730 Камутатары сапраўды магутны ў Swift, Я маю на ўвазе, як вар'ят, вар'ят магутным. 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 і паказаць вам канкрэтны прыклад таго, як мы можам стварыць у IOS прыкладанне, з дапамогай Swift. 1054 00:58:46,940 --> 00:58:49,040 Таму, калі вы робіце гэта, вы будзеце мець, каб узяць 1055 00:58:49,040 --> 00:58:51,990 Погляд at-- на Apple, Дакументацыя, яны 1056 00:58:51,990 --> 00:58:56,084 ёсць шмат сапраўды добрых урокаў для стварэння першага прыкладання. 1057 00:58:56,084 --> 00:58:58,250 І я заклікаю вас зрабіць што, таму што яны вас 1058 00:58:58,250 --> 00:59:04,110 праз усе этапы, што менавіта націсніце на стварыць прыкладанне IOS. 1059 00:59:04,110 --> 00:59:07,290 >> Але тут мы маем гэта дадатак IOS. 1060 00:59:07,290 --> 00:59:10,960 І гэта даволі простае дадатак, на самай справе. 1061 00:59:10,960 --> 00:59:13,840 Калі я запускаю гэта, дазвольце мне паказаць Вы, як ён выглядае. 1062 00:59:13,840 --> 00:59:19,480 Усё гэта, па сутнасці робіць гэта цягне з інтэрнэту файл JSON 1063 00:59:19,480 --> 00:59:22,300 што я захоўваюцца на серверы. 1064 00:59:22,300 --> 00:59:26,310 І, што JSON файл вызначае малюнка, якія дазваляюць 1065 00:59:26,310 --> 00:59:31,680 мне тады цыкл праз, на маю Дадатак, выявы з майго вэб-сервера. 1066 00:59:31,680 --> 00:59:32,880 >> Так што я тут getNextImage. 1067 00:59:32,880 --> 00:59:37,100 Ён загружае малюнак з Інтэрнэту, а затым адлюстроўвае яго на экране. 1068 00:59:37,100 --> 00:59:38,200 >> Так што гэта даволі проста. 1069 00:59:38,200 --> 00:59:41,550 Але мэта тут, каб паказаць Вы, як мы можам аб'яднаць рэчы 1070 00:59:41,550 --> 00:59:47,820 З апошніх некалькіх тыдняў CS50 у рэальным дадатку IOS. 1071 00:59:47,820 --> 00:59:53,140 Іншымі словамі, мабыць, адзін з рэчы, якія вы хочаце зрабіць 1072 00:59:53,140 --> 00:59:56,340 гэта ёсць прыкладанне IOS, што можа пацягнуць дадзеныя з Інтэрнэту 1073 00:59:56,340 --> 00:59:59,070 і паказаць карыстачу інфармацыю. 1074 00:59:59,070 --> 01:00:03,130 Гэта зусім кропка гэтага зыходнага кода тут. 1075 01:00:03,130 --> 01:00:07,890 >> Такім чынам, ёсць шмат, каб сказаць аб як зрабіць фактычнае развіццё IOS. 1076 01:00:07,890 --> 01:00:12,860 Існуе шмат вар'ятаў сінтаксісу што мы не бачылі яшчэ досыць 1077 01:00:12,860 --> 01:00:15,580 як клас, тое, што клас на самай справе. 1078 01:00:15,580 --> 01:00:19,470 Мы можам у асноўным ігнаруюць што ў цяперашні час. 1079 01:00:19,470 --> 01:00:23,250 >> Але звярніце ўвагу, што мы ўтрымлівалі у гэтым мноства рэчаў 1080 01:00:23,250 --> 01:00:27,720 што мы ўжо бачылі, як Функцыі, якія маюць канкрэтныя імёны. 1081 01:00:27,720 --> 01:00:32,650 І калі мы даем тым, Функцыі правільныя імёны 1082 01:00:32,650 --> 01:00:36,530 што чакае прашыўкай, на самай справе гэта адчувае сябе крыху чароўным. 1083 01:00:36,530 --> 01:00:40,300 Але калі вы ствараеце Дадатак IOS, там 1084 01:00:40,300 --> 01:00:47,590 канкрэтныя імёны функцый, якія называюцца самім тэлефоне 1085 01:00:47,590 --> 01:00:52,440 як прыкладанне загружаецца, каб паспрабаваць стварэнне працэсу, які фактычна 1086 01:00:52,440 --> 01:00:54,787 працуе прыкладанне. 1087 01:00:54,787 --> 01:00:58,120 Такім чынам, яшчэ раз, ёсць шмат рэчаў, якія я павінны замоўчваць тут для таго, каб нас 1088 01:00:58,120 --> 01:01:00,570 казаць пра гэта канкрэтна. 1089 01:01:00,570 --> 01:01:06,050 Але я заклікаю вас паглядзець на, магчыма, іншы семінар IOS, але таксама і некаторыя 1090 01:01:06,050 --> 01:01:09,290 з падручнікаў онлайн, якія робяць значна лепш апісваць 1091 01:01:09,290 --> 01:01:11,030 канкрэтная інфармацыя. 1092 01:01:11,030 --> 01:01:15,760 >> Але мы можам убачыць пару рэчаў, якія цікавыя з кодам тут. 1093 01:01:15,760 --> 01:01:17,950 Звярніце ўвагу, што ў нас ёсць, калі заявы. 1094 01:01:17,950 --> 01:01:20,400 Дарэчы, адным з важных рэч, калі заявы 1095 01:01:20,400 --> 01:01:24,860 з'яўляецца тое, што дужкі вакол Лагічнае выраз з'яўляюцца неабавязковымі. 1096 01:01:24,860 --> 01:01:30,800 Але фігурныя дужкі з'яўляюцца абавязковымі, незалежна ад таго, як мала ці шмат радкоў кода 1097 01:01:30,800 --> 01:01:32,360 ў вас ёсць у заяве, калі. 1098 01:01:32,360 --> 01:01:38,670 Вы не можаце мець, калі заявы без фігурных дужках у Swift. 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 каб паказаць вам, пра тое, што Swift з'яўляецца новым для Swift 2.0 параўнанні 1108 01:02:02,640 --> 01:02:08,460 ў старых версіях Swift, які складаецца ў наступным. 1109 01:02:08,460 --> 01:02:11,620 Давайце паглядзім, дзе я паклаў яго тут? 1110 01:02:11,620 --> 01:02:16,630 >> Такім чынам, у гэтай функцыі называецца fetchJSON, гэтая функцыя 1111 01:02:16,630 --> 01:02:23,450 нясе адказнасць за пацягнуўшы што JSON файл з URL, які проста так здараецца 1112 01:02:23,450 --> 01:02:26,310 каб быць запушчаны на маім CS50 IDE. 1113 01:02:26,310 --> 01:02:28,580 Я толькі пачаў Apache, паклаў JSON файл існуе, 1114 01:02:28,580 --> 01:02:32,110 і я ў стане, то цягнуць, што Дадзеныя з інтэрнэту, выкарыстоўваючы 1115 01:02:32,110 --> 01:02:36,430 гэтая функцыя і гэты адрас, якая прадастаўляецца па тэлефоне. 1116 01:02:36,430 --> 01:02:40,490 Гэта забяспечваецца Бібліятэка, што вы карыстаецеся, калі 1117 01:02:40,490 --> 01:02:43,140 Вы робіце нейкае разьвіцьцё IOS прыкладанне. 1118 01:02:43,140 --> 01:02:49,690 >> Звярніце ўвагу, тут ёсць гэтая незвычайная сінтаксічны канструкт называецца ахоўніка. 1119 01:02:49,690 --> 01:02:53,530 І сапраўды, усё гэта ў Свіфт спосаб праверкі 1120 01:02:53,530 --> 01:02:56,870 што некаторыя рэчы павінны былі выкананы перад вамі 1121 01:02:56,870 --> 01:03:00,000 прыступіць да астатняй часткі функцыі. 1122 01:03:00,000 --> 01:03:04,260 Так што я мог бы, выкарыстоўваючы гэты неабавязковы тып, 1123 01:03:04,260 --> 01:03:10,530 Я мог бы знайсці URL па працуе гэтая функцыя NSURL 1124 01:03:10,530 --> 01:03:16,640 і захоўвання, што ў URL пастаянным, а затым праверкі 1125 01:03:16,640 --> 01:03:20,820 каб убачыць, калі URL быў нулявым, таму што гэта збіраецца вярнуцца дадатковы тып. 1126 01:03:20,820 --> 01:03:25,660 І калі гэта было нуль, то я б раздрукаваць памылку, а затым вярнуцца. 1127 01:03:25,660 --> 01:03:29,970 >> Але замест гэтага, то, што ахоўнік дазваляе нам зрабіць тое, што вельмі рэч, 1128 01:03:29,970 --> 01:03:34,550 але пераканайцеся, што гэта на самай справе так, што гіперспасылка 1129 01:03:34,550 --> 01:03:38,020 быў належным чынам усталяваны NSURL. 1130 01:03:38,020 --> 01:03:41,810 І калі гэта так, то прапускае гэта, і гэта 1131 01:03:41,810 --> 01:03:46,110 дазволіць вам працягнуць гіперспасылка быўшы належным чынам вызначаны. 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 >> АЎДЫТОРЫЯ: Так што гэта свайго роду з Like An, калі потым яшчэ? 1138 01:04:04,839 --> 01:04:07,130 Дадзены Armendariz: Гэта свайго роду Like An, калі потым яшчэ, ды, 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 >> Дадзены Armendariz: Так што гэта блізка. 1148 01:04:59,100 --> 01:05:02,360 Гэта функцыя, якую мы вызначаем. 1149 01:05:02,360 --> 01:05:07,240 І мы гэтую функцыю ўводу ў якасці аргументу гэтай функцыі тут. 1150 01:05:07,240 --> 01:05:09,120 >> АЎДЫТОРЫЯ: [неразборліва], калі не нуль. 1151 01:05:09,120 --> 01:05:11,470 Так што гэта ў спісе, ці не так? 1152 01:05:11,470 --> 01:05:15,450 >> Дадзены Armendariz: Калі памылка не нуль, так што is-- так што я павінен пракруткі. 1153 01:05:15,450 --> 01:05:18,060 Ну, давайце паглядзім, я не магу сапраўды пракруткі направа тут. 1154 01:05:18,060 --> 01:05:23,161 Памылка аргумент, што ў цяперашні час перададзены ў ананімнай функцыі. 1155 01:05:23,161 --> 01:05:24,410 Гэта ананімная функцыя. 1156 01:05:24,410 --> 01:05:25,480 Гэта не мае імя. 1157 01:05:25,480 --> 01:05:29,850 Але мы прымаем гэтыя тры Аргументы, дадзеныя, адказ, і памылак. 1158 01:05:29,850 --> 01:05:33,590 І гэта збіраецца вярнуцца несапраўднымі, так ён не збіраецца нічога вяртаць. 1159 01:05:33,590 --> 01:05:37,910 І гэта змест гэтай функцыі. 1160 01:05:37,910 --> 01:05:41,961 І тады ў нас ёсць доступ ўнутр, што Функцыя кожнага з гэтых параметраў. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> Так што гэта віхура экскурсія па мове. 1163 01:05:48,679 --> 01:05:50,470 Але я спадзяюся, з гэтым, мы спадзяемся, як вы прымаеце 1164 01:05:50,470 --> 01:05:54,490 погляд на некаторыя з падручнікаў спецыфічных для распрацоўкі IOS з Свіфт, 1165 01:05:54,490 --> 01:05:57,481 асабліва калі вы ідзяце ў Распрацоўшчык вэб-page-- ад Apple 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