1 00:00:00,000 --> 00:00:03,332 >> [Muzika] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> DAN AMRMENDARIZ: Gjithkush, mirëpritur të seminarit CS50, 4 00:00:09,590 --> 00:00:11,690 iOS App Development me Swift. 5 00:00:11,690 --> 00:00:15,690 Unë jam Dan Armendariz, dhe unë jam një preceptor e shkencës kompjuterike këtu në Harvard. 6 00:00:15,690 --> 00:00:21,510 >> Dhe orën e ardhshme do të jetë një turne shakullinë e sa më shumë gjëra 7 00:00:21,510 --> 00:00:25,160 në lidhje me këtë temë si ne mund të përshtatet. 8 00:00:25,160 --> 00:00:29,170 Unë do të postoj të gjitha të kodit burim që ju do të shihni sot në internet. 9 00:00:29,170 --> 00:00:31,990 Ne mund të mos jetë në gjendje të në fakt shkojnë mbi gjithçka 10 00:00:31,990 --> 00:00:34,810 se unë jam që jam duke treguar se në këtë orë. 11 00:00:34,810 --> 00:00:37,580 Por të paktën shpresojmë se përmes komentet e kodit burim, 12 00:00:37,580 --> 00:00:40,830 ju do të jetë në gjendje të përpiqen të kuptoj se çfarë pikërisht po ndodh për ato gjëra 13 00:00:40,830 --> 00:00:42,950 se ne nuk mjaft të marrë për të. 14 00:00:42,950 --> 00:00:46,970 >> Në përgjithësi, struktura e flasim e sotme do të jetë si më poshtë. 15 00:00:46,970 --> 00:00:52,820 Ne do të filloni duke bërë disa shërbime bazë Sintaksa me gjuhën Swift, 16 00:00:52,820 --> 00:00:56,290 që shkon në disa nga më të avancuar Sintaksa e gjuhës Swift. 17 00:00:56,290 --> 00:00:59,560 Për shkak të gjuhës është me të vërtetë moderne dhe atë 18 00:00:59,560 --> 00:01:02,110 ka një shumë të nivelit të lartë karakteristika, gjëra që ne nuk kanë 19 00:01:02,110 --> 00:01:06,600 parë në C gjatë CS50, ose edhe disa gjuhë të tjera 20 00:01:06,600 --> 00:01:09,310 se ne kemi filluar përdorur në CS50 si PHP, 21 00:01:09,310 --> 00:01:12,670 kështu që unë do të duhet të përpiqen për futur edhe disa tema që 22 00:01:12,670 --> 00:01:18,580 janë të lidhura me gjuhë të nivelit të lartë që ju nuk mund të shihni në thellësi në CS50, 23 00:01:18,580 --> 00:01:21,380 por ju do të shihni në më vonë klasa shkenca kompjuterike. 24 00:01:21,380 --> 00:01:25,290 Kështu ajo do të jetë një mbushur fort orë. 25 00:01:25,290 --> 00:01:28,897 Dhe ju lutem mos ngurroni të më lejoni të e di nëse keni ndonjë pyetje. 26 00:01:28,897 --> 00:01:30,730 Pra, nëse ju jeni të interesuar duke bërë të zhvillimit 27 00:01:30,730 --> 00:01:34,442 me Swift, apo me të vërtetë ndonjë zhvillim iOS app, 28 00:01:34,442 --> 00:01:35,900 ka disa prej kërkesave. 29 00:01:35,900 --> 00:01:39,940 Para së gjithash, ju duhet të jetë duke përdorur një Mac, drejtimin në shembujt 30 00:01:39,940 --> 00:01:43,880 se ne do të jetë duke përdorur sot, një version i ri i OS relativisht 31 00:01:43,880 --> 00:01:46,580 X. Në këtë rast, unë jam duke X 10.5. 32 00:01:46,580 --> 00:01:48,600 Ju mund të konkurrojnë 10.11 në qoftë se ju dëshironi. 33 00:01:48,600 --> 00:01:52,430 Por çdo gjë që ju jeni do të shikoni është përfshirë Xcode 7 dhe më vonë, 34 00:01:52,430 --> 00:01:56,271 e cila ka versionin më të fundit i Swift, e cila është Swift 2.0. 35 00:01:56,271 --> 00:01:58,270 Kjo është në fakt një goxha dallim i rëndësishëm. 36 00:01:58,270 --> 00:02:01,510 Një shumë e sintaksë ka ndryshuar goxha të konsiderueshme 37 00:02:01,510 --> 00:02:05,890 në disa raste nga Swift 1.0, i cili u lirua vitin e kaluar, 38 00:02:05,890 --> 00:02:08,514 për Swift 2.0, e cila sapo doli këtë vjeshtë. 39 00:02:08,514 --> 00:02:09,889 Pra, ne jemi duke shkuar për të treguar Swift 2.0. 40 00:02:09,889 --> 00:02:13,020 Një shumë prej gjërave që ju kërkoni për internet 41 00:02:13,020 --> 00:02:18,040 kur jeni duke u përpjekur për të marrë shtesë informacion në lidhje me një shumëllojshmëri të gjëra, 42 00:02:18,040 --> 00:02:20,710 ju mund të dëshironi të qartë kërkoni për Swift 2 43 00:02:20,710 --> 00:02:24,950 sesa Swift thjesht e vjetër për të bërë i sigurt që ju të merrni sintaksa e saktë. 44 00:02:24,950 --> 00:02:26,920 >> Në fakt, kjo është përgjithësisht e vërtetë. 45 00:02:26,920 --> 00:02:31,210 Ka një sasi të shpejtë të zhvillimit ndodh në gjuhën Swift 46 00:02:31,210 --> 00:02:35,110 qysh Apple lëshuar atë, unë mendoj çfarë, kjo është pak më shumë se një vit 47 00:02:35,110 --> 00:02:36,370 tani. 48 00:02:36,370 --> 00:02:39,080 Dhe gjërat kanë ndryshuar në mënyrë dramatike në atë kohë. 49 00:02:39,080 --> 00:02:42,160 Dhe kështu që nuk do të jenë të frustruar në qoftë se, kur ju jeni duke kërkuar rreth e rrotull 50 00:02:42,160 --> 00:02:48,310 për tema mbi Swift apo si për të përmbushur diçka duke përdorur një kod shembull 51 00:02:48,310 --> 00:02:51,210 apo diçka që ai nuk ka aktualisht punojnë në Swift 2.0. 52 00:02:51,210 --> 00:02:53,790 Sigurohuni që ju jeni duke kërkuar në mënyrë specifike për këtë version 53 00:02:53,790 --> 00:02:58,690 të përpiqen për të minimizuar efektet e ndryshme versionet dhe ato llojet e gjërave. 54 00:02:58,690 --> 00:03:02,470 >> Unë do të përpiqemi për të nxjerr në pah vetëm disa gjëra që janë të ndryshme për versionet më të vjetra. 55 00:03:02,470 --> 00:03:03,970 Por kjo është diçka për të parë për. 56 00:03:03,970 --> 00:03:06,770 Kjo ndoshta do të jetë një nga dhimbje koke mëdha 57 00:03:06,770 --> 00:03:11,010 që ju do të keni me Swift është gjetur shembull kodin që është më i vjetër, madje edhe vetëm 58 00:03:11,010 --> 00:03:14,050 nga disa muaj, duke u përpjekur për të përdorur ajo në projektin tuaj më moderne. 59 00:03:14,050 --> 00:03:15,430 Dhe kjo thjesht nuk funksionon. 60 00:03:15,430 --> 00:03:18,530 Ju jeni marrë gabimet e përpiluesit, sintaksë Gabimet, të gjitha llojet e gjëra të çmendur. 61 00:03:18,530 --> 00:03:21,580 Pra, vetëm të jetë i durueshëm me se, dhe ju do të shpresojmë se 62 00:03:21,580 --> 00:03:24,200 kanë një përvojë mjaft të bukur me Përgjithësisht Swift. 63 00:03:24,200 --> 00:03:28,430 >> Tani ju mund të vërtetë join-- dhe unë shpresoj ne fakt ende kemi këtë këtë year-- 64 00:03:28,430 --> 00:03:30,910 Apple App CS 50- Ekipi i zhvillimit, i cili 65 00:03:30,910 --> 00:03:34,680 do t'ju lejojë të instaluar ndonjë Apps që keni krijuar në pajisjet tuaja iOS. 66 00:03:34,680 --> 00:03:39,190 Pra, të marrë një sy në këtë URL nëse ju jeni të interesuar për të bërë atë. 67 00:03:39,190 --> 00:03:41,450 >> Pra, vetëm një çift i gjëra në lidhje me vetë Swift. 68 00:03:41,450 --> 00:03:43,580 Ajo është një gjuhë hartuar. 69 00:03:43,580 --> 00:03:45,870 Por ju do të shihni se disa nga tiparet që ne përdorim 70 00:03:45,870 --> 00:03:50,650 të lejojë atë që do të përdoret edhe në një grimë si një mënyrë e interpretuar si. 71 00:03:50,650 --> 00:03:56,350 >> Një shumë e sintaksë është e huazuar nga C. Është e bazuar dhe e shkruar në C. 72 00:03:56,350 --> 00:04:00,400 Dhe kështu që ne do të shohim se ka shumë të takeaways 73 00:04:00,400 --> 00:04:04,450 nga njohuritë tuaja ekzistuese nga C që ne mund të portit të Swift. 74 00:04:04,450 --> 00:04:07,290 >> Por ka gjëra që e bëjnë atë shumë të ndryshme nga C. 75 00:04:07,290 --> 00:04:08,860 Ajo është e shtypur shumë i fuqishëm. 76 00:04:08,860 --> 00:04:10,380 Ka menaxhimit automatik kujtesës. 77 00:04:10,380 --> 00:04:13,170 Ju nuk jeni do të duhet të përdorin malloc apo kudo të lirë. 78 00:04:13,170 --> 00:04:15,110 Është projektuar për përgjithshmërinë. 79 00:04:15,110 --> 00:04:19,480 Pra, me fjalë të tjera, ju mund ta përdorni atë në të gjitha llojet e konteksteve, nga Apple Watch 80 00:04:19,480 --> 00:04:26,290 për iPhone të gjithë rrugën deri në OS X, dhe edhe disa servera, madje disa scripting. 81 00:04:26,290 --> 00:04:28,400 Por ne do të shohim se mbështetje për të shkruar 82 00:04:28,400 --> 00:04:31,360 nuk është mjaft ende atje si ajo është në gjuhë të tjera. 83 00:04:31,360 --> 00:04:34,930 Pra, ka shumë të ngjarë që ju do të jetë duke përdorur kjo ekskluzivisht për zhvillimin 84 00:04:34,930 --> 00:04:37,060 në Mac tuaj apo iPhone tuaj. 85 00:04:37,060 --> 00:04:40,150 >> Dhe ajo ka shumë karakteristika moderne. 86 00:04:40,150 --> 00:04:43,380 Dhe shumë nga këto gjëra janë gjëra që ne jemi duke shkuar për të përpiqen për të trajtuar sot, 87 00:04:43,380 --> 00:04:47,590 por edhe tema tanë që sinqerisht, ne mund të kushtojnë kurse të tëra. 88 00:04:47,590 --> 00:04:50,140 Në të vërtetë, CS 51, i cili është ofruar semestër tjetër, 89 00:04:50,140 --> 00:04:53,990 fokusohet shumë në këto tema që janë përshkruar më poshtë. 90 00:04:53,990 --> 00:04:56,781 Kështu që ju mund të kaloni një semestër të tërë kuptuar këto gjëra. 91 00:04:56,781 --> 00:04:58,530 Por, ne jemi duke shkuar për të provoni për të marrë nëpërmjet tyre 92 00:04:58,530 --> 00:05:00,800 të paktën të mjaftueshme që ju mund të kuptojnë se çfarë është 93 00:05:00,800 --> 00:05:03,700 ndodh kur ju shikoni në një program Swift 94 00:05:03,700 --> 00:05:07,310 dhe të jetë në gjendje për të kollitem në rrugën tuaj përmes saj për projektin përfundimtar. 95 00:05:07,310 --> 00:05:10,780 >> Tani një nga mënyrat më të mira që ju mund të të marrë informacion shtesë mbi këtë 96 00:05:10,780 --> 00:05:14,700 është sinqerisht vetëm përmes Apple siguruar dokumentacionin për Swift. 97 00:05:14,700 --> 00:05:16,930 Nuk është një shumë e TV që janë në dispozicion. 98 00:05:16,930 --> 00:05:21,170 Dhe kjo është një bazë e mirë në shtëpi për ju për të kërkuar, gjëra të veçanta që ju 99 00:05:21,170 --> 00:05:23,020 doni të bëni me një API që përfshin iOS. 100 00:05:23,020 --> 00:05:26,350 Nëse ju doni të përdorni kamerën për shembull, ju mund të filloni duke kërkuar këtu, 101 00:05:26,350 --> 00:05:32,540 dhe të përdorë gjithashtu edhe Google dhe rafte Overflow si ju do normalisht. 102 00:05:32,540 --> 00:05:36,670 >> Çdo pyetje mbi këtë para se të hidhen të drejtë në? 103 00:05:36,670 --> 00:05:37,880 Në rregull. 104 00:05:37,880 --> 00:05:38,700 Le të lëvizë. 105 00:05:38,700 --> 00:05:42,620 >> Pra, së pari, unë kam një Numri i dosjeve shembull. 106 00:05:42,620 --> 00:05:46,040 Dhe unë jam duke shkuar për të përpiqen për të rritur përmes tyre relativisht shpejt. 107 00:05:46,040 --> 00:05:49,190 Kjo është skedari Hello World për Swift. 108 00:05:49,190 --> 00:05:51,050 Është shumë e thjeshtë. 109 00:05:51,050 --> 00:05:54,360 Nuk ka mënyrë më shumë komente se ka kodin aktual. 110 00:05:54,360 --> 00:05:57,100 Njoftim kodi aktual është në fund shumë on line 14. 111 00:05:57,100 --> 00:05:57,980 Ajo thotë shtypura. 112 00:05:57,980 --> 00:05:59,820 Dhe pastaj kjo është një thirrje funksion. 113 00:05:59,820 --> 00:06:03,010 Ne jemi duke kaluar në të një string quajtur Përshëndetje CS50. 114 00:06:03,010 --> 00:06:04,750 Vini re se nuk ka pikpresje. 115 00:06:04,750 --> 00:06:07,010 Vini re se nuk ka int main. 116 00:06:07,010 --> 00:06:10,392 Nuk ka asnjë nga cruft që kemi pasur me C. 117 00:06:10,392 --> 00:06:15,020 Kur ne jemi duke përdorur Swift në këtë mënyrë, e cila është vetëm e shkruar në një skedar teksti 118 00:06:15,020 --> 00:06:18,340 dhe ruhen në kompjuterin tim, atëherë Unë mund të përpiloni atë dhe drejtuar atë. 119 00:06:18,340 --> 00:06:20,920 >> Vini re që këtu unë jam i mos përdorur IDE CS50. 120 00:06:20,920 --> 00:06:24,460 Kjo supozon se unë jam drejtimin dhe që unë jam në OS X, 121 00:06:24,460 --> 00:06:27,870 dhe se unë kam Xcode tashmë të instaluar në këtë makinë në mënyrë që kjo 122 00:06:27,870 --> 00:06:29,080 në fakt funksionin. 123 00:06:29,080 --> 00:06:33,349 Por kjo është vetëm një skedar normal teksti që ne pastaj mund të përpilojnë dhe të redaktoni. 124 00:06:33,349 --> 00:06:34,890 Pra, le të shohim se si kjo në fakt funksionon. 125 00:06:34,890 --> 00:06:37,430 Çka nëse unë dua të përpiloni atë? 126 00:06:37,430 --> 00:06:40,450 1.swift swiftc. 127 00:06:40,450 --> 00:06:42,960 Pas një moment ose dy, ajo do të shihni se ne kemi tani 128 00:06:42,960 --> 00:06:45,360 hartuar këtë në një skedar të quajtur 1. 129 00:06:45,360 --> 00:06:51,090 Dhe tani ne kemi shtypur CS50 tonë, kërkesa jonë Hello World vend. 130 00:06:51,090 --> 00:06:54,690 >> Vini re një gjë tjetër si mirë është se në mungesë, 131 00:06:54,690 --> 00:07:00,090 ne nuk kemi të dhëna A / n për të shkruar një linjë të re. 132 00:07:00,090 --> 00:07:05,315 By default, funksioni shtypura në Swift do të shtypura një linjë të re për ju. 133 00:07:05,315 --> 00:07:09,284 Ju mund të kalojë një shtesë fakultative parametër për të të treguar se nuk duhet të bëni kështu. 134 00:07:09,284 --> 00:07:10,950 Por Google për më shumë informacion mbi këtë. 135 00:07:10,950 --> 00:07:13,450 By default, ajo do të bëjë vijën shtypura. 136 00:07:13,450 --> 00:07:16,420 >> Të gjithë të drejtë, kështu që le të lëvizë pastaj për disa gjëra të tjera. 137 00:07:16,420 --> 00:07:18,620 Pra, si mund të vërtetë të përcaktojë variablat? 138 00:07:18,620 --> 00:07:21,960 Ne mund ta bëjmë këtë është duke përdorur një prej dy metodave. 139 00:07:21,960 --> 00:07:26,122 Dhe ai që unë dua të ju them për të parë është ky definicion le. 140 00:07:26,122 --> 00:07:27,830 Dhe kjo është e rëndësishme sepse në mënyrë efektive 141 00:07:27,830 --> 00:07:30,240 ajo që ne jemi duke bërë është përcaktuar një konstante. 142 00:07:30,240 --> 00:07:34,010 Ne do të krijojë një ndryshore, ose më mirë një e quajti konstante, 143 00:07:34,010 --> 00:07:38,200 japë atij disa data-- në ky rast, string Dan. 144 00:07:38,200 --> 00:07:40,630 Por duke përdorur këtë le fjalen, ne jemi duke thënë 145 00:07:40,630 --> 00:07:43,860 se kjo variable-- ose përsëri constant-- quajtur 146 00:07:43,860 --> 00:07:46,220 Emri nuk do të ndryshohet. 147 00:07:46,220 --> 00:07:50,120 Ajo do të jetë i pandryshueshëm gjatë gjithë kohëzgjatja e këtij programi 148 00:07:50,120 --> 00:07:53,100 ose në të gjithë kohëzgjatja e kontekstit 149 00:07:53,100 --> 00:07:55,390 se kjo variabël është në dispozicion. 150 00:07:55,390 --> 00:08:00,096 >> Kjo është me të vërtetë e rëndësishme që kur ju keni disa të dhëna që nuk është 151 00:08:00,096 --> 00:08:02,970 do të ndryshojë në programin tuaj, dhe ju do të shihni një shumëllojshmëri të shembujve 152 00:08:02,970 --> 00:08:06,790 kur ne duam të përdorim le kundrejt sintaksë tjetër, 153 00:08:06,790 --> 00:08:11,040 është e rëndësishme që ju përdorni le kudo që të jetë e mundur për shkak se këtë njofton 154 00:08:11,040 --> 00:08:13,740 gjuha që ajo është nuk do të ndryshohet, 155 00:08:13,740 --> 00:08:16,590 dhe kjo në fakt mund të kryejnë një shumë e optimizim 156 00:08:16,590 --> 00:08:19,560 për të përmirësuar shpejtësinë dhe sigurinë e programit tuaj. 157 00:08:19,560 --> 00:08:24,480 Dhe me siguri, unë nuk do të thotë le të përplasje ajo me gabime çmendur 158 00:08:24,480 --> 00:08:27,910 që ne mund të jetë mësuar të shohim në C. 159 00:08:27,910 --> 00:08:32,460 >> Atëherë ne mund të përdorim varg interpolation për të përmbledhur këtë në një varg. 160 00:08:32,460 --> 00:08:35,200 Pra, ne mund të shohim në këtë Linja të shtypura, të shtypura hello, 161 00:08:35,200 --> 00:08:38,950 dhe pastaj duke përdorur backslash parens të hapura, dhe pastaj emrin e variablit tim, 162 00:08:38,950 --> 00:08:41,809 në këtë rast konstante, mbyllur kllapa. 163 00:08:41,809 --> 00:08:46,400 Unë jam në thelb pastaj të vënë Përmbajtja e kësaj ndryshueshme quajtur emër 164 00:08:46,400 --> 00:08:50,240 brenda vargut dhe pastaj shtypjen rezultatin atje. 165 00:08:50,240 --> 00:08:54,070 >> Ka një ndryshim tjetër në këtë skedë që është se unë kam, në krye, 166 00:08:54,070 --> 00:08:57,340 vënë në një linjë mesele, e cila në thelb vetëm specifikon 167 00:08:57,340 --> 00:09:00,180 që unë dua për të përdorur Përkthyes Swift, e cila 168 00:09:00,180 --> 00:09:04,190 do të thotë se unë nuk kanë më të hartojnë këtë program të veçantë. 169 00:09:04,190 --> 00:09:06,567 Unë vetëm mund të kandidojë atë si shkrimit të saj. 170 00:09:06,567 --> 00:09:09,400 Por kjo është, në këtë rast, pas skenat duke u hartuar dhe pastaj 171 00:09:09,400 --> 00:09:10,030 duke u drejtuar. 172 00:09:10,030 --> 00:09:13,540 Është vetëm e padukshme për ne. 173 00:09:13,540 --> 00:09:15,880 >> Të gjithë të drejtë, kështu që le të lëvizë. 174 00:09:15,880 --> 00:09:19,650 Pra, ka pak dredhi që ka ndodhur vetëm para. 175 00:09:19,650 --> 00:09:23,230 Ju kam treguar se unë mund të përcaktojë një konstante. 176 00:09:23,230 --> 00:09:25,490 Dhe unë mund të sigurojë disa të dhëna për të bërë atë. 177 00:09:25,490 --> 00:09:29,240 Por në këtë rast, vini re se unë nuk e bëri në fakt të specifikojë llojin e të dhënave 178 00:09:29,240 --> 00:09:29,820 që është. 179 00:09:29,820 --> 00:09:32,780 Dhe kjo është për shkak se përpilues, Swift mund të 180 00:09:32,780 --> 00:09:36,910 tregoj tipin e të dhënave të bazuar vetëm në të dhënat që kam vënë në të. 181 00:09:36,910 --> 00:09:41,760 Për shkak se ajo e di se duke vlerësuar këtë ndryshueshme të drejtë këtu, kjo e drejtë e të dhënave 182 00:09:41,760 --> 00:09:43,370 këtu, ajo e di se ajo është një varg. 183 00:09:43,370 --> 00:09:48,690 Dhe kështu që ky emër konstante për këtë arsye është do të jetë një varg si. 184 00:09:48,690 --> 00:09:52,730 >> Por ne gjithashtu mund të jetë i qartë rreth llojit që është 185 00:09:52,730 --> 00:09:55,790 ne do të përdorim për konstantet ose variabla 186 00:09:55,790 --> 00:10:01,590 duke përdorur këtë sintaksë instead-- le String emri i zorrës së trashë është e barabartë me 187 00:10:01,590 --> 00:10:05,530 Dan, e cila në këtë rast do të thotë që ne jemi do të përcaktojë një quajti konstante. 188 00:10:05,530 --> 00:10:07,150 Ajo do të jetë e tipit String. 189 00:10:07,150 --> 00:10:10,550 Dhe vlera do të jetë Dan. 190 00:10:10,550 --> 00:10:12,550 Tani mënyra të tjera që ne mund të krijojmë variables-- 191 00:10:12,550 --> 00:10:15,549 dhe këto janë variabla të ndryshueshme, të cilat do të thotë se ne jemi, në fakt, duke shkuar 192 00:10:15,549 --> 00:10:19,670 për të ndryshuar përmbajtjen e tyre diku në kohëzgjatjen e kontekstit 193 00:10:19,670 --> 00:10:23,890 se kjo variabël është defined-- ne përdorin fjalen var në vend të le. 194 00:10:23,890 --> 00:10:27,400 Por përsëri, si parazgjedhje, nëse nuk e dini që ju duhet për të manipuluar që të dhënat, 195 00:10:27,400 --> 00:10:30,510 përpiqen të përdorin le për përmirësime të performancës. 196 00:10:30,510 --> 00:10:33,740 >> Në këtë rast, unë mund pastaj të specifikojë llojin e të dhënave 197 00:10:33,740 --> 00:10:37,650 që ne presim që të jetë brenda ky variabël i ri i quajtur emërtim. 198 00:10:37,650 --> 00:10:38,800 Ajo do të jetë një varg. 199 00:10:38,800 --> 00:10:43,030 Dhe ne jemi duke shkuar për të pastaj lidh Dy vargjet bashku, string hello, 200 00:10:43,030 --> 00:10:48,070 dhe string përfaqësuar nga ndryshueshme, ose më mirë emri konstante. 201 00:10:48,070 --> 00:10:50,660 >> Pra, kjo është e bukur, sepse kjo është disi PHP si në atë që ne 202 00:10:50,660 --> 00:10:52,250 kanë shumë të lehtë varg string. 203 00:10:52,250 --> 00:10:56,350 Ne nuk duhet të automatikisht përdorin çdo lloj të menaxhimit të kujtesës 204 00:10:56,350 --> 00:11:00,580 për të rritur madhësinë dhe të bëjë çdo lloj gjëra funny atje. 205 00:11:00,580 --> 00:11:05,040 Kjo punon si ne faktikisht do të presim. 206 00:11:05,040 --> 00:11:09,370 >> Të gjithë të drejtë, ndonjë pyetje mbi këtë? 207 00:11:09,370 --> 00:11:12,520 >> Tani arsye tjetër që ne kemi nevojë për ju keni mundësinë për 208 00:11:12,520 --> 00:11:15,490 të jetë në gjendje për të përcaktuar se çfarë tipi i variablave të dhënave janë 209 00:11:15,490 --> 00:11:18,170 është për shkak se nganjëherë ne nuk e bëjmë dua të nisja variablave 210 00:11:18,170 --> 00:11:21,080 me disa të dhënave në Pika e përkufizimit. 211 00:11:21,080 --> 00:11:23,500 Pra, në këtë rast, le të themi që unë dua të fillojë inputting 212 00:11:23,500 --> 00:11:25,040 disa notat në një libër të klasës. 213 00:11:25,040 --> 00:11:27,530 E pra unë e di se një nga Variablat që unë dua të jem 214 00:11:27,530 --> 00:11:30,280 do të jetë një notë ndryshueshëm. 215 00:11:30,280 --> 00:11:33,010 Dhe ne gjithashtu e dimë se ne duan që ajo të jetë një numër të plotë. 216 00:11:33,010 --> 00:11:36,030 Por ndoshta ne nuk e bëjmë akoma kanë që klasën në dispozicion. 217 00:11:36,030 --> 00:11:39,570 >> Në Swift, ju duhet të përcaktojnë llojin e të dhënave 218 00:11:39,570 --> 00:11:44,000 që është i lidhur me një ndryshueshme ose një le të vazhdueshme 219 00:11:44,000 --> 00:11:47,840 para se ju mund të vërtetë përdorin atë ndryshore. 220 00:11:47,840 --> 00:11:51,170 Për shkak se ajo është e shtypur me forcë, ju duhet të shoqërojnë një lloj 221 00:11:51,170 --> 00:11:52,890 me këto variabla. 222 00:11:52,890 --> 00:11:56,120 >> Pra, në këtë rast, në qoftë se unë nuk e kam si duhet inicializohet i pari me disa vlera, 223 00:11:56,120 --> 00:12:00,520 atëherë unë duhet të them se çfarë Swift Unë pres lloji të dhënave të jetë. 224 00:12:00,520 --> 00:12:02,650 Dhe ajo do të mbetet që i njëjti tip të dhënat e 225 00:12:02,650 --> 00:12:05,780 të gjithë historinë e këtij programi. 226 00:12:05,780 --> 00:12:10,050 >> Tani ju mund të joshet sa më shpejt që Unë kam krijuar këtë variabël klasën 227 00:12:10,050 --> 00:12:13,530 dhe me kusht atë një numër i plotë i 100, tani, nëse unë 228 00:12:13,530 --> 00:12:18,540 duan të përpiqen për të lidh një varg me këtë numër i plotë, 229 00:12:18,540 --> 00:12:21,610 mund të joshet për të përdorur ende se operatori string varg 230 00:12:21,610 --> 00:12:24,500 si ne e bëmë vetëm disa rreshta para. 231 00:12:24,500 --> 00:12:26,460 Por për fat të keq, ky fakt nuk do të 232 00:12:26,460 --> 00:12:29,270 punë, sepse ju jeni në thelb kryerjen 233 00:12:29,270 --> 00:12:32,380 një operacion në dy lloje të ndryshme. 234 00:12:32,380 --> 00:12:36,856 >> Tani kjo është shumë e ndryshme nga tjetri gjuhë si PHP cilat janë me të vërtetë 235 00:12:36,856 --> 00:12:38,480 Budalla loosey me lloj e tyre të llojeve. 236 00:12:38,480 --> 00:12:40,030 Ata janë ashtu si, vërtet, çfarëdo, Unë nuk e kujdesit. 237 00:12:40,030 --> 00:12:42,710 Vetëm më jepni një lloj, dhe ndoshta unë do të bëj gjënë e duhur. 238 00:12:42,710 --> 00:12:46,060 >> Në këtë rast, Swift është jashtëzakonisht të rreptë në lidhje me llojet 239 00:12:46,060 --> 00:12:47,350 që ju jeni marrë me. 240 00:12:47,350 --> 00:12:50,700 Ky operator përmbledhje apo operatori varg 241 00:12:50,700 --> 00:12:54,400 ka në thelb një çift të opsione të ndryshme të mundshme. 242 00:12:54,400 --> 00:12:56,970 Ju mund të bëni përmbledhje me integers, ose 243 00:12:56,970 --> 00:13:00,870 mund të bëjë string varg, dhe ndoshta disa gjëra të tjera si edhe. 244 00:13:00,870 --> 00:13:05,550 Por në qoftë se operatori nuk e njeh ajo që është në të dyja anët e saj, 245 00:13:05,550 --> 00:13:10,452 ose më mirë kombinimi i atyre dy lloje, nuk është ajo që është pritur, 246 00:13:10,452 --> 00:13:11,910 atëherë ajo do të shkaktojë një dështim. 247 00:13:11,910 --> 00:13:16,690 >> Pra, në këtë rast, çfarë do të thotë të ketë një varg plus një numër të plotë? 248 00:13:16,690 --> 00:13:18,880 Edhe në kontekstin e këtë, ne ndoshta do të doni 249 00:13:18,880 --> 00:13:21,990 për të bërë një operacion string varg. 250 00:13:21,990 --> 00:13:26,420 Por sigurisht kompjuteri nuk kanë atë lloj të kontekstit. 251 00:13:26,420 --> 00:13:29,950 Dhe kështu që ne kemi nevojë për të siguruar se informacioni shtesë 252 00:13:29,950 --> 00:13:32,390 për të le të dini se çfarë është se ne duam të bëjmë. 253 00:13:32,390 --> 00:13:36,860 >> Pra, me fjalë të tjera, fakti se Swift është shtypur me forcë 254 00:13:36,860 --> 00:13:39,520 do të thotë që ju duhet të bëni një pak punë shtesë 255 00:13:39,520 --> 00:13:42,100 për të marrë atë për të vepruar mënyrë që ju do të duan. 256 00:13:42,100 --> 00:13:43,710 Por si rezultat, është më e sigurt. 257 00:13:43,710 --> 00:13:46,290 Dhe një herë ju keni marrë parasysh ato lloje, 258 00:13:46,290 --> 00:13:49,300 gjëra vetëm sinqerisht të fillojë për të punuar mjaft mirë. 259 00:13:49,300 --> 00:13:52,520 >> Pra, në këtë rast, ne atëherë do të kryejnë string varg 260 00:13:52,520 --> 00:13:56,040 duke hedhur në mënyrë eksplicite numër i plotë në një varg 261 00:13:56,040 --> 00:13:58,490 nga ambalazhi atë në këtë Kapitali funksion S String, 262 00:13:58,490 --> 00:14:03,510 dhe pastaj duke përdorur varg string Operatori për të ndryshuar variablin tonë etiketë, 263 00:14:03,510 --> 00:14:06,280 dhe pastaj të shtypura it out. 264 00:14:06,280 --> 00:14:08,420 >> Deri më tani, në mënyrë të mirë? 265 00:14:08,420 --> 00:14:12,020 Të gjithë të drejtë, le të lëvizë. 266 00:14:12,020 --> 00:14:16,300 >> Tani ka një shumëllojshmëri të të dhënave Llojet që ne mund të përdorin në Swift. 267 00:14:16,300 --> 00:14:21,620 Siç e keni bërë për të mësuar, ne mund të krijojë një rrjet të ndryshueshëm. 268 00:14:21,620 --> 00:14:26,140 Dhe kjo array mund vetëm përmbajnë një lloj të vetëm. 269 00:14:26,140 --> 00:14:30,360 >> Pra, në këtë rast, ne jemi duke shkuar për të krijuar një vargjeve të ndryshueshme e integers, të cilat 270 00:14:30,360 --> 00:14:34,800 ne do të thërrasë nota, dhe ne do të jetë në gjendje për të ruajtur se në këtë grupim katror 271 00:14:34,800 --> 00:14:38,650 format si ju kam rritur të mësuar për në një shumëllojshmëri të gjuhëve të tjera. 272 00:14:38,650 --> 00:14:41,150 Por vini re se ne jemi këtu përcaktimin e disa gjërave. 273 00:14:41,150 --> 00:14:45,350 notat është një variable-- i ndryshueshëm ne nuk e përdorin fjalen let. 274 00:14:45,350 --> 00:14:49,620 Kështu që do të thotë që ne pastaj mund të modifikoj Përmbajtja e kësaj grup. 275 00:14:49,620 --> 00:14:53,420 Ai është i tipit Array Int, dhe ne mund të them se 276 00:14:53,420 --> 00:14:56,260 bazuar në këto kllapa katrore këtu. 277 00:14:56,260 --> 00:14:58,930 >> Tani një nga gjërat e bukur në lidhje me këtë është se ne 278 00:14:58,930 --> 00:15:02,310 kanë qasje në një shumë të informacion shtesë 279 00:15:02,310 --> 00:15:07,110 për grup vetëm duke përdorur disa thjeshtë dot simbol. 280 00:15:07,110 --> 00:15:10,500 Kështu për shembull, grades.count siguron për ne 281 00:15:10,500 --> 00:15:14,820 numri i artikujve që ekzistojnë në atë grup, të cilat ne pastaj mund të hyni goxha 282 00:15:14,820 --> 00:15:19,090 lehtë thjesht duke përdorur atë dot simbol. 283 00:15:19,090 --> 00:15:21,830 >> Nëse ju doni të shtoni shtesë Artikuj në këtë grup, 284 00:15:21,830 --> 00:15:27,220 ju nuk mund të bëjë stilin PHP ku ju vetëm në mënyrë eksplicite të përcaktuar, 285 00:15:27,220 --> 00:15:30,910 në një indeks të caktuar, disa vlera që ju doni të futur. 286 00:15:30,910 --> 00:15:37,210 Në vend të kësaj, përdorni append metodë në llojin array 287 00:15:37,210 --> 00:15:40,920 për të append atë artikull, 95, në këtë listë. 288 00:15:40,920 --> 00:15:45,990 >> Deri tani ky grup ka në vijim contents-- 100, 0, 90, 85. 289 00:15:45,990 --> 00:15:49,270 Dhe tani ne kemi bashkangjitur 95 për të se si. 290 00:15:49,270 --> 00:15:51,830 >> Ka mënyra të tjera ne mund të append gjëra. 291 00:15:51,830 --> 00:15:55,030 Ju mund të përdorni të vërtetë një operator përmbledhje, 292 00:15:55,030 --> 00:15:59,200 e cila do të interpretohet si një operacion grup append. 293 00:15:59,200 --> 00:16:04,680 Dhe pastaj ju mund të append një tjetër array, përmbajtja e të cilit janë 70 dhe 80, 294 00:16:04,680 --> 00:16:05,560 për këtë grup. 295 00:16:05,560 --> 00:16:08,250 Deri tani ne kemi Përmbajtja në këtë variabël 296 00:16:08,250 --> 00:16:17,220 grades-- 100, 0, 90, 85, 95, 70, dhe 80. 297 00:16:17,220 --> 00:16:21,850 Kjo është vetëm një sintaktik bukur pak sheqer se Swift siguron për ne. 298 00:16:21,850 --> 00:16:23,850 >> Pra, nëse ne duam të mbledhë notat, ne jemi ndoshta 299 00:16:23,850 --> 00:16:27,340 do të duan të iterate mbi çdo send në këtë lak. 300 00:16:27,340 --> 00:16:32,150 Dhe ne kemi, në Swift, nocioni e një për lak si ju do të presin. 301 00:16:32,150 --> 00:16:35,350 Por mënyra që ne të tregojnë një varg është paksa e ndryshme. 302 00:16:35,350 --> 00:16:37,790 Pra, në këtë rast, për të përmbledhur gjithçka, ne do të 303 00:16:37,790 --> 00:16:40,650 do të krijojë një të përkohshme quajtur shumë të ndryshueshme në mënyrë për ne 304 00:16:40,650 --> 00:16:42,580 për të ruajtur këtë akuzë. 305 00:16:42,580 --> 00:16:44,430 >> Dhe vini re për tonë Ndërtimi loop këtu. 306 00:16:44,430 --> 00:16:46,820 Për indeksin në 0 .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Pra, ky ndërtim, 0 .. 00:17:01,860 duke thënë se ne jemi duke shkuar për të krijuar një varg të numrave të plotë nga 0 deri 310 00:17:01,860 --> 00:17:05,750 për të, por duke përjashtuar grades.count. 311 00:17:05,750 --> 00:17:09,577 Kështu që kjo do të jetë 0, 1, 2, 3, 4, 5, deri në një shumë megjithatë 312 00:17:09,577 --> 00:17:10,410 para grades.count. 313 00:17:10,410 --> 00:17:14,160 >> Pra, kjo është e ndryshme se sa ne do të përdoret në mënyrë tipike për sythe 314 00:17:14,160 --> 00:17:18,569 ku ju do të keni disa indeks ndryshueshme, vendosur atë të barabartë me 0 në fillim, 315 00:17:18,569 --> 00:17:25,480 dhe pastaj të integrohen që deri disa Vlera më pak se numërimin e artikujve 316 00:17:25,480 --> 00:17:27,140 në atë rrjet. 317 00:17:27,140 --> 00:17:29,820 >> Pra, ka një modifikim për këtë, në fakt, 318 00:17:29,820 --> 00:17:35,010 e cila na lejon për të shumë lehtë vendosur lloje të ndryshme të sillet. 319 00:17:35,010 --> 00:17:40,570 Në qoftë se ju të ndryshojë këtë varg të tre pika, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 kjo paraqet varg 0 të grades.count përfshirëse, 321 00:17:45,120 --> 00:17:49,260 do të thotë se ky numër është edhe pastaj të përfshira në atë varg. 322 00:17:49,260 --> 00:17:52,110 >> Por kjo është shumë i dobishëm për këto gjëra të sakta, 323 00:17:52,110 --> 00:17:54,590 kur ne kemi për të kryer iterations mbi lak 324 00:17:54,590 --> 00:17:59,630 sepse këto indekse janë të futura zero, siç e kemi parë në gjuhë të tjera 325 00:17:59,630 --> 00:18:02,360 gjithashtu. 326 00:18:02,360 --> 00:18:05,210 Çdo pyetje në këtë për lak? 327 00:18:05,210 --> 00:18:10,660 >> Kështu që nuk ka përkufizim nënkuptuar i këtij indeksi variabël, 328 00:18:10,660 --> 00:18:14,350 vlera e të cilit fillon në 0, dhe vazhdon në çdo ripërsëritje loop 329 00:18:14,350 --> 00:18:17,950 për rritjen nga 1 deri deri një pikë që është e barabartë me grades.count, 330 00:18:17,950 --> 00:18:20,380 në të cilën pikë, loop aborts. 331 00:18:20,380 --> 00:18:23,730 >> Vini re se në vargun tonë interpolation këtu, 332 00:18:23,730 --> 00:18:26,910 ne fakt mund të kryejnë disa thjeshtë manipulimet në këto vlera. 333 00:18:26,910 --> 00:18:31,230 Pra, indeksi plus 1 do të vërtetë të kryejnë një përmbledhje e kësaj vlere 334 00:18:31,230 --> 00:18:34,780 sepse indeksi është, në ky rast, një numër të plotë. 335 00:18:34,780 --> 00:18:37,810 Dhe në atë moment, ajo do të pastaj do të konvertohet në një varg 336 00:18:37,810 --> 00:18:42,230 dhe interpoluar në këtë varg këtu, dhe të shtypura jashtë si ne do të presim. . 337 00:18:42,230 --> 00:18:44,520 >> Dhe gjëja e bukur rreth vargjeve këtu është 338 00:18:44,520 --> 00:18:50,730 se ne jemi në gjendje të ketë Vlerat ngarkuar dhe vlerat vendosjen 339 00:18:50,730 --> 00:18:54,080 duke përdorur simbol katror kllapa si ne kemi parë në gjuhë të tjera si edhe. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> Të gjithë të drejtë, kështu që nga këtu, ne tani llogaritin shumën tonë të të gjitha notave tona. 342 00:19:01,030 --> 00:19:02,780 Tani lloj tjetër hap logjik do të ishte 343 00:19:02,780 --> 00:19:07,580 për të bërë një operacion ndarje të gjetur nga mesatarja e këtyre notave. 344 00:19:07,580 --> 00:19:10,150 Por diçka e rëndësishme këtu po ndodh që 345 00:19:10,150 --> 00:19:15,020 është se kjo shumë është ndoshta një numër të plotë. 346 00:19:15,020 --> 00:19:18,020 Por ne kemi nevojë për të kryer disa lloj i ndarjes dyfishtë. 347 00:19:18,020 --> 00:19:20,600 Dhe kjo do të jetë shumë e rëndësishme kur 348 00:19:20,600 --> 00:19:24,140 ne duam të kryer këtë operacion, sepse ajo që ne jemi duke thënë 349 00:19:24,140 --> 00:19:28,430 është se ne kemi nevojë për të vërtetë kryejnë ndarje në dy dyshe. 350 00:19:28,430 --> 00:19:31,370 Dhe përsëri, sepse Swift është shtypur shumë të fuqishëm, 351 00:19:31,370 --> 00:19:36,760 ne duhet në mënyrë të qartë të vendosur të gjithë të Artikuj në dyshe para se ne fakt 352 00:19:36,760 --> 00:19:38,300 të kryer këtë operacion. 353 00:19:38,300 --> 00:19:40,550 >> Pra, në mënyrë që ne të kryejnë ndarje të dyfishtë, 354 00:19:40,550 --> 00:19:43,730 kjo nuk është e mjaftueshme për vetëm një e këtyre artikujve për jetë të dyfishtë. 355 00:19:43,730 --> 00:19:46,400 Dy prej tyre duhet të jetë një të dyfishtë në mënyrë që të shpejtë 356 00:19:46,400 --> 00:19:50,860 të jetë i sigurt se ky është ajo që ne duam të bëjmë. 357 00:19:50,860 --> 00:19:54,360 Pra, ne do role në mënyrë eksplicite shuma që ne kemi llogaritur mbi 358 00:19:54,360 --> 00:19:58,970 dhe numërimin e notave në dyshe, dhe pastaj të kryer këtë operacion dhe dyqan 359 00:19:58,970 --> 00:20:02,390 që në këtë variabël të re, ose më mirë kjo konstante të ri të quajtur mesatare, 360 00:20:02,390 --> 00:20:06,810 e cila do të ketë çfarë lloji, ju imagjinoni? 361 00:20:06,810 --> 00:20:07,587 Të dyfishtë, po. 362 00:20:07,587 --> 00:20:09,420 Pra, në këtë rast, ne nuk duhet të specifikojë atë 363 00:20:09,420 --> 00:20:13,450 për shkak se ajo mund të nxirret nga Operacioni çfarë lloji të mesatares së të dhënave 364 00:20:13,450 --> 00:20:14,730 do të jetë. 365 00:20:14,730 --> 00:20:19,025 Dhe Swift në përgjithësi është shumë e mirë për të qenë në gjendje të tregoj llojet. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> A doni të shihni këtë drejtuar, ose mund të lëvizë? 368 00:20:24,200 --> 00:20:25,640 Unë dua të do të mbajë. 369 00:20:25,640 --> 00:20:28,130 Çdo pyetje mbi ndonjë nga këto? 370 00:20:28,130 --> 00:20:28,630 I madh. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Tani ne jemi duke shkuar për të filluar për të marrë në funksionet e mira stuff-- përcaktimin, 373 00:20:35,010 --> 00:20:39,090 dhe disa lloje të tjera që janë unike për Swift që ju nuk e keni 374 00:20:39,090 --> 00:20:41,620 shihet në gjuhë të tjera deri në këtë pikë, 375 00:20:41,620 --> 00:20:46,290 por ata janë të pranishëm në tjetrën gjuhë që ju mund të gjeni më vonë. 376 00:20:46,290 --> 00:20:48,210 Pra, së pari, nëse ju doni për të përcaktuar një funksion, 377 00:20:48,210 --> 00:20:52,170 ju përcaktoni atë me fjalën shokuar funksion, dhe pastaj emrin funksioni, 378 00:20:52,170 --> 00:20:56,710 dhe pastaj në kllapa, argumentet se ju doni që funksion të pranojë. 379 00:20:56,710 --> 00:21:00,280 Argumentet duhet gjithashtu specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 duhet të specifikojë llojin e të dhënave që ata janë, përveç nëse ata mund të nxirret. 381 00:21:05,010 --> 00:21:07,500 Dhe ne do të shohim se pak Caveat në vetëm pak. 382 00:21:07,500 --> 00:21:09,920 >> Pra, në këtë rast ne kemi një Funksioni i quajtur printGradeCount. 383 00:21:09,920 --> 00:21:12,840 Ne jemi duke shkuar për të pranuar një variable-- ose më mirë në këtë rast, 384 00:21:12,840 --> 00:21:14,450 një constant-- quajtur gradebook. 385 00:21:14,450 --> 00:21:18,517 Dhe kjo do të jetë e shkruani sërë integers. 386 00:21:18,517 --> 00:21:20,600 Tani ka diçka kjo është me të vërtetë e rëndësishme këtu 387 00:21:20,600 --> 00:21:21,849 që unë dua që ju të kuptoni. 388 00:21:21,849 --> 00:21:27,560 Kjo është se si parazgjedhje, këto argumente që janë të inputeve në këtë funksion janë 389 00:21:27,560 --> 00:21:34,380 përcaktuar me një fjalen nënkuptuar LET, që do të thotë se unë nuk mund të modifikoni këtë 390 00:21:34,380 --> 00:21:39,850 ndryshueshme gradebook këtu. 391 00:21:39,850 --> 00:21:43,360 Dhe kjo lloj kuptim, sepse ju jeni duke kaluar të dhënat në. 392 00:21:43,360 --> 00:21:45,860 Dhe ju ndoshta nuk e duan atë të ndryshohet nga nën ju. 393 00:21:45,860 --> 00:21:50,800 Është e mundur për të përmendur në mënyrë eksplicite se kjo është një variabël duke vënë 394 00:21:50,800 --> 00:21:52,070 fjalen var këtu. 395 00:21:52,070 --> 00:21:56,832 Por kjo është një Gotcha që ne kemi njerëzit vënë re kanë bërë në të kaluarën 396 00:21:56,832 --> 00:21:59,790 është se ata supozohet se ajo do të jetë një variabël, kur, në fakt, atë 397 00:21:59,790 --> 00:22:02,640 është një konstante. 398 00:22:02,640 --> 00:22:07,340 >> Të gjithë të drejtë, kështu që këtu pra, në këtë rast, ne nuk jemi të specifikuar asnjë lloj të kthimit. 399 00:22:07,340 --> 00:22:09,460 Ne do të ju tregojnë se si për të bërë që në një moment të vetëm. 400 00:22:09,460 --> 00:22:12,340 Por vini re se këtu kemi vetëm një të thjeshtë, nëse kusht. 401 00:22:12,340 --> 00:22:14,560 Nëse librin e notave është bosh, e cila në këtë rast 402 00:22:14,560 --> 00:22:19,310 është vetëm pronë e këtij numër i plotë grup, atëherë kemi të shtypura nga diçka. 403 00:22:19,310 --> 00:22:23,100 Përndryshe bëjmë diçka tjetër. 404 00:22:23,100 --> 00:22:25,000 >> Shumë i thjeshtë deri tani unë mendoj. 405 00:22:25,000 --> 00:22:27,960 Por të ndaluar mua nëse keni ndonjë pyetje. 406 00:22:27,960 --> 00:22:33,350 >> Tani ky funksion, mesatarisht, gjithashtu merr disa argumente, ose më mirë një argument, 407 00:22:33,350 --> 00:22:37,507 i cili është librin e notave, dhe kjo kohë do të kthehet një lloj të dyfishtë. 408 00:22:37,507 --> 00:22:39,340 Për shkak se ajo është informatikë mesatarja dhe kjo është 409 00:22:39,340 --> 00:22:45,010 do të kthehen në fakt se mesatare llogaritur në vijën e quajtur. 410 00:22:45,010 --> 00:22:50,070 >> Në këtë rast, ne specifikojë llojin kthehen pas një shigjetë. 411 00:22:50,070 --> 00:22:53,260 Dhe kjo mund të ndihen lloj i pazakontë në fillim. 412 00:22:53,260 --> 00:22:55,610 Ju keni rritur mësuar për vendosjen e kthimit 413 00:22:55,610 --> 00:22:57,720 lloji para emrit të funksionit. 414 00:22:57,720 --> 00:23:00,310 Por në qoftë se ju mendoni për këtë në aspektin e matematikës, 415 00:23:00,310 --> 00:23:03,320 si kur ju keni matematikë që përcaktojnë një funksion, 416 00:23:03,320 --> 00:23:06,807 ju keni një funksion me disa inputeve, dhe ajo prodhon një prodhim. 417 00:23:06,807 --> 00:23:08,890 Dhe kjo është pikërisht ajo kjo është menduar për të imituar. 418 00:23:08,890 --> 00:23:12,460 Dhe ka disa gjuhë të tjera që kanë sintaksë të ngjashme, si dhe, 419 00:23:12,460 --> 00:23:15,674 por ndoshta askush që ju keni parë në CS50. 420 00:23:15,674 --> 00:23:17,090 Por ende nuk do të jetë i hutuar nga ajo. 421 00:23:17,090 --> 00:23:21,650 Shigjeta do të thotë se çfarë po ndodh të kthehet në këtë rast. 422 00:23:21,650 --> 00:23:23,650 OK, kështu që si do të shkojmë për të llogaritur këtë mesatare? 423 00:23:23,650 --> 00:23:25,649 E pra, nëse librin e notave është e zbrazët, edhe atëherë ne jemi 424 00:23:25,649 --> 00:23:30,731 do të kthehen 0, e cila ndoshta një mënyrë e arsyeshme për të trajtuar këtë. 425 00:23:30,731 --> 00:23:32,980 Unë nuk e di, le të vijë përsëri në se në një pak. 426 00:23:32,980 --> 00:23:34,688 Kjo nuk mund të vërtetë të jetë një mënyrë e arsyeshme 427 00:23:34,688 --> 00:23:38,310 për të llogaritur një mesatare nëse ne kemi një gradebook bosh. 428 00:23:38,310 --> 00:23:41,260 >> Atëherë ne do të kryejnë vetëm mbledhje tonë. 429 00:23:41,260 --> 00:23:43,900 Vini re se këtu ne fakt kanë një version alternativ të një 430 00:23:43,900 --> 00:23:49,190 për lak, e cila na lejon të iterate mbi çdo send të vetëm në një rrjet 431 00:23:49,190 --> 00:23:53,630 dhe vendin e çdo element në ndryshore e vet. 432 00:23:53,630 --> 00:23:56,200 Duke specifikuar për klasën në gradebook, ajo që ne jemi duke thënë 433 00:23:56,200 --> 00:24:00,560 është se ne jemi duke shkuar për implicite të krijojë një konstante të ri të quajtur 434 00:24:00,560 --> 00:24:05,180 klasën që do të përfaqësojë çdo send unik në librin e notave 435 00:24:05,180 --> 00:24:06,769 çdo herë që të iterates lak. 436 00:24:06,769 --> 00:24:08,560 Kështu që herën e parë që është e drejtuar, klasa do të 437 00:24:08,560 --> 00:24:09,800 të jetë pika e parë në librin e notave. 438 00:24:09,800 --> 00:24:12,300 Herën e dytë ajo do të jetë e Pika e dytë, e kështu me radhë e kështu me radhë 439 00:24:12,300 --> 00:24:15,970 deri gradebook ka shteruar veten e elementeve. 440 00:24:15,970 --> 00:24:20,390 Atëherë ne do të jetë në gjendje për të përmbledhur se klasën në ndryshore tonë përmbledhje 441 00:24:20,390 --> 00:24:22,570 dhe kthimi mesatar tonë siç e kam parë më parë. 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 OK, ndonjë pyetje? 444 00:24:26,950 --> 00:24:27,699 Po? 445 00:24:27,699 --> 00:24:28,990 Audienca: Unë kam dy pyetje. 446 00:24:28,990 --> 00:24:33,586 Numri një, hipotetikisht, mund ju drejtuar numër i plotë në këtë? 447 00:24:33,586 --> 00:24:35,604 A nuk duhet të jetë një të dyfishtë, është e saktë? 448 00:24:35,604 --> 00:24:37,520 DAN AMRMENDARIZ: A mund të përsëris këtë pyetje? 449 00:24:37,520 --> 00:24:39,587 Audienca: A mund ta bëj integer si mesatare? 450 00:24:39,587 --> 00:24:41,670 DAN AMRMENDARIZ: A mund të të bëjë integer si mesatare? 451 00:24:41,670 --> 00:24:45,015 Pra kthehen një numër të plotë mesatare në vend të një të dyfishtë? 452 00:24:45,015 --> 00:24:48,204 >> Audienca: Return-- ju kanë që tani më poshtë. 453 00:24:48,204 --> 00:24:49,870 DAN AMRMENDARIZ: Të drejtë këtu, kthehen 0.0? 454 00:24:49,870 --> 00:24:51,790 Audienca: Po, vetëm të kthehen 0. 455 00:24:51,790 --> 00:24:56,590 Pra, kjo do të jetë ose 80 apo 85, por jo 85.2. 456 00:24:56,590 --> 00:24:59,465 >> DAN AMRMENDARIZ: Pra, në këtë rast, kështu që nuk ka një çift mënyra të ndryshme 457 00:24:59,465 --> 00:25:00,090 të përgjigjem se. 458 00:25:00,090 --> 00:25:02,760 Më lejoni të përgjigjem ato në mënyrë. 459 00:25:02,760 --> 00:25:06,740 Pra, nëse unë vetëm të bëjë këtë kthim 0, a 0 është një numër i plotë vlerë. 460 00:25:06,740 --> 00:25:09,730 Dhe kështu që do të shkaktojë një lloj gabim për këtë rast 461 00:25:09,730 --> 00:25:13,210 për shkak se ajo është duke pritur një të dyfishtë por pastaj është kthyer një numër të plotë. 462 00:25:13,210 --> 00:25:16,770 Nëse unë dua të kthehen një numër të plotë, unë mund. 463 00:25:16,770 --> 00:25:20,450 Unë mund të vendosni llojin e kthimit të int, kthehen 0 këtu, 464 00:25:20,450 --> 00:25:22,047 dhe nuk kryejnë ndarje të dyfishtë. 465 00:25:22,047 --> 00:25:23,880 Por atëherë ne do të jemi duke bërë ndarjen integer. 466 00:25:23,880 --> 00:25:27,080 Dhe kështu që ne pastaj nuk do të marrë mesatare që ne ndoshta do të presim. 467 00:25:27,080 --> 00:25:29,210 Por, po ne mund të modifikoj Llojet në këtë mënyrë. 468 00:25:29,210 --> 00:25:32,598 >> Audienca: Dhe së dyti, ju të ketë një të dyfishtë mbi krye. 469 00:25:32,598 --> 00:25:35,502 Por poshtë, kur ju kthehen Double Double, 470 00:25:35,502 --> 00:25:38,280 kjo është tashmë automatikisht kthimit format dyfishtë. 471 00:25:38,280 --> 00:25:42,278 Pse ju ende nevojë për të përcaktuar atë me shigjetë në krye me një të dyfishtë? 472 00:25:42,278 --> 00:25:45,010 >> DAN AMRMENDARIZ: Pra, në rast, kjo është pjesë 473 00:25:45,010 --> 00:25:50,580 i the-- kështu për të përsëritur pyetjen, sepse kjo është e nënkuptuar nga kthimi 474 00:25:50,580 --> 00:25:56,030 Llojet këtu, çfarë lloji kjo në fakt është, ne duhet të jetë i qartë me Swift 475 00:25:56,030 --> 00:25:59,970 në lidhje me atë që ne duam të kthimi nga këtij funksioni 476 00:25:59,970 --> 00:26:02,690 kështu që kur ajo kryen shkruani kontrolluar, ajo mund të bëni të sigurtë 477 00:26:02,690 --> 00:26:05,850 se ajo që kemi shkruar në të vërtetë poshtë në fakt përputhet me atë. 478 00:26:05,850 --> 00:26:10,225 Pra, kjo është lloj i si një kontroll me veten lloj të situatës. 479 00:26:10,225 --> 00:26:11,050 Por ka are-- 480 00:26:11,050 --> 00:26:12,560 >> Audienca: [padëgjueshme] shigjetë? 481 00:26:12,560 --> 00:26:19,490 >> DAN AMRMENDARIZ: Ka raste kur ne mund të specifikoni se ne mund implicite 482 00:26:19,490 --> 00:26:21,550 vendosur llojin e kthimit. 483 00:26:21,550 --> 00:26:23,940 Por në këtë rast, unë nuk e bëj mendoj se do të punojë. 484 00:26:23,940 --> 00:26:26,190 Ka disa sintaksë tjetër se ne do të shohim më vonë. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> Të gjithë të drejtë, kështu që ky burim Kodi është një pak të ndryshme 487 00:26:35,280 --> 00:26:41,839 sepse ky parses argumente nga funksioni që ne jemi duke bërë thirrje. 488 00:26:41,839 --> 00:26:44,130 Më lejoni të ju tregojnë se si funksionon para se ne fakt të lëvizë 489 00:26:44,130 --> 00:26:48,050 për disa gjëra interesante që po ndodh në Swift. 490 00:26:48,050 --> 00:26:51,870 >> Pra, në këtë rast, në qoftë se unë vetëm të drejtuar këtë Kodi, vëreni se ajo që po bën 491 00:26:51,870 --> 00:26:54,900 ndërsa is--, kjo lloj më jep një gabim të pazakontë. 492 00:26:54,900 --> 00:26:59,730 Unë kam nevojë për të kaluar atë një çift të integers si një argument command line. 493 00:26:59,730 --> 00:27:06,220 Pra, le të shohim, 150 dhe 80, dhe hit Enter për të gjetur se çfarë është e vërtetë për ta bërë. 494 00:27:06,220 --> 00:27:09,890 Është pranuar secili prej këto vlera si numra të plotë. 495 00:27:09,890 --> 00:27:12,040 Është e inputting ato në një gradebook. 496 00:27:12,040 --> 00:27:14,470 Dhe pastaj kjo është kryer se llogaritja mesatare 497 00:27:14,470 --> 00:27:16,650 dhe kompjuteri se si ne do të presim. 498 00:27:16,650 --> 00:27:19,950 >> Por me sa duket ka diçka ndodh në me këtë diçka refuzues 499 00:27:19,950 --> 00:27:23,300 diçka si një numër të plotë. 500 00:27:23,300 --> 00:27:27,300 Si ju mund të kujtojnë prej kur ishim që kanë të bëjnë me argumente command line 501 00:27:27,300 --> 00:27:32,640 në C dhe gjuhë të tjera, shumë të parë Pika 0-të në këtë argument command line 502 00:27:32,640 --> 00:27:35,774 Lista është emri i komandës se ne fakt ekzekutuar. 503 00:27:35,774 --> 00:27:38,690 Pra, në këtë rast, unë jam vetëm looping mbi të gjitha argumentet command line. 504 00:27:38,690 --> 00:27:41,650 Por unë nuk jam duke bërë çdo lloj të dashuroj kontrolloni për të kaloni mbi atë të parën. 505 00:27:41,650 --> 00:27:45,920 Unë jam vetëm në mënyrë eksplicite ose implicite unë jam kontrollimin e cila prej këtyre llojeve 506 00:27:45,920 --> 00:27:49,900 janë integers para unë në fakt kryer këtë llogaritje. 507 00:27:49,900 --> 00:27:52,420 >> Dhe kjo është në thelb çfarë po ndodh këtu. 508 00:27:52,420 --> 00:27:55,860 Për çdo argument në argumentet e procesit të, 509 00:27:55,860 --> 00:27:59,210 Unë jam duke shkuar për të kryer disa kontroll. 510 00:27:59,210 --> 00:28:01,970 Dhe në këtë rast, unë jam duke shkuar në përpjekje për të parë konvertuar 511 00:28:01,970 --> 00:28:07,620 ky argument në një numër të plotë nga kryerjen e një Typecast të qartë, 512 00:28:07,620 --> 00:28:12,310 sepse ajo është, në të dhënat, një varg dhe jo në fakt një numër të plotë. 513 00:28:12,310 --> 00:28:18,140 >> Por kjo është lloj i një sintaksë të pazakontë, nëse klasën e le të barabartë Int (argumenti). 514 00:28:18,140 --> 00:28:21,120 Çfarë është në të vërtetë ndodh këtu është jashtëzakonisht e 515 00:28:21,120 --> 00:28:24,390 e rëndësishme për të përdorur Swift tuaj. 516 00:28:24,390 --> 00:28:27,610 Kjo është duke përdorur atë që e quajtur një lloj fakultative. 517 00:28:27,610 --> 00:28:34,790 >> Pra ky funksion, Int (argumenti), kthen jo vetëm një numër të plotë, por kthimit 518 00:28:34,790 --> 00:28:37,470 atë që quhet një numër të plotë opsional. 519 00:28:37,470 --> 00:28:41,200 Dhe kështu kjo është lloj i një tip në krye të një lloji. 520 00:28:41,200 --> 00:28:45,900 Ju mund të lloj të imagjinojmë atë si ajo është kthyer si një paketë. 521 00:28:45,900 --> 00:28:47,750 Dhe kur ju të hapur atë pako, ai ose 522 00:28:47,750 --> 00:28:53,930 ka një numër të plotë, e cila është rezultat, ose ajo ka absolutisht asgjë në atë në të gjitha. 523 00:28:53,930 --> 00:28:58,140 Dhe kjo është e dobishme si një error checking mekanizëm, sepse në këtë rast 524 00:28:58,140 --> 00:29:02,080 ne mund të gjeni, ishte kjo lloj konvertimit të suksesshme? 525 00:29:02,080 --> 00:29:05,810 Në qoftë se kjo ishte, atëherë kjo është në fakt do të ketë një numër të plotë brenda. 526 00:29:05,810 --> 00:29:08,750 Përndryshe ajo do të ketë disa Vlera që ne do të thërrasë zero, e cila 527 00:29:08,750 --> 00:29:10,920 është përfaqësues i asnjë numër të plotë në të gjitha. 528 00:29:10,920 --> 00:29:13,270 Është me të vërtetë përfaqësuese e asgjë. 529 00:29:13,270 --> 00:29:18,130 >> Dhe kështu kjo nëse ndërtimi na lejon që të hap këtë paketë, 530 00:29:18,130 --> 00:29:19,850 që fakultative detyrueshme. 531 00:29:19,850 --> 00:29:25,560 Dhe në qoftë se ne jemi në gjendje të hap që paketë dhe për të gjetur një numër të plotë brenda, 532 00:29:25,560 --> 00:29:27,720 atëherë ajo që ne jemi duke thënë këtu është se ne do të atëherë 533 00:29:27,720 --> 00:29:33,090 lejojmë që vlera e të vendosen në kjo konstante quajtur klasën. 534 00:29:33,090 --> 00:29:36,590 Dhe kjo pjesë e në qoftë se deklarata, pjesa e sipërme e në qoftë se deklarata 535 00:29:36,590 --> 00:29:40,390 do të kandidojë, sepse kjo çmbështjell ishte i suksesshëm. 536 00:29:40,390 --> 00:29:43,290 >> Në qoftë se ndodh pikërisht kështu që ka pasur një gabim mbase 537 00:29:43,290 --> 00:29:47,040 në këtë konvertim të qartë tipi nga një varg në një numër të plotë, ndoshta 538 00:29:47,040 --> 00:29:49,160 kjo është ABC vlera për shembull. 539 00:29:49,160 --> 00:29:52,120 Dhe kjo është në fakt nuk ndodh për të kthyer një numër të plotë. 540 00:29:52,120 --> 00:29:55,520 Atëherë ajo do të kthehet zero, i cili nuk është një numër i plotë. 541 00:29:55,520 --> 00:29:57,570 Dhe kjo në qoftë se deklarata mirë atëherë dështojnë. 542 00:29:57,570 --> 00:30:01,930 klasën e nuk do të ekzistojnë, sepse ajo nuk ka përmbajtje numer i plote. 543 00:30:01,930 --> 00:30:06,391 Dhe kjo do të drejtuar këtë bllok tjetër në vend. 544 00:30:06,391 --> 00:30:06,890 Po? 545 00:30:06,890 --> 00:30:09,652 >> AUDIENCA: zero është N-I-L? 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ: nil është N-I-L, po. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> Pra, kjo është ndoshta një nga më të gjërat më të vështira për Swift, 549 00:30:20,310 --> 00:30:23,690 sidomos kur ju jeni në barërat e këqija në një app IOS 550 00:30:23,690 --> 00:30:27,442 dhe ju jeni në të vërtetë duke u përpjekur për të bërë disa të zhvillimit atje. 551 00:30:27,442 --> 00:30:29,400 Ajo do të jetë yelling me ju në lidhje fakultative. 552 00:30:29,400 --> 00:30:33,050 Ajo do të jetë i kërkuar ju për pikëpyetjet dhe pikë thirrje. 553 00:30:33,050 --> 00:30:37,100 Por sapo ju të kuptoj out-- nëse ju kushtojnë disa kohë për të parafytyruar 554 00:30:37,100 --> 00:30:41,990 çfarë po ndodh me lloje opsionale, ju do të ruani veten shumë dhimbje koke 555 00:30:41,990 --> 00:30:46,040 si ju janë duke u përpjekur për shkruani një aplikacion në Swift. 556 00:30:46,040 --> 00:30:47,660 >> Është në fakt një tipar shumë të fuqishme. 557 00:30:47,660 --> 00:30:49,826 Dhe ju do të keni vetëm për të të marrë fjalën time për të tani për tani. 558 00:30:49,826 --> 00:30:52,620 Por ne do të shohim këtë ndërtim dhe disa të tjerë si ai 559 00:30:52,620 --> 00:30:56,740 në disa të kodit tjetër burim që ne do të ju tregojnë se në vetëm pak. 560 00:30:56,740 --> 00:31:00,440 >> A ka ndonjë pyetje fillestare këtu? 561 00:31:00,440 --> 00:31:03,790 562 00:31:03,790 --> 00:31:08,690 Pra takeaway e rëndësishme është që një lloj opsional është lloj i një metatype. 563 00:31:08,690 --> 00:31:12,500 Ajo ose ka një vlerë, dhe nëse e bën atë, atëherë ajo 564 00:31:12,500 --> 00:31:18,110 ndoshta do të ketë këtë vlerë lidhur me të, ose ajo nuk ka asnjë vlerë çfarëdo qoftë, 565 00:31:18,110 --> 00:31:19,620 dhe është përfaqësuar nga zero. 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 Pjesa tjetër e kësaj është ndoshta si ju do të presin. 568 00:31:28,870 --> 00:31:32,900 >> Pra, le të luftoj deri vështirësi përsëri. 569 00:31:32,900 --> 00:31:37,070 Dhe kjo kohë, le të marrin një vështrim në disa lloje të tjera të dhëna që në fakt ekzistojnë. 570 00:31:37,070 --> 00:31:41,290 Një prej tyre është fjalorë, i cili është shumë të ngjashme me fjalorë Python. 571 00:31:41,290 --> 00:31:48,270 Është disi e ngjashme me një tryezë të hash në C. Kjo është në thelb një hartë të çelësat 572 00:31:48,270 --> 00:31:49,820 ku çelësat mund të jetë vargjet. 573 00:31:49,820 --> 00:31:52,670 Dhe kur ju shikoni deri ato çelësat, Ata çelësa do të ketë një vlerë. 574 00:31:52,670 --> 00:31:56,020 Pra, kjo nuk është mjaft e një grup, por në vend të kësaj, të lidhura më ngushtë 575 00:31:56,020 --> 00:31:58,810 në një hartë hash apo një tabelë hash. 576 00:31:58,810 --> 00:32:02,420 >> Le të shohim se si kjo është menduar për të punuar para se ne fakt 577 00:32:02,420 --> 00:32:05,210 shkoni në kodin burimor vetë. 578 00:32:05,210 --> 00:32:07,680 Në qoftë se unë vetëm të drejtuar këtë, asgjë të vërtetë ndodh. 579 00:32:07,680 --> 00:32:12,430 Është thënë mua se unë jam duke pritur disa parametra të tipit në vijim. 580 00:32:12,430 --> 00:32:16,050 Kështu që unë jam duke shkuar për të siguruar të ajo disa emra problemeve të vendosur, 581 00:32:16,050 --> 00:32:18,490 kështu pset0, ndoshta kam marrë 100. 582 00:32:18,490 --> 00:32:20,790 Dhe pset1, kam marrë një 5. 583 00:32:20,790 --> 00:32:24,630 Dhe pastaj në provim, unë e bëri me të vërtetë mirë dhe mori 30. 584 00:32:24,630 --> 00:32:27,180 Dhe Oops, unë goditi një hapësirë ​​këtu. 585 00:32:27,180 --> 00:32:30,940 >> Kur unë hit Enter, ju mund të shihni ajo kryen disa llogaritje. 586 00:32:30,940 --> 00:32:33,740 Ajo thotë se gradebook është tre notat, pset1, pset0, provim. 587 00:32:33,740 --> 00:32:36,120 Dhe librin e notave ka kjo mesatare specifike. 588 00:32:36,120 --> 00:32:38,370 Pra, përsëri, ne jemi duke punuar me këtë ide gradebook, 589 00:32:38,370 --> 00:32:44,650 por ne do të vazhdojmë iterating me kompleksitetin e funksionit tonë. 590 00:32:44,650 --> 00:32:47,650 >> Pra, në fillim, ne jemi vetëm do të krijuar një funksion që 591 00:32:47,650 --> 00:32:49,390 është përgjegjëse për shtypjen e përdorimit. 592 00:32:49,390 --> 00:32:51,920 Dhe nuk është kjo dalje funksion i cili do të vetëm 593 00:32:51,920 --> 00:32:53,710 lë me forcë kërkesën. 594 00:32:53,710 --> 00:32:56,530 Kjo nuk është diçka që ju do të përdorni në iOS app. 595 00:32:56,530 --> 00:32:59,750 Ky është vetëm, në këtë rast, me një argument command line. 596 00:32:59,750 --> 00:33:01,990 Tjetra ne do të fillojnë të lëvizin në drejtim të Xcode. 597 00:33:01,990 --> 00:33:07,760 Por kjo është specifike për një komandë Linja program stil në Swift. 598 00:33:07,760 --> 00:33:11,490 >> Le të marrin një vështrim në disa nga gjërat interesante këtu. 599 00:33:11,490 --> 00:33:15,150 Le të shohim, vetëm një çift i gjëra interesante për të përmendur ndoshta 600 00:33:15,150 --> 00:33:19,930 është se në funksion tim shtypjen numrin e notave, 601 00:33:19,930 --> 00:33:26,090 ju mund të kujtojnë se unë kam atë listë i pset1 items--, pset0, dhe provim. 602 00:33:26,090 --> 00:33:29,130 Ju mund të vërtetë të shpejt dhe lehtësisht të bëjë këtë 603 00:33:29,130 --> 00:33:34,490 duke marrë librin e notave, e cila është një fjalor që ka çelësat dhe vlerat. 604 00:33:34,490 --> 00:33:38,730 Gjej të gjitha e kyç është nëpërmjet Metoda dot çelësat këtu, 605 00:33:38,730 --> 00:33:43,180 dhe pastaj të përdorin këtë joinWithSeparator, e cila pastaj do të marrë të gjithë çelësat 606 00:33:43,180 --> 00:33:48,590 që ne kishim shtypur në, pset1-- ose Na vjen keq, pset0, pset1, dhe exam-- 607 00:33:48,590 --> 00:33:53,030 dhe lidh ato së bashku duke përdorur një presje dhe një hapësirë 608 00:33:53,030 --> 00:33:55,400 për të krijuar një varg të gjatë. 609 00:33:55,400 --> 00:34:00,190 Ky operacion të bashkohen është vetëm phenomenally e dobishme në një shumëllojshmëri kontekstesh. 610 00:34:00,190 --> 00:34:03,450 Dhe kështu është kjo joinWithSeparator. 611 00:34:03,450 --> 00:34:06,939 >> Dhe kjo është një gjë që është ndryshuar nga Swift 1 deri Swift 2. 612 00:34:06,939 --> 00:34:08,730 Ka përdorur të jetë një Style-- Python nëse ju jeni 613 00:34:08,730 --> 00:34:13,219 njohur me Python-- një Python Stili bashkohen metodë në vargjet. 614 00:34:13,219 --> 00:34:15,699 Por kjo nuk është më rasti në Swift 2. 615 00:34:15,699 --> 00:34:19,400 Ju doni të përdorni këtë në qoftë se ju doni të lidh një grup të gjëra 616 00:34:19,400 --> 00:34:23,380 së bashku me një varg. 617 00:34:23,380 --> 00:34:27,889 >> Pra, ndoshta pastaj në faqen tonë Diskutimi i mesatar para, 618 00:34:27,889 --> 00:34:32,659 kjo e bën pak më shumë kuptim për ne për të vendosur funksionin mesatar 619 00:34:32,659 --> 00:34:36,610 të jetë një opsional dyfishtë në vend se vetëm një dyfishin qartë. 620 00:34:36,610 --> 00:34:39,239 Sepse kemi pasur se kusht pazakontë ku, 621 00:34:39,239 --> 00:34:41,550 çfarë nëse gradebook fakt nuk ka vlerat brenda saj? 622 00:34:41,550 --> 00:34:44,280 Çfarë duhet norma mesatare e kthimit? 623 00:34:44,280 --> 00:34:46,350 >> E pra ndoshta në C ju do të kishte bërë diçka 624 00:34:46,350 --> 00:34:50,040 si kusht një vlerë sentinel, si 0.0, ose ndoshta një numër negativ, 625 00:34:50,040 --> 00:34:53,690 apo diçka vetëm përfaqëson faktin se ka pasur disa kusht gabim 626 00:34:53,690 --> 00:34:57,910 dhe ju ndoshta nuk të vërtetë kanë aftësia për të llogaritur atë mesatare. 627 00:34:57,910 --> 00:35:05,590 E pra bukuria e specifikuar një lloj opsional do të jetë për të bërë atë. 628 00:35:05,590 --> 00:35:09,540 Dhe unë tani jam duke thënë se të gjitha këto fjalime, por ky fakt nuk përdor optionals. 629 00:35:09,540 --> 00:35:12,970 Por ne do të shohim se në vetëm minuta ku ne mund të vënë mesatare 630 00:35:12,970 --> 00:35:17,230 të jetë një lloj dëshirë të dhënat në mënyrë që në qoftë se ai në fakt kthehet disa të dhëna, atëherë 631 00:35:17,230 --> 00:35:18,470 ne do të kthehemi që të dhënat. 632 00:35:18,470 --> 00:35:20,570 Përndryshe ne do të kthehemi zero, duke thënë se kjo 633 00:35:20,570 --> 00:35:22,200 nuk ka asnjë llogaritje kuptimplotë. 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> Le të lëvizin për në diçka tjetër. 636 00:35:28,570 --> 00:35:35,910 Pra, nga këtu, ne kemi qenë në kërkim në të gjitha këto shembuj në rreshtin e komandave. 637 00:35:35,910 --> 00:35:39,470 Por me të vërtetë atë që ju jeni duke shkuar që të merret me të është Xcode. 638 00:35:39,470 --> 00:35:43,720 Dhe një nga gjërat e këndshme rreth Xcode është, dhe veçanërisht në Swift, 639 00:35:43,720 --> 00:35:47,450 është se ne kemi këtë gjë quhet një shesh lojrash. 640 00:35:47,450 --> 00:35:51,470 Dhe një shesh lojrash është aspak një app IOS. 641 00:35:51,470 --> 00:35:54,751 Por kjo ju mundëson për të eksperimentuar me Swift në një mënyrë shumë të lehtë. 642 00:35:54,751 --> 00:35:56,000 Ju mund të shtypni të gjithë kodin tuaj. 643 00:35:56,000 --> 00:35:58,140 Është bukur sintaksë theksuar këtu. 644 00:35:58,140 --> 00:36:01,600 Kur keni krijuar një skedar të ri, ajo do të kërkojë ju në qoftë se ju doni të krijoni një shesh lojrash. 645 00:36:01,600 --> 00:36:08,720 Por gjëja e bukur për Playground është se në të djathtë të dritares tuaj, 646 00:36:08,720 --> 00:36:12,020 e bën atë të vërtetë të ju tregojnë Prodhimi nga kodin tuaj. 647 00:36:12,020 --> 00:36:16,110 Pra, nëse unë lëvizni poshtë, ne mund të shohim se çfarë prodhimi i linjave të ndryshme të kodit 648 00:36:16,110 --> 00:36:17,200 në fakt ndodh të jetë. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> Pra, në këtë rast, ne do të drejtime të ndryshojë vetëm pak 651 00:36:26,790 --> 00:36:30,960 dhe të flasim për diçka që është me të vërtetë e rëndësishme për këtë mënyrë të nivelit të lartë 652 00:36:30,960 --> 00:36:34,020 se Swift vepron, dhe atë është kjo ide e mbylljeve. 653 00:36:34,020 --> 00:36:36,960 Dhe ju ndoshta keni parë këtë pak në JavaScript. 654 00:36:36,960 --> 00:36:40,770 Për ata prej jush që janë në CS50, mbylljet 655 00:36:40,770 --> 00:36:47,240 janë shumë të njohura mënyrë, shumë e mirë për të bërë të nivelit të lartë gjërat në gjuhët moderne. 656 00:36:47,240 --> 00:36:50,270 Por është gjithashtu lloj i vështirë për të përfundojë kokën tuaj rreth herë të parë. 657 00:36:50,270 --> 00:36:52,269 Pra, nëse ju kërkoni në këtë hera e parë, kjo është në rregull. 658 00:36:52,269 --> 00:36:56,740 Vetëm shikoni në kodin burimor dhe të shohim në qoftë se ju mund të kuptoj atë në shtëpi. 659 00:36:56,740 --> 00:37:01,050 >> Pra, në këtë rast, le të themi se ne duan të krijojnë një shumë të eksponentët 660 00:37:01,050 --> 00:37:04,134 me disa vlera fikse. 661 00:37:04,134 --> 00:37:05,800 Pra, në këtë rast unë mund të krijojë një funksion. 662 00:37:05,800 --> 00:37:09,270 Unë jam duke shkuar për të thirrur atë fuqia e 2 qëllimi i të cilit i vetëm në jetë 663 00:37:09,270 --> 00:37:15,770 është për të marrë disa të dhëna dhe të dyfishtë ajo, dhe të kthehet atë vlerë. 664 00:37:15,770 --> 00:37:21,210 Vini re se unë jam këtu pranuar një lloj të të dhënave. 665 00:37:21,210 --> 00:37:23,137 Ajo do të jetë një ndryshore të quajtur x. 666 00:37:23,137 --> 00:37:23,970 Është e tipit të dyfishta. 667 00:37:23,970 --> 00:37:26,190 Dhe unë jam duke shkuar për të kthyer një të dyfishtë këtu. 668 00:37:26,190 --> 00:37:29,100 Dhe unë jam vetëm duke shkuar për të bërë një shumë, sinqerisht, mjaft 669 00:37:29,100 --> 00:37:32,650 mënyrë naive të dyfishuar këtë vlerë. 670 00:37:32,650 --> 00:37:35,600 Dhe unë do të ju tregojnë përse këtë është e dobishme vetëm në një të dytë. 671 00:37:35,600 --> 00:37:40,418 >> Vini re se këtu kemi këtë varg përsëri. për diçka në 1, dot 672 00:37:40,418 --> 00:37:44,130 Dot Dot, 2, që do të thotë se ky lak do të kandidojë dy herë. 673 00:37:44,130 --> 00:37:46,480 Por kjo paraqet një variabël bedel. 674 00:37:46,480 --> 00:37:49,650 Kjo do të thotë unë nuk jam me të vërtetë duke shkuar për të të jetë duke përdorur këtë variabël kudo 675 00:37:49,650 --> 00:37:51,070 brenda këtij lak. 676 00:37:51,070 --> 00:37:55,380 Unë vetëm dua këtë linjë e kodit për të drejtuar dy herë, 677 00:37:55,380 --> 00:37:58,980 pa pasur nevojë të dini vlera e atë varg. 678 00:37:58,980 --> 00:38:02,570 >> Pra, në këtë rast unë jam running rezultatin herë x dy herë, e cila në thelb 679 00:38:02,570 --> 00:38:06,560 do të thotë se unë jam squaring këtë vlerë. 680 00:38:06,560 --> 00:38:10,230 Dhe kjo ndodh për punojnë si ne do të presim. 681 00:38:10,230 --> 00:38:16,410 Fuqia e 2, duke kaluar një vlerë prej 2.0 na jep një prodhim prej 4. 682 00:38:16,410 --> 00:38:18,810 3.2 Punimet 10.24. 683 00:38:18,810 --> 00:38:22,660 >> Tani ne mund të bëjmë një të ngjashme gjë për pushtet e 3. 684 00:38:22,660 --> 00:38:25,330 Por tani të ndryshojë vetëm varg. 685 00:38:25,330 --> 00:38:28,840 Për variabël dummy në 1 përmes 3, shumëfishohen 3 herë, 686 00:38:28,840 --> 00:38:29,830 dhe të bëjë të njëjtën gjë. 687 00:38:29,830 --> 00:38:32,240 >> Pra, kjo mund të ndjehen pak contrived. 688 00:38:32,240 --> 00:38:34,270 Por ka një rëndësi gjë këtu që 689 00:38:34,270 --> 00:38:37,770 është se në kërkim në këto dy funksione, nuk ka 690 00:38:37,770 --> 00:38:43,600 vetëm një gjë që është e ndryshme, cila është kjo vlerë në varg. 691 00:38:43,600 --> 00:38:46,910 Çdo gjë tjetër në lidhje me këto dy funksionet, fuqia e 3 dhe fuqia e 2, 692 00:38:46,910 --> 00:38:50,440 janë, në fakt, identik sepse ata punojnë në të njëjtën mënyrë. 693 00:38:50,440 --> 00:38:53,460 >> Pra, në këtë pikë, pak kambanë alarmi duhet të plaste. 694 00:38:53,460 --> 00:38:56,200 Shpresojmë se çfarë ju jeni duke thënë, ju e dini, kjo ndihet pak 695 00:38:56,200 --> 00:38:59,250 si dyfishimin e përpjekjeve. 696 00:38:59,250 --> 00:39:02,950 Ndoshta ka një mënyrë që unë do të të jetë në gjendje për të përmbledhur gjithë këtë 697 00:39:02,950 --> 00:39:06,630 dhe të sigurojë një funksion ose të krijojnë një funksion që 698 00:39:06,630 --> 00:39:11,550 bën pikërisht atë që unë dua, pa kanë nevojë të tipit atë në mënyrë eksplicite. 699 00:39:11,550 --> 00:39:15,732 Dhe kjo është ajo që pushteti e mbylljes na lejon të bëjmë. 700 00:39:15,732 --> 00:39:16,940 Pra, le të marrin një vështrim në këtë. 701 00:39:16,940 --> 00:39:18,700 Dhe unë do të shpenzojnë një çift minuta në këtë, sepse kjo 702 00:39:18,700 --> 00:39:20,310 është shumë e rëndësishme për Swift. 703 00:39:20,310 --> 00:39:22,900 Ne e shohim këtë gjatë gjithë kohës. 704 00:39:22,900 --> 00:39:24,550 Ne jemi duke shkuar për të përcaktuar një funksion. 705 00:39:24,550 --> 00:39:26,380 Ajo do të quhet powerOf. 706 00:39:26,380 --> 00:39:29,470 Ajo do të pranojë një parametër të quajtur y të tipit Int. 707 00:39:29,470 --> 00:39:32,220 Por të marrë një vështrim në llojin e kthimit. 708 00:39:32,220 --> 00:39:38,730 Lloji kthimi është, në kllapa, Double shigjetë të dyfishtë. 709 00:39:38,730 --> 00:39:43,370 Që do të thotë se këtë funksion, kjo powerOf funksion, 710 00:39:43,370 --> 00:39:46,550 është kthyer një funksion. 711 00:39:46,550 --> 00:39:50,845 Që është pranuar një të dyfishtë dhe kthimin e një të dyfishtë. 712 00:39:50,845 --> 00:39:53,720 Kështu që mund të tingëllojë si lloj i çmendur, por le të lëvizni poshtë pak 713 00:39:53,720 --> 00:39:55,060 dhe të kërkoni për të parë se çfarë ndodh. 714 00:39:55,060 --> 00:39:57,910 Ne jemi brenda këtij powerOf funksionit. 715 00:39:57,910 --> 00:40:00,760 Ne jemi duke krijuar një funksion të ri quajtur exponentiator, 716 00:40:00,760 --> 00:40:02,900 por kjo nuk ka rëndësi se çfarë është ajo. 717 00:40:02,900 --> 00:40:06,410 >> Vini re se kjo ka një vlerë input e x. 718 00:40:06,410 --> 00:40:09,910 Dhe kjo është duke marrë në një të dyfishtë dhe kthimin e një të dyfishtë. 719 00:40:09,910 --> 00:40:16,320 Dhe kjo është e njëjta kodin që ne pa më sipër, përveç se vlera e 2 720 00:40:16,320 --> 00:40:20,060 ose vlera e 3, që sipërme të lidhur në atë varg, 721 00:40:20,060 --> 00:40:23,210 është zëvendësuar me kjo vlerë e y, të cilat 722 00:40:23,210 --> 00:40:27,230 ishte parametri fillestare e funksionit tonë powerOf. 723 00:40:27,230 --> 00:40:31,700 Dhe në këtë pikë, ne exponentiator kthehen. 724 00:40:31,700 --> 00:40:33,345 Ne jemi kthyer funksionin. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> Kjo është lloj i si një defekt të vogël mendje. 727 00:40:39,550 --> 00:40:44,360 Por le të imagjinojmë se çfarë ndodh kur unë e quaj këtë funksion powerOf 728 00:40:44,360 --> 00:40:47,610 dhe të kalojë në atë disa vlera si 2. 729 00:40:47,610 --> 00:40:50,020 Çfarë kjo do të thotë është se Unë tani kanë vlerën 730 00:40:50,020 --> 00:40:55,130 2 për y, që do të thotë se kjo vlerë y në këtë funksion exponentiator 731 00:40:55,130 --> 00:40:56,410 do të jetë që vlera 2. 732 00:40:56,410 --> 00:41:01,290 Por unë jam kthyer këtë funksion exponentiator. 733 00:41:01,290 --> 00:41:05,900 >> Pra, vini re çfarë Swift thotë se unë kanë krijuar në këtë rast. 734 00:41:05,900 --> 00:41:10,550 le katror është një përkufizim, është një funksion që pranon një të dyfishtë 735 00:41:10,550 --> 00:41:12,610 dhe kthen një të dyfishtë. 736 00:41:12,610 --> 00:41:16,590 Unë kam krijuar një funksion se shesheve diçka 737 00:41:16,590 --> 00:41:19,782 duke përdorur këtë mekanizëm të drejtë këtu. 738 00:41:19,782 --> 00:41:22,490 Dhe me të vërtetë se çfarë po ndodh është që ajo është kthyer funksionin 739 00:41:22,490 --> 00:41:26,390 exponentiator, por kjo vlerë y është e mbështjellë në brendësi të saj. 740 00:41:26,390 --> 00:41:31,080 Dhe kështu që tani çdo herë që unë të përdorni këtë variabël ose kjo konstante quajtur 741 00:41:31,080 --> 00:41:35,180 katror, ​​është ajo që po ndodh të sillet si një funksion. 742 00:41:35,180 --> 00:41:39,960 Dhe kështu atëherë unë mund të telefononi atë ndryshore si unë do të thërrasë një funksion, 743 00:41:39,960 --> 00:41:43,830 dhe të kalojë në të një numër, si në këtë rast 3. 744 00:41:43,830 --> 00:41:45,910 Dhe unë pastaj do katrore këtë vlerë. 745 00:41:45,910 --> 00:41:53,340 Pra, 3 katror do pastaj bëhet 9, si ne mund të shohim këtu. 746 00:41:53,340 --> 00:41:56,530 >> Me të vërtetë i çmendur, por kjo tani më lejon mundësi 747 00:41:56,530 --> 00:41:59,040 për të krijuar funksione të tjera powerOf. 748 00:41:59,040 --> 00:42:03,680 Ashtu si unë mund të them, OK, edhe tani unë dua për të krijuar një funksion i ri, powerOf (3), 749 00:42:03,680 --> 00:42:06,290 dhe ruajtur atë në një quajtur kubike konstante. 750 00:42:06,290 --> 00:42:10,220 Dhe tani kubike do të jetë një Funksioni i veçantë që do të pastaj 751 00:42:10,220 --> 00:42:14,800 marrë disa vlera si input dhe kubike se vlera si ne mund të shohim në linjë fund 752 00:42:14,800 --> 00:42:16,420 këtu. 753 00:42:16,420 --> 00:42:18,590 kubike e 2 do të rezultojë në 8. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> Shpresojmë sende goxha i zoti. 756 00:42:22,680 --> 00:42:25,920 Ju kurrë nuk kam parë këtë më parë. 757 00:42:25,920 --> 00:42:29,990 Unë ju inkurajoj që të shikoni në mbylljet dhe hetuar këtë pak më shumë. 758 00:42:29,990 --> 00:42:33,570 Është gjëra me të vërtetë i fuqishëm ne shohim një shumë në JavaScript dhe disa gjuhë të tjera. 759 00:42:33,570 --> 00:42:37,160 Është me të vërtetë jetike për të kuptuarit API si edhe 760 00:42:37,160 --> 00:42:38,620 se ne do të merrni në vetëm një të dytë. 761 00:42:38,620 --> 00:42:39,456 Po? 762 00:42:39,456 --> 00:42:43,740 >> Audienca: Kur ju bëni powerOf (2), kllapa, dhe pastaj 763 00:42:43,740 --> 00:42:48,764 tjetër kllapa, një tjetër input-- ju jeni në thelb duke zëvendësuar sheshin. 764 00:42:48,764 --> 00:42:50,930 DAN AMRMENDARIZ: Pra shikoni në vijën e fundit këtu. 765 00:42:50,930 --> 00:42:55,930 Ajo është në fakt krejtësisht e mundur që të bëj që chaining si ju sugjeruar. 766 00:42:55,930 --> 00:43:00,990 Pra powerOf (5) do të thotë se ne jemi duke shkuar të ketë një exponentiator prej 5 deri këtu. 767 00:43:00,990 --> 00:43:04,160 Pra, kjo është në thelb do të jetë njëjta gjë si 4 me fuqinë e pestë, 768 00:43:04,160 --> 00:43:07,200 sepse ne kemi krijuar një exponentiating funksionojë me fuqinë e pestë, 769 00:43:07,200 --> 00:43:09,920 dhe ne jemi duke kaluar në që të funksionojë vlerën 4. 770 00:43:09,920 --> 00:43:12,619 Dhe ne kemi marrë këtë vlerë që ne presim, 1024. 771 00:43:12,619 --> 00:43:14,785 Audienca: Dhe kjo nuk është një emrin, kështu që kjo e bën më të lehtë 772 00:43:14,785 --> 00:43:16,570 për të lexuar, sheshin çfarëdo. 773 00:43:16,570 --> 00:43:17,903 >> DAN AMRMENDARIZ: E drejta, pikërisht. 774 00:43:17,903 --> 00:43:21,120 Kështu që para se unë vetëm vënë atë në një konstante këtu kështu 775 00:43:21,120 --> 00:43:23,808 se ajo e bëri të lehtë për t'u përdorur këtë emër. 776 00:43:23,808 --> 00:43:24,308 Po? 777 00:43:24,308 --> 00:43:26,942 >> Audienca: Në këtë kontekst powerOf, kjo është pjesë 778 00:43:26,942 --> 00:43:30,774 i gjuhë programimi në krahasim me mënyrën se si ju 779 00:43:30,774 --> 00:43:33,952 mendoj se e powerOf në [e padëgjueshme]? 780 00:43:33,952 --> 00:43:35,660 DAN AMRMENDARIZ: Pra, në këtë rast, powerOf 781 00:43:35,660 --> 00:43:39,280 është thjesht emri i funksion që unë e përcaktuar këtu. 782 00:43:39,280 --> 00:43:41,801 Kështu që nuk është e natyrshme në gjuhën e vetë, 783 00:43:41,801 --> 00:43:43,550 por, kjo është vetëm një funksion që ka 784 00:43:43,550 --> 00:43:45,628 që emri sepse unë jap këtë emër. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 Ndonjë pyetje të tjera? 787 00:43:51,920 --> 00:43:52,800 Në rregull. 788 00:43:52,800 --> 00:43:54,750 >> Tani kjo është e madhe. 789 00:43:54,750 --> 00:43:58,170 Por ju nuk jeni duke shkuar për të parë një shumë e funksioneve mbylljes se 790 00:43:58,170 --> 00:44:03,440 janë si kjo, ku ju të përcaktojë, brenda e një funksion, një tjetër funksion. 791 00:44:03,440 --> 00:44:04,320 Dhe ju mund të bëni atë. 792 00:44:04,320 --> 00:44:06,430 Por kjo është lloj i jo të vërtetë e nevojshme, e drejtë? 793 00:44:06,430 --> 00:44:09,189 Ashtu si pse nuk kam përcaktojnë këtë Funksioni i quajtur exponentiator 794 00:44:09,189 --> 00:44:10,480 dhe pastaj menjëherë ta kthejë atë. 795 00:44:10,480 --> 00:44:15,220 Pse nuk mundem të vetëm menjëherë kthehen këtë funksion? 796 00:44:15,220 --> 00:44:18,890 >> Dhe në fakt, kjo është pikërisht Ideja prapa një koncept të quajtur 797 00:44:18,890 --> 00:44:22,410 funksione anonime, ku funksione anonime në fakt nuk 798 00:44:22,410 --> 00:44:25,270 kanë një emër, sepse ata nuk duhet të ketë një të tillë. 799 00:44:25,270 --> 00:44:28,700 Dhe kështu në këtë rast, në 7B, ne mund të gjeni saktësisht se. 800 00:44:28,700 --> 00:44:31,470 Kjo është e gjitha njëjti kod, bën pikërisht të njëjtën gjë, 801 00:44:31,470 --> 00:44:35,570 por tani ne kemi ndryshuar atë pak kështu se ky funksion powerOf menjëherë 802 00:44:35,570 --> 00:44:37,750 kthen një funksion. 803 00:44:37,750 --> 00:44:44,150 Vini re se pas kthimit, ka një kllapa hapur kaçurrel. 804 00:44:44,150 --> 00:44:46,410 Është pritur këtë input dyfishtë. 805 00:44:46,410 --> 00:44:48,560 Është pritur se prodhimi dyfishtë. 806 00:44:48,560 --> 00:44:52,175 Dhe pastaj në fjalen ndan kodin e vetë. 807 00:44:52,175 --> 00:44:53,550 Pra, kjo është një funksion anonim. 808 00:44:53,550 --> 00:44:57,030 Ajo nuk ka të vërtetë kanë një emër, kurse para se ajo u quajt exponentiator. 809 00:44:57,030 --> 00:45:00,229 Por, siç e pamë, vetëm të vërtetë nuk i referohet exponentiator 810 00:45:00,229 --> 00:45:01,270 jashtë atë funksion. 811 00:45:01,270 --> 00:45:02,470 Pra, kjo nuk kishte rëndësi. 812 00:45:02,470 --> 00:45:06,300 Pra, ky funksion është anonim ashtu-quajtur për shkak se ajo është e pa emër, 813 00:45:06,300 --> 00:45:09,107 por është ende duke u përdorur në kontekstin e këtij kodi. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> Ato e ardhshme çift Jam do të vazhdojë me shpresë 816 00:45:16,079 --> 00:45:17,370 defekt mendjen tuaj pak. 817 00:45:17,370 --> 00:45:20,410 Ne mund të thjeshtojë këtë edhe më shumë. 818 00:45:20,410 --> 00:45:24,490 Sepse siç ishte astutely vuri në dukje më parë, 819 00:45:24,490 --> 00:45:29,100 ndoshta ne fakt e di, nga inferring nga ky kod, çfarë 820 00:45:29,100 --> 00:45:31,750 prodhimi i këtij kodi do të jetë. 821 00:45:31,750 --> 00:45:38,180 Dhe në fakt, në këtë funksion anonim, ne në fakt mund të konkludoj llojet e të dhënave. 822 00:45:38,180 --> 00:45:41,650 >> Pra, në këtë, ne nuk duhet të përcaktojë në mënyrë të qartë 823 00:45:41,650 --> 00:45:44,850 tipi i të dhënave që është duke u input dhe output nga ky funksion 824 00:45:44,850 --> 00:45:45,890 për disa arsye. 825 00:45:45,890 --> 00:45:51,390 Njëra është që ne kemi përcaktuar, deri në nivel prototip i funksionit bashkëngjitur, 826 00:45:51,390 --> 00:45:55,770 çfarë lloji i të dhënave të kësaj anonime Funksioni duhet të input dhe output. 827 00:45:55,770 --> 00:45:57,900 Dhe nga ana tjetër, ne mund të konkludoj nga kodi 828 00:45:57,900 --> 00:46:01,930 poshtë këtu se ne jemi të pranuar të dhëna se është e tipit dyfishtë 829 00:46:01,930 --> 00:46:03,670 dhe kthimin e një të dyfishtë. 830 00:46:03,670 --> 00:46:07,890 >> Vini re se këtu nuk kemi mënyrë eksplicite përcaktuar emrat e argumenteve 831 00:46:07,890 --> 00:46:11,220 se ky funksion është pranuar. 832 00:46:11,220 --> 00:46:16,180 Dhe kështu ne shohim që ne mund t'i referohemi këto parametra duke përdorur $ 0, $ 1, 833 00:46:16,180 --> 00:46:20,140 kështu me radhë e kështu me radhë, në varësi të numri i asaj parametri përdoret 834 00:46:20,140 --> 00:46:20,850 në këtë funksion. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> Kjo është diçka që ju jeni duke shkuar për të parë një shumë është ky grupim i hapur kaçurrel 837 00:46:29,740 --> 00:46:32,797 Përkufizimi ndjekur nga një $ 0, dhe pastaj disa operacion, 838 00:46:32,797 --> 00:46:34,130 dhe pastaj një kllapa kaçurrel mbyllur. 839 00:46:34,130 --> 00:46:38,630 Ky është një funksion anonim që kryen këtë operacion. 840 00:46:38,630 --> 00:46:42,940 Ajo ka këtë parametër ku kjo është lloj është nxirret. 841 00:46:42,940 --> 00:46:44,860 Kjo parametër i parë është $ 0. 842 00:46:44,860 --> 00:46:49,010 Dhe disa operacion është ndodh në se $ 0. 843 00:46:49,010 --> 00:46:52,100 >> Audienca: Pra shenja e dollarit do të thotë parametër në thelb, 844 00:46:52,100 --> 00:46:53,429 dhe 0 do të thotë një të parë? 845 00:46:53,429 --> 00:46:54,720 DAN Armendariz: Kjo është e saktë. 846 00:46:54,720 --> 00:46:59,100 Pra shenja e dollarit thelb do të thotë parametër, dhe 0 do të thotë një të parë. 847 00:46:59,100 --> 00:47:02,760 Por ai punon në mënyrë specifike në ky rast ku nuk kam quajtur 848 00:47:02,760 --> 00:47:07,940 argumentet në funksion tim anonim. 849 00:47:07,940 --> 00:47:11,119 >> Audienca: A Perl ose diçka të ketë kjo shenjë dollar, dollar 0 në atje? 850 00:47:11,119 --> 00:47:12,702 DAN Armendariz: A që, unë jam i keq? 851 00:47:12,702 --> 00:47:15,360 Audienca: A ka Perl kjo dollar 0, dollar 1-- 852 00:47:15,360 --> 00:47:17,318 DAN Armendariz: Unë nuk jam shumë të njohur me Perl, 853 00:47:17,318 --> 00:47:21,340 por PHP ajo që përcakton variablave bazuar në shenjat e dollarit. 854 00:47:21,340 --> 00:47:26,120 Dhe mund të ketë disa gjuhë që kanë karakteristika si kjo. 855 00:47:26,120 --> 00:47:28,240 Në fakt, Swift huazon një shumë karakteristika si kjo 856 00:47:28,240 --> 00:47:29,489 nga shumë gjuhë të tjera. 857 00:47:29,489 --> 00:47:32,380 Ne e shohim lë të kuptohet se e Python në të. 858 00:47:32,380 --> 00:47:35,800 Ky përkufizim i tipit duket se vijnë nga ocaml. 859 00:47:35,800 --> 00:47:38,932 Dhe ne kemi vetëm një bandë e tërë e gjëra nga shumë gjuhë të ndryshme. 860 00:47:38,932 --> 00:47:40,640 Kjo është një nga më të bukur gjëra në lidhje Swift 861 00:47:40,640 --> 00:47:43,390 është se ajo merr një shumë të mirë ide nga një bandë e gjuhëve 862 00:47:43,390 --> 00:47:47,229 dhe shoehorns të gjithë së bashku në një gjuhë super. 863 00:47:47,229 --> 00:47:49,520 Në fakt, në qoftë se ju më lejoni të vazhdoni defekt mendjen tuaj, 864 00:47:49,520 --> 00:47:51,000 kështu që ne kemi bërë të gjithë këtë. 865 00:47:51,000 --> 00:47:56,690 Ne ndoshta mund të lehtësuar këtë një të vogël bit duke e kuptuar se, natyrisht, 866 00:47:56,690 --> 00:48:02,120 Swift ka një exponentiating funksion ndërtuar në. 867 00:48:02,120 --> 00:48:04,660 Nëse unë importit Darvinit, e cila është vetëm bibliotekë që 868 00:48:04,660 --> 00:48:09,680 përmban ky funksion quhet pow, tani Unë mund të thjeshtojë fuqinë time të funksionit 869 00:48:09,680 --> 00:48:11,830 të jetë në vijim. 870 00:48:11,830 --> 00:48:15,860 Ajo do të jetë kthyer ky funksion anonim. 871 00:48:15,860 --> 00:48:17,950 >> Por shikoni se sa e thjeshtë kjo është tani. 872 00:48:17,950 --> 00:48:22,780 Ky është një funksion anonim që është pranuar disa lloj të të dhënave, 873 00:48:22,780 --> 00:48:26,600 dhe kjo do të jetë një Argumenti në mënyrë specifike, 874 00:48:26,600 --> 00:48:29,320 referohet në 0 $ që është e tipit të dyfishta. 875 00:48:29,320 --> 00:48:32,680 Ajo do të kthehet një lloj dyfishtë. 876 00:48:32,680 --> 00:48:35,760 Por deklarata kthimi tani është i nënkuptuar. 877 00:48:35,760 --> 00:48:39,990 >> Dhe është ky stil i saktë se është shumë, shumë i përhapur në Swift, 878 00:48:39,990 --> 00:48:40,790 në të gjithë vendin. 879 00:48:40,790 --> 00:48:43,190 Ne jemi duke shkuar për të parë këtë gjatë gjithë kohës në Swift. 880 00:48:43,190 --> 00:48:46,150 Kështu që unë jam duke treguar të gjithë këtë për ju për shkak të kësaj sintaksës. 881 00:48:46,150 --> 00:48:49,070 Kjo është shumë e zakonshme për të parë, që do të thotë atë 882 00:48:49,070 --> 00:48:51,420 është një funksion anonim që është kryer 883 00:48:51,420 --> 00:48:54,640 disa operacion në këto argumente. 884 00:48:54,640 --> 00:48:56,940 Dhe ka një kthim të nënkuptuar. 885 00:48:56,940 --> 00:49:01,850 Pra, kjo është absolutisht e njëjta gjë për ne për të thënë këtë, të drejtë këtu. 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> Sepse këtë kaçurrel kllapa është një funksion, 888 00:49:08,150 --> 00:49:10,480 ne jemi të kryer këtë operacion në argumentin e parë. 889 00:49:10,480 --> 00:49:12,170 Ne jemi duke shkuar për të kthyer atë. 890 00:49:12,170 --> 00:49:14,815 Por ky kthim jashtme është kthyer atë tërë funksion, 891 00:49:14,815 --> 00:49:19,855 se funksioni i tërë anonim që ne kemi krijuar vetëm. 892 00:49:19,855 --> 00:49:21,689 Ndonjë pyetje të tjera? 893 00:49:21,689 --> 00:49:23,980 Të gjithë të drejtë, unë nuk e di nëse ju djema jeni gati për këtë, 894 00:49:23,980 --> 00:49:27,455 por ne mund të shkojnë edhe crazier me Swift. 895 00:49:27,455 --> 00:49:28,560 Jeni gati? 896 00:49:28,560 --> 00:49:29,930 OK, kjo është e madhe. 897 00:49:29,930 --> 00:49:35,310 >> Tani ne fakt kanë aftësinë për të, në Swift, për shkak të asaj se si modulare 898 00:49:35,310 --> 00:49:39,650 dhe si i bazuar protokoll është, të përcaktojnë operatorët tona freaking. 899 00:49:39,650 --> 00:49:44,060 Ashtu si në këtë rast, kemi pasur asnjë operatori për exponentiation-- mirë, 900 00:49:44,060 --> 00:49:47,990 për kryerjen e kompetencave të diçkaje. 901 00:49:47,990 --> 00:49:53,632 Por unë mund të, në Swift, përcaktojnë një të ri Operatori që bën pikërisht këtë. 902 00:49:53,632 --> 00:49:55,590 Pra, në këtë rast nuk ka një bandë e sintaksës këtu. 903 00:49:55,590 --> 00:49:59,980 Dhe unë do të ju lejojnë të shikoni në atë në shtëpi kur ju shikoni në këtë. 904 00:49:59,980 --> 00:50:06,890 Por ne jemi definuar këtë Infiks operator, **, i cili pastaj do të na lejojë, 905 00:50:06,890 --> 00:50:09,840 duke përcaktuar se çka Funksioni ** fakt 906 00:50:09,840 --> 00:50:15,010 ka, për të pranuar një dorën e majtë anë dhe një e djathtë anë, 907 00:50:15,010 --> 00:50:21,190 dhe pastaj të kthehen eksponent i se Left Hand anë në anën e djathtë. 908 00:50:21,190 --> 00:50:24,850 >> Dhe kështu që tani të gjithë një e papritur I kanë krijuar një numërues të re. 909 00:50:24,850 --> 00:50:29,490 Pra 2 ** 3 do të thotë 2 të pushtetit të tretë. 910 00:50:29,490 --> 00:50:34,420 [Mendje të shëndoshë defekt] Kjo nga vetë duhet të bëjë që ju të jetë si, 911 00:50:34,420 --> 00:50:37,960 OK, vidhos C. unë jam duke shkuar Swift gjithë rrugën. 912 00:50:37,960 --> 00:50:38,740 Kjo eshte fantastike. 913 00:50:38,740 --> 00:50:40,140 Kjo është shumë e fantastik. 914 00:50:40,140 --> 00:50:42,240 >> Edhe pse ky është një shembull i madh. 915 00:50:42,240 --> 00:50:45,570 Por unë kurrë nuk kam një herë jashtë i këtij shembulli në fakt 916 00:50:45,570 --> 00:50:46,800 përcaktuar operatorin tim. 917 00:50:46,800 --> 00:50:49,710 Por ende, ajo tregon një Shumë fuqinë e Swift 918 00:50:49,710 --> 00:50:54,050 dhe pse kjo është në fakt me të vërtetë shumë i ftohtë. 919 00:50:54,050 --> 00:50:55,832 OK, po? 920 00:50:55,832 --> 00:50:57,790 Audienca: Nëse ju jeni përcaktimin operatorin tuaj, 921 00:50:57,790 --> 00:51:02,940 si nuk e dini që ju nuk aksidentalisht të përpiqet dhe për të krijuar një operator që është 922 00:51:02,940 --> 00:51:06,040 në diku në C, si fshehur diku në Swift, 923 00:51:06,040 --> 00:51:12,210 si një një i panjohur që ju mund të nuk e kanë parë më parë. 924 00:51:12,210 --> 00:51:15,050 >> DAN Armendariz: Pra, nëse ju jeni duke u përpjekur për të përcaktuar operatorët tuaja, 925 00:51:15,050 --> 00:51:20,970 ekziston rreziku i përcaktimit një mbi një operator ekzistues. 926 00:51:20,970 --> 00:51:24,870 Që shkon në një nivel të detajuar që Unë nuk mendoj se ne kemi kohë për të shkuar mbi. 927 00:51:24,870 --> 00:51:27,620 Por kjo është një rrezik. 928 00:51:27,620 --> 00:51:31,320 Dhe kjo është në fakt arsyeja pse shumë Unë nuk e përdorin simbolin caret, i cili 929 00:51:31,320 --> 00:51:36,210 kur ne jemi duke shtypur jashtë pushtetit, ne zakonisht përdorin 4 caret pak 5 apo diçka 930 00:51:36,210 --> 00:51:40,560 si kjo, vetëm kur ne jemi Gchatting buddies apo çfarëdo. 931 00:51:40,560 --> 00:51:43,660 Por në këtë rast, që në fakt do të kishte shkaktuar një përplasje. 932 00:51:43,660 --> 00:51:46,450 Dhe kështu unë shmangur atë vetëm për shkak se I ka ndodhur të di në këtë rast 933 00:51:46,450 --> 00:51:50,430 se kjo do të shkaktonte atë përplasje. 934 00:51:50,430 --> 00:51:52,270 >> Në rregull. 935 00:51:52,270 --> 00:51:55,080 Tani për fat të keq, për shtatë minuta e fundit, 936 00:51:55,080 --> 00:51:57,410 Unë kam për të mbajtur defekt mendjet tuaja pak. 937 00:51:57,410 --> 00:52:00,230 Pra, më lejoni të ju tregojnë se disa gjëra të tjera si edhe. 938 00:52:00,230 --> 00:52:03,710 >> Ne kemi treguar ju këtë ide duke pasur këto funksione anonime, 939 00:52:03,710 --> 00:52:07,040 këto mbylljet që ju lejojnë të lloj i kalojnë funksionet përreth. 940 00:52:07,040 --> 00:52:08,100 Ju mund të kthehen ato. 941 00:52:08,100 --> 00:52:09,490 Ju mund të manipulojnë ato. 942 00:52:09,490 --> 00:52:11,790 Ju mund të bëni të gjitha llojet e gjëra të çmendur. 943 00:52:11,790 --> 00:52:14,850 >> Por një gjë tjetër që ndodh të jenë të dobishme 944 00:52:14,850 --> 00:52:19,740 është aftësia për të, në krahasim për të kthyer këto funksione 945 00:52:19,740 --> 00:52:25,146 në një funksion, për të kaluar një funksion si një parametër të një tjetër funksion. 946 00:52:25,146 --> 00:52:30,430 Ju mund të jetë duke menduar edhe pse në Tokë do të dua të bëj diçka të tillë? 947 00:52:30,430 --> 00:52:33,660 >> E pra, le të themi se unë dua për të marrë këtë operator që unë 948 00:52:33,660 --> 00:52:40,260 punuar kaq shumë për të krijuar dhe të aplikojnë ajo në një bandë të numrave të ndryshëm 949 00:52:40,260 --> 00:52:41,770 në një rrjet. 950 00:52:41,770 --> 00:52:46,700 Pra, në këtë rast unë kam një grup të integers-- 1, 4, 7, 2, 5, 10, 56. 951 00:52:46,700 --> 00:52:48,080 Dhe unë dua të dyfishtë të gjithë ata. 952 00:52:48,080 --> 00:52:50,430 Mënyra se ne do zakonisht bëni është të shkruani vetëm 953 00:52:50,430 --> 00:52:53,440 një të thjeshtë për lak që iterates mbi të gjithë ata 954 00:52:53,440 --> 00:52:57,140 dhe të kryejnë një lloj të Operacioni katror mbi ta, 955 00:52:57,140 --> 00:53:02,700 inputting ato vlera të reja në një të ri ndryshueshme, ose më mirë, një koleksion të ri këtu. 956 00:53:02,700 --> 00:53:07,370 Dhe vlera e prodhimit të Rezultati është atëherë të gjitha këto vargjeve, 957 00:53:07,370 --> 00:53:10,200 ose më mirë të gjithë ata Elementet tani katror. 958 00:53:10,200 --> 00:53:12,680 >> Dhe ne mund të bëjmë të njëjtën gjë gjë për cubing atë, 959 00:53:12,680 --> 00:53:15,360 por një zile alarmi pak duhet të shkojnë jashtë 960 00:53:15,360 --> 00:53:17,360 duke thënë se ndoshta ka disa mënyra që ne do 961 00:53:17,360 --> 00:53:19,860 të jetë në gjendje për të lehtësuar këtë një pak. 962 00:53:19,860 --> 00:53:21,130 Dhe në fakt nuk është. 963 00:53:21,130 --> 00:53:25,320 Çfarë ndodh nëse ne mund të krijojë një funksion që na lejon 964 00:53:25,320 --> 00:53:28,350 për të pranuar, si një grabitqar, një funksion? 965 00:53:28,350 --> 00:53:30,350 Pra, në këtë rast, të marrë një shikoni në këto argumente. 966 00:53:30,350 --> 00:53:33,220 Ne jemi duke shkuar për të pranuar një listë dyshe. 967 00:53:33,220 --> 00:53:35,030 Dhe pastaj ne jemi duke shkuar për të pranuar një funksion 968 00:53:35,030 --> 00:53:40,990 në një ndryshore të quajtur f që do për të marrë një të dyfishtë dhe të kthehet një të dyfishtë. 969 00:53:40,990 --> 00:53:43,320 Dhe tërë Prodhimi e tërë këtij funksioni 970 00:53:43,320 --> 00:53:47,310 quajtur mekanizmin do të kthehet një grup të quajtur të dyfishtë. 971 00:53:47,310 --> 00:53:52,380 >> Çfarë kjo atëherë do të lejojë mua për të bëni është që të iterate mbi atë listë 972 00:53:52,380 --> 00:53:56,350 dhe të bëjë të njëjtën gjë, por tani zbatojë këtë funksion në çdo 973 00:53:56,350 --> 00:53:58,970 e vlerave individuale në atë listë. 974 00:53:58,970 --> 00:54:00,750 Kështu që unë nuk mund të vërtetë e di se çfarë është f. 975 00:54:00,750 --> 00:54:02,010 Kjo nuk ka rëndësi për mua. 976 00:54:02,010 --> 00:54:06,530 Por, për aq kohë sa ajo merr në një të dyfishtë, kryen disa operacion në të, 977 00:54:06,530 --> 00:54:08,640 dhe pastaj kthehet një Të dyfishtë, atëherë unë do të jetë 978 00:54:08,640 --> 00:54:13,415 në gjendje të ndajë këtë funksion në të gjithë çdo element i vetëm në listë. 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> Dhe ky lloj i programimit është quajtur funksionet më të larta rendit, 981 00:54:20,930 --> 00:54:24,440 ku ne jemi duke kaluar funksione rreth si parametra 982 00:54:24,440 --> 00:54:26,430 dhe duke bërë gjëra me funksione. 983 00:54:26,430 --> 00:54:29,640 Është lloj si duke marrë të gjitha këto ide që ne kemi mësuar në CS50 984 00:54:29,640 --> 00:54:31,390 dhe marrjen e tyre lloj e nivelit tjetër. 985 00:54:31,390 --> 00:54:34,140 Dhe kjo është e gjitha gjëra stil CS51. 986 00:54:34,140 --> 00:54:37,080 Dhe kështu ne do të shkojnë në thellësi më shumë në klasat si kjo. 987 00:54:37,080 --> 00:54:38,930 >> Por kjo është edhe e rëndësishme këtu, sepse ne 988 00:54:38,930 --> 00:54:42,010 të shihni një shumë të funksioneve që janë përdorur në Swift 989 00:54:42,010 --> 00:54:45,590 që në thelb nuk kjo, ku ne kemi 990 00:54:45,590 --> 00:54:48,300 disa numra, disa grup të numrave. 991 00:54:48,300 --> 00:54:50,850 Ne jemi duke shkuar për të kaluar se array në Mapper tonë. 992 00:54:50,850 --> 00:54:55,770 Dhe ne jemi gjithashtu do të kalojnë disa funksion, i cili 993 00:54:55,770 --> 00:54:57,950 ne kemi përcaktuar tashmë këtu. 994 00:54:57,950 --> 00:54:59,690 Ajo do të jetë katror. 995 00:54:59,690 --> 00:55:02,220 Dhe ne jemi duke shkuar për të, atëherë katrore të gjitha ato numra 996 00:55:02,220 --> 00:55:04,710 dhe dyqan se në këtë rezultat këtu. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> Pra ky rast kemi përcaktuar tonë Funksioni i vet quajtur Mapper. 999 00:55:11,000 --> 00:55:15,370 Por kjo gjë është e saktë, në fakt, e ndërtuar në Swift. 1000 00:55:15,370 --> 00:55:18,960 Ka një shumëllojshmëri të Funksionet e quajtur hartë. 1001 00:55:18,960 --> 00:55:21,520 Ka një funksion hartë, ka një funksion të reduktuar, 1002 00:55:21,520 --> 00:55:25,630 dhe ka një funksion filtër, e cila në thelb të zbatohen funksione 1003 00:55:25,630 --> 00:55:30,782 për çdo element të vetëm në një lista për të ndryshuar ato në një farë mënyre. 1004 00:55:30,782 --> 00:55:34,510 >> Audienca: Pra, kur ju jeni transformuar e të dhënave në një format tjetër 1005 00:55:34,510 --> 00:55:36,134 përmes një function-- 1006 00:55:36,134 --> 00:55:37,050 DAN Armendariz: E drejta. 1007 00:55:37,050 --> 00:55:39,420 Yeah, kështu që funksioni se ne jemi duke pranuar 1008 00:55:39,420 --> 00:55:41,790 është transformuar të dhënat në një farë mënyre. 1009 00:55:41,790 --> 00:55:44,700 Në këtë rast, ne kemi qenë ose squaring atë, ose ne ishim cubing atë, 1010 00:55:44,700 --> 00:55:50,060 apo me të vërtetë, ne mund të kryejnë nuk ka operacion në atë në të gjitha. 1011 00:55:50,060 --> 00:55:54,150 >> Por më lejoni të ju tregojnë se si kjo atëherë do të shikojmë në praktikë. 1012 00:55:54,150 --> 00:55:56,681 Dhe përsëri, unë jam drejtimin e një bit e kohës. kështu që unë nuk jam 1013 00:55:56,681 --> 00:55:59,430 do të jetë në gjendje për të shkuar mbi të gjitha e kodit burim këtu në detaje. 1014 00:55:59,430 --> 00:56:00,721 Por unë ju inkurajoj për të bërë këtë. 1015 00:56:00,721 --> 00:56:03,850 Ne do të postoj atë sa më shpejt e mundur pas kësaj bisede. 1016 00:56:03,850 --> 00:56:07,610 >> Por në qoftë se ju merrni një vështrim në këtë, supozojmë se kemi një listë të numrave, 1017 00:56:07,610 --> 00:56:10,260 një grup i numrave në këtë ndryshore të quajtur numra. 1018 00:56:10,260 --> 00:56:16,670 Pastaj ne duam për të kryer këtë operacion filtër në ato numra. 1019 00:56:16,670 --> 00:56:19,730 Pra, filtri është një më të lartë Funksioni mënyrë që 1020 00:56:19,730 --> 00:56:24,660 pranon një rrjet dhe gjithashtu një funksion. 1021 00:56:24,660 --> 00:56:28,760 Dhe mbi çdo element në se grup, ajo kryen atë funksion. 1022 00:56:28,760 --> 00:56:31,990 >> Nëse kjo kthimet funksion vërtetë, ajo mban atë artikull. 1023 00:56:31,990 --> 00:56:36,100 Në qoftë se funksioni kthehet rreme, ajo hedh larg se pika. 1024 00:56:36,100 --> 00:56:40,480 Dhe pastaj ajo jep një listë që është bërë, atëherë të gjithë 1025 00:56:40,480 --> 00:56:44,360 nga ato sende që janë filtruar. 1026 00:56:44,360 --> 00:56:47,150 >> Pra, në një tjetër fjalë, kjo është e njëjta ide, librin e notave. 1027 00:56:47,150 --> 00:56:50,800 Ne mund të ketë një shumëllojshmëri të notave në këtë vlerë i quajtur numra. 1028 00:56:50,800 --> 00:56:55,590 Mund të jetë 100, dhe 70, dhe 40, e kështu me radhë e kështu me radhë. 1029 00:56:55,590 --> 00:56:59,110 Çfarë kjo filtër nuk është njoftim se kjo është se sheqeri sintaktik 1030 00:56:59,110 --> 00:57:01,310 për një funksion anonim. 1031 00:57:01,310 --> 00:57:05,980 Ky është një funksion anonim duke thënë se parametri që unë jam duke pranuar 1032 00:57:05,980 --> 00:57:09,690 do të jetë, në qoftë se ajo është më i madh se 70, 1033 00:57:09,690 --> 00:57:15,837 atëherë kjo do të kthehet të vërtetë, do të thotë se se pika do të mbahen në këtë filtër. 1034 00:57:15,837 --> 00:57:17,920 Pra, le të jetë pak më konkrete në lidhje me këtë. 1035 00:57:17,920 --> 00:57:25,760 Nëse unë kam këtë grup të numrave dhe përbëhet nga 100, 70, dhe 40, 1036 00:57:25,760 --> 00:57:29,730 Unë kryej këtë filtër operacion në çdo një nga ato. 1037 00:57:29,730 --> 00:57:33,270 Kështu që para është kjo vlerë prej 100. 1038 00:57:33,270 --> 00:57:36,770 100 më e madhe se ose e barabartë në 70 është e vërtetë, e cila 1039 00:57:36,770 --> 00:57:41,950 do të thotë se 100 është mbajtur në kjo kopje e re e këtij grup. 1040 00:57:41,950 --> 00:57:44,290 70 edhe kalon. 1041 00:57:44,290 --> 00:57:46,020 Por 40 nuk ka. 1042 00:57:46,020 --> 00:57:54,290 Pra, çfarë është kthyer në passingCount është grup i elementeve 100 dhe 70-- 1043 00:57:54,290 --> 00:57:57,410 100, presje, 70. 1044 00:57:57,410 --> 00:57:59,870 Ata ishin të vetmet sende që janë mbajtur. 1045 00:57:59,870 --> 00:58:03,740 Dhe kështu arsyeja që unë shkova me shpejt shumë nga këto lloj të rendit të lartë 1046 00:58:03,740 --> 00:58:08,680 gjërat janë, sepse kjo është se e zakonshme gjë që ju do të shihni në Swift mjaft 1047 00:58:08,680 --> 00:58:16,810 shpesh, është kryer një operacion duke përdorur këtë sintaksë funksion anonim. 1048 00:58:16,810 --> 00:58:18,450 >> Ka disa sende të ftohtë. 1049 00:58:18,450 --> 00:58:24,730 Çelsin janë me të vërtetë të fuqishme në Swift, Unë do të thotë ashtu si i çmendur, i çmendur i fuqishëm. 1050 00:58:24,730 --> 00:58:28,250 Ju mund të përdorni kaloni, dhe ju në fakt mund të aplikoni ato 1051 00:58:28,250 --> 00:58:33,160 për vargjet, që është lloj i çmendur, dhe të bëjë stuff dashuroj si kjo. 1052 00:58:33,160 --> 00:58:37,540 >> Por në minutat e fundit, Unë dua të kaloni përpara mjaft larg 1053 00:58:37,540 --> 00:58:46,940 dhe t'ju tregojë një shembull specifik të si ne mund të krijojmë në iOS app duke përdorur Swift. 1054 00:58:46,940 --> 00:58:49,040 Pra, kur ju jeni duke bërë kjo, ju do të keni për të marrë 1055 00:58:49,040 --> 00:58:51,990 një vështrim at-- për Apple dokumentacionin, ata 1056 00:58:51,990 --> 00:58:56,084 kanë shumë mësime të vërtetë të mirë për krijimin e aplikimit tuaj të parë. 1057 00:58:56,084 --> 00:58:58,250 Dhe unë ju inkurajoj për të bërë se për shkak se ata të ju 1058 00:58:58,250 --> 00:59:04,110 nëpër të gjitha hapat e çfarë saktësisht në klikoni mbi për të krijuar një aplikim iOS. 1059 00:59:04,110 --> 00:59:07,290 >> Por këtu kemi këtë app iOS. 1060 00:59:07,290 --> 00:59:10,960 Dhe kjo është një app shumë e thjeshtë të vërtetë. 1061 00:59:10,960 --> 00:59:13,840 Nëse unë të drejtuar këtë, më lejoni të tregoj ju atë që duket si. 1062 00:59:13,840 --> 00:59:19,480 Të gjitha ajo në thelb nuk është ajo tërheq nga interneti një fotografi JSON 1063 00:59:19,480 --> 00:59:22,300 që i kam ruajtur në një server. 1064 00:59:22,300 --> 00:59:26,310 Dhe kjo skedë JSON përcakton imazhe që lejojnë 1065 00:59:26,310 --> 00:59:31,680 mua për të pastaj të ciklit përmes, në tim app, imazhe nga web serverin tim. 1066 00:59:31,680 --> 00:59:32,880 >> Kështu që unë kam këtu getNextImage. 1067 00:59:32,880 --> 00:59:37,100 Ai ngarkon një imazh nga interneti, dhe pastaj tregon atë në ekran. 1068 00:59:37,100 --> 00:59:38,200 >> Pra, kjo është shumë e thjeshtë. 1069 00:59:38,200 --> 00:59:41,550 Por qëllimi këtu është për të treguar ju se si ne mund të kombinohen gjëra 1070 00:59:41,550 --> 00:59:47,820 nga javët e fundit të CS50 në një aplikim aktual iOS. 1071 00:59:47,820 --> 00:59:53,140 Me fjalë të tjera, ndoshta një nga gjëra që ju do të dëshironi të bëni 1072 00:59:53,140 --> 00:59:56,340 është që të kemi një kërkesë që iOS mund të tërheqë të dhëna nga interneti 1073 00:59:56,340 --> 00:59:59,070 dhe të tregojnë përdoruesit disa informacione. 1074 00:59:59,070 --> 01:00:03,130 Kjo është tërësisht pika i këtij kodi burim këtu. 1075 01:00:03,130 --> 01:00:07,890 >> Pra, ka shumë për të thënë për si për të bërë zhvillimin aktual IOS. 1076 01:00:07,890 --> 01:00:12,860 Nuk është shumë e sintaksës çmendur që ne nuk e kemi parë ende mjaft 1077 01:00:12,860 --> 01:00:15,580 si një klasë, çfarë një klasë të vërtetë është. 1078 01:00:15,580 --> 01:00:19,470 Ne kryesisht mund të injorojë që për momentin. 1079 01:00:19,470 --> 01:00:23,250 >> Por vini re se ne kemi përmbante brenda kjo një shumëllojshmëri të gjëra 1080 01:00:23,250 --> 01:00:27,720 që ne kemi parë tashmë si funksionet që kanë emra të veçanta. 1081 01:00:27,720 --> 01:00:32,650 Dhe kur ne japim atyre funksionon emrat e duhur 1082 01:00:32,650 --> 01:00:36,530 që priten nga iOS, në fakt kjo ndihet pak magjike. 1083 01:00:36,530 --> 01:00:40,300 Por, kur ju krijoni një Aplikimi iOS, atje 1084 01:00:40,300 --> 01:00:47,590 janë emra të veçanta funksion që janë quajtur nga vetë në telefon 1085 01:00:47,590 --> 01:00:52,440 si kërkesa është e ngarkimit të provoni për të krijuar procesin që në fakt 1086 01:00:52,440 --> 01:00:54,787 shkon aplikimin tuaj. 1087 01:00:54,787 --> 01:00:58,120 Pra, përsëri, ka shumë gjëra që unë duhet të komentoj mbi këtu në mënyrë për ne 1088 01:00:58,120 --> 01:01:00,570 për të folur për këtë në mënyrë specifike. 1089 01:01:00,570 --> 01:01:06,050 Por unë ju inkurajoj që të shikoni në mbase seminari tjetër iOS, por edhe disa 1090 01:01:06,050 --> 01:01:09,290 e mësime online që bëjnë një punë shumë më të mirë për të përshkruar 1091 01:01:09,290 --> 01:01:11,030 informacionin specifik. 1092 01:01:11,030 --> 01:01:15,760 >> Por ne mund të shohim disa gjëra që janë interesante nga kodi këtu. 1093 01:01:15,760 --> 01:01:17,950 Vini re se në qoftë se ne kemi deklarata. 1094 01:01:17,950 --> 01:01:20,400 Nga rruga, e rëndësishme Gjë në lidhje me nëse deklaratat 1095 01:01:20,400 --> 01:01:24,860 është se kllapa rreth Shprehje Boolean janë fakultative. 1096 01:01:24,860 --> 01:01:30,800 Por formatimin e teksteve kaçurrel nuk janë fakultative, pa marrë parasysh sa pak apo shumë rreshta të kodit 1097 01:01:30,800 --> 01:01:32,360 ju keni në një në qoftë se deklarata. 1098 01:01:32,360 --> 01:01:38,670 Ju nuk mund të ketë një në qoftë se deklarata pa formatimin e teksteve kaçurrel në Swift. 1099 01:01:38,670 --> 01:01:41,000 >> Dhe kjo është, mirë, lloj i trashë. 1100 01:01:41,000 --> 01:01:43,910 Por ka arsye historike për këtë. 1101 01:01:43,910 --> 01:01:46,180 Ajo është menduar për t'ju shpëtuar nga vetë. 1102 01:01:46,180 --> 01:01:49,899 Ashtu si kjo për shembull, ju nuk mund të eliminimin e formatimin e teksteve kaçurrel rreth se 1103 01:01:49,899 --> 01:01:50,440 nëse deklarata. 1104 01:01:50,440 --> 01:01:52,730 Ato janë në fakt të nevojshme. 1105 01:01:52,730 --> 01:01:54,480 Kështu që unë ju inkurajoj që të hidhini një sy në këtë. 1106 01:01:54,480 --> 01:01:56,230 Por ka një më shumë ndërtuar që unë dua 1107 01:01:56,230 --> 01:02:02,640 për të treguar në lidhje Swift se është e re për Swift 2.0 krahasuar 1108 01:02:02,640 --> 01:02:08,460 në versionet më të vjetra të Swift, i cili është në vijim. 1109 01:02:08,460 --> 01:02:11,620 Le të shohim se ku e kam vënë atë këtu? 1110 01:02:11,620 --> 01:02:16,630 >> Pra, në këtë funksion të quajtur fetchJSON, ky funksion 1111 01:02:16,630 --> 01:02:23,450 është përgjegjës për të tërhequr atë JSON fotografi nga një URL, e cila ndodh vetëm në mënyrë të 1112 01:02:23,450 --> 01:02:26,310 që të konkurrojnë në IDE tim CS50. 1113 01:02:26,310 --> 01:02:28,580 Unë vetëm filluar Apache, vënë dosjen time JSON atje, 1114 01:02:28,580 --> 01:02:32,110 dhe unë jam në gjendje për të pastaj ta tërheqë atë të dhënat nga interneti duke përdorur 1115 01:02:32,110 --> 01:02:36,430 ky funksion dhe kjo URL, i cili është i pajisur me telefon. 1116 01:02:36,430 --> 01:02:40,490 Është e dhënë nga një bibliotekë që ju përdorni kur 1117 01:02:40,490 --> 01:02:43,140 ju jeni duke bërë disa të zhvillimit app IOS. 1118 01:02:43,140 --> 01:02:49,690 >> Vini re këtu se nuk është ky pazakontë konstrukt sintaksore quajtur roje. 1119 01:02:49,690 --> 01:02:53,530 Dhe me të vërtetë e gjithë kjo është në Swift është një mënyrë për të verifikuar 1120 01:02:53,530 --> 01:02:56,870 se disa gjëra kanë janë përmbushur para jush 1121 01:02:56,870 --> 01:03:00,000 vazhduar me pjesën tjetër të funksionit. 1122 01:03:00,000 --> 01:03:04,260 Kështu që unë mund të ketë, duke përdorur ky lloj fakultative, 1123 01:03:04,260 --> 01:03:10,530 Unë mund të ketë gjetur URL nga running këtë funksion NSURL 1124 01:03:10,530 --> 01:03:16,640 dhe ruajtjen që në një URL konstante, dhe pastaj duke kontrolluar 1125 01:03:16,640 --> 01:03:20,820 për të parë nëse URL ishte zero, sepse ajo ishte duke shkuar për të kthyer një lloj opsional. 1126 01:03:20,820 --> 01:03:25,660 Dhe në qoftë se ajo ishte zero, atëherë unë do të shtypura nga një gabim dhe pastaj të kthehen. 1127 01:03:25,660 --> 01:03:29,970 >> Por në vend, çfarë roje lejon bëjmë është që gjë shumë, 1128 01:03:29,970 --> 01:03:34,550 por të siguruar se ajo është e në fakt rasti që url 1129 01:03:34,550 --> 01:03:38,020 ka qenë e vendosur siç duhet nga NSURL. 1130 01:03:38,020 --> 01:03:41,810 Dhe në qoftë se ajo është, atëherë ajo kërcen mbi këtë, dhe kjo 1131 01:03:41,810 --> 01:03:46,110 do t'ju lejojë të vazhdojë me url që janë përcaktuar siç duhet. 1132 01:03:46,110 --> 01:03:48,830 Por në qoftë se është rasti që URL nuk është përcaktuar siç duhet, 1133 01:03:48,830 --> 01:03:52,550 nëse ky funksion kthen një gabim apo diçka tjetër e papritur 1134 01:03:52,550 --> 01:03:58,030 në fakt ndodh, këtë roje konstrukt na lejon të atëherë përfundimi këtë gabim 1135 01:03:58,030 --> 01:04:00,390 dhe të kthehet menjëherë. 1136 01:04:00,390 --> 01:04:00,890 Po? 1137 01:04:00,890 --> 01:04:04,839 >> Audienca: Pra, kjo është lloj e si një në qoftë se pastaj të tjerët? 1138 01:04:04,839 --> 01:04:07,130 DAN Armendariz: Kjo është lloj i si një në qoftë se pastaj të tjerët, po, 1139 01:04:07,130 --> 01:04:14,200 përveç se kjo URL është atëherë të përcaktuara për çdo gjë nën këtë. 1140 01:04:14,200 --> 01:04:20,420 Po të kalojë këtë roje, pastaj atë në fakt do të mbushet me të dhëna 1141 01:04:20,420 --> 01:04:29,500 dhe i përdorshëm në e mbetur kod burim në funksion tuaj. 1142 01:04:29,500 --> 01:04:33,790 Kështu që unë dyshoj se ju jeni do të të fillojë për të parë këtë roje si. 1143 01:04:33,790 --> 01:04:36,670 Dhe të jemi të ndërgjegjshëm se. 1144 01:04:36,670 --> 01:04:46,270 >> Pra, vetëm duke kërkuar në një çift të tjera të gjëra, kjo e drejtë këtu është ajo, 1145 01:04:46,270 --> 01:04:53,377 mendoni ju, duke u bazuar vetëm në atë ne ishim duke folur për para? 1146 01:04:53,377 --> 01:04:56,650 >> Audienca: Mendoni se ajo do të kandidojë në listë? 1147 01:04:56,650 --> 01:04:59,100 >> DAN Armendariz: Pra, kjo është afër. 1148 01:04:59,100 --> 01:05:02,360 Ky është një funksion që ne po përcaktimin. 1149 01:05:02,360 --> 01:05:07,240 Dhe ne jemi inputting këtë funksion si një argument për këtë funksion këtu. 1150 01:05:07,240 --> 01:05:09,120 >> Audienca: [padëgjueshme] nëse nuk është zero. 1151 01:05:09,120 --> 01:05:11,470 Pra, kjo është në listë, e drejtë? 1152 01:05:11,470 --> 01:05:15,450 >> DAN Armendariz: Në qoftë se gabimi nuk është zero, kështu që is-- kështu që unë duhet të lëvizni. 1153 01:05:15,450 --> 01:05:18,060 E pra, le të shohim, unë nuk mund të vërtetë shkoni te drejtë këtu. 1154 01:05:18,060 --> 01:05:23,161 Gabimi është një argument që është duke u kaluar në këtë funksion anonim. 1155 01:05:23,161 --> 01:05:24,410 Ky është një funksion anonim. 1156 01:05:24,410 --> 01:05:25,480 Ajo nuk ka emër. 1157 01:05:25,480 --> 01:05:29,850 Por ne jemi të pranuar këto tre argumentet, të dhënat, përgjigje, dhe gabim. 1158 01:05:29,850 --> 01:05:33,590 Dhe ajo do të kthehet pavlefshëm, kështu kjo nuk do të kthehen asgjë. 1159 01:05:33,590 --> 01:05:37,910 Dhe kjo është përmbajtja e atë funksion. 1160 01:05:37,910 --> 01:05:41,961 Dhe pastaj ne kemi qasje brenda se funksion te secili prej këtyre argumenteve. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> Pra, kjo është një shakullinë Turneu i gjuhës. 1163 01:05:48,679 --> 01:05:50,470 Por unë shpresoj me këtë, shpresojmë që ju të merrni 1164 01:05:50,470 --> 01:05:54,490 një vështrim në disa nga tutorials specifike për zhvillimin e iOS me Swift, 1165 01:05:54,490 --> 01:05:57,481 veçanërisht në qoftë se ju shkoni në Web developer page-- Apple 1166 01:05:57,481 --> 01:05:59,980 ata kanë një shumë të vërtetë të mirë mësime të merrni ju keni filluar. 1167 01:05:59,980 --> 01:06:05,010 Por shpresojmë se vetëm këtë orë e folur në lidhje me sintaksë vetë i ka dhënë 1168 01:06:05,010 --> 01:06:08,760 ju të mjaftueshme për të marrë filluar me atë. 1169 01:06:08,760 --> 01:06:12,950 >> Ne do të postoj të gjitha të këtij burimi Kodi në faqen e internetit seminarit 1170 01:06:12,950 --> 01:06:17,800 sa më shpejt të jetë e mundur, dhe gjithashtu slides kështu që ju keni një referencë për të gjithë ata. 1171 01:06:17,800 --> 01:06:20,530 Por fat të mirë me projektet tuaja. 1172 01:06:20,530 --> 01:06:23,640 Dhe ju falenderoj të gjithë shumë për të ardhur. 1173 01:06:23,640 --> 01:06:26,990 >> [Duartrokitje] 1174 01:06:26,990 --> 01:06:28,026