1 00:00:00,000 --> 00:00:11,270 2 00:00:11,270 --> 00:00:14,340 >> DANIEL Armendariz: Hallo, iedereen, welkom op iOS app ontwikkeling 3 00:00:14,340 --> 00:00:15,020 met swift. 4 00:00:15,020 --> 00:00:15,870 Ik ben Dan Armendariz. 5 00:00:15,870 --> 00:00:18,920 Ik ben precepter van computer wetenschap hier aan de School 6 00:00:18,920 --> 00:00:21,200 of Engineering and Applied Sciences. 7 00:00:21,200 --> 00:00:24,310 En snel is eigenlijk soort van een heel nette taal. 8 00:00:24,310 --> 00:00:27,190 En ik heb een aantal plannen voor vandaag. 9 00:00:27,190 --> 00:00:31,430 Dus de komende uur of zo wij gaan om te kijken naar iOS app ontwikkeling zelf 10 00:00:31,430 --> 00:00:36,640 met behulp van Xcode en eigenlijk het creëren van een aantal erg basic, zeer eenvoudige toepassingen. 11 00:00:36,640 --> 00:00:40,070 En kijken naar de manier waarop je die toepassingen daadwerkelijk nemen, 12 00:00:40,070 --> 00:00:42,887 en bouwen ze, en eigenlijk leg ze op een iOS-apparaat. 13 00:00:42,887 --> 00:00:44,970 Sommige van de dingen die we zijn niet van plan om naar te kijken 14 00:00:44,970 --> 00:00:47,540 zullen dingen zoals onder andere het daadwerkelijk nemen van een aanvraag 15 00:00:47,540 --> 00:00:48,940 en zetten het op de app store. 16 00:00:48,940 --> 00:00:52,930 Er is een hoop tutorials online die zal u helpen met dat aspect ervan. 17 00:00:52,930 --> 00:00:56,230 Maar ook omdat als deel van CS50, krijg je 18 00:00:56,230 --> 00:00:59,780 naar de Apple ontwikkeling meedoen team, CS50's app development team. 19 00:00:59,780 --> 00:01:02,790 Als u nog niet hebt gedaan en u bent aangesloten bij CS50, 20 00:01:02,790 --> 00:01:04,810 Ik adviseer dat u dat, omdat dat te doen 21 00:01:04,810 --> 00:01:08,820 is hoe je in staat om te creëren bent sommige programma's in Xcode, 22 00:01:08,820 --> 00:01:11,890 bouwen ze, en eigenlijk zet hen op een aantal van uw iOS-apparaten 23 00:01:11,890 --> 00:01:14,087 Als je eigenlijk een fysieke iOS-apparaat. 24 00:01:14,087 --> 00:01:16,670 Als u niet beschikt over een fysiek iOS apparaat dat is meer dan prima. 25 00:01:16,670 --> 00:01:19,810 Je kunt eigenlijk te ontwikkelen voor iOS. 26 00:01:19,810 --> 00:01:22,390 En Xcode heeft een simulator waarmee je 27 00:01:22,390 --> 00:01:26,570 om uw aanvraag te zien in acties op uw computer. 28 00:01:26,570 --> 00:01:30,440 Maar het soort is een nette zaak om daadwerkelijk te spelen en interactie 29 00:01:30,440 --> 00:01:34,235 met uw aanvraag op een daadwerkelijk apparaat. 30 00:01:34,235 --> 00:01:37,360 Dus er is een paar eisen aan eigenlijk alles van deze ontwikkeling te doen. 31 00:01:37,360 --> 00:01:39,151 Een daarvan is dat moet je een Mac hebt. 32 00:01:39,151 --> 00:01:44,770 Het dient te lopen 10.9.4 of hoger met het oog op de ontwikkeling van doen met swift. 33 00:01:44,770 --> 00:01:47,770 >> U kunt een eerdere gebruiken version ontwikkeling 34 00:01:47,770 --> 00:01:50,810 met Objective C voor iOS en Mac. 35 00:01:50,810 --> 00:01:53,990 Maar ik raad, en een groot deel van de voorbeelden die we vandaag zien, 36 00:01:53,990 --> 00:01:55,700 Gebruik 10.10 Yosemite. 37 00:01:55,700 --> 00:02:00,910 Dus als u nog geen gebruik maakt, het is een goed excuus om dat te doen. 38 00:02:00,910 --> 00:02:05,480 Nu Xcode 6.1 is de nieuwste versie van de geïntegreerde ontwikkelomgeving 39 00:02:05,480 --> 00:02:08,979 dat Apple biedt gratis dat U kunt de app store te downloaden. 40 00:02:08,979 --> 00:02:11,220 En ik raden u aan Ook lopen de laatste versie. 41 00:02:11,220 --> 00:02:14,700 >> Als je toevallig een eerder te draaien versie, Xcode 5 en lager net 42 00:02:14,700 --> 00:02:16,741 gewoon niet ondersteunen dan ook snel. 43 00:02:16,741 --> 00:02:19,490 En de bètaversies van zes, waarvan werden uitgebracht in de zomer, 44 00:02:19,490 --> 00:02:21,770 ondersteunen wel snel, maar er is is een enorm aantal 45 00:02:21,770 --> 00:02:25,220 veranderingen in de taal, voldoende zodat de code die je bent 46 00:02:25,220 --> 00:02:28,320 gaan kijken en dat u zou kunnen vinden op het internet 47 00:02:28,320 --> 00:02:33,294 zal niet echt goed te compileren in deze eerdere versies van Xcode. 48 00:02:33,294 --> 00:02:35,460 Dus nogmaals, maar als je dat niet doet hebben een developer-account, 49 00:02:35,460 --> 00:02:38,560 Ik raad je aan developer.apple.com. 50 00:02:38,560 --> 00:02:42,240 Meld je aan, maak een developer-account, en lid van de CS50 app development team. 51 00:02:42,240 --> 00:02:45,530 Dat zal een gelegenheid om u te voorzien om uw applicaties te compileren 52 00:02:45,530 --> 00:02:47,840 en zet ze op uw apparaat. 53 00:02:47,840 --> 00:02:49,222 OK, dus laten we beginnen. 54 00:02:49,222 --> 00:02:50,930 Het allereerste wat we gaan doen is 55 00:02:50,930 --> 00:02:55,140 om daadwerkelijk te creëren een zeer eenvoudig project in Xcode 56 00:02:55,140 --> 00:02:59,530 dat zal u toestaan een aanvraag. 57 00:02:59,530 --> 00:03:03,170 >> Dus als je nog niet over Xcode geopend, ga je gang en open het 58 00:03:03,170 --> 00:03:04,270 en maak een nieuw project. 59 00:03:04,270 --> 00:03:06,570 Een speciale splash screen zal openen en zal u geven 60 00:03:06,570 --> 00:03:08,800 enkele opties over wat het is dat je wilt doen. 61 00:03:08,800 --> 00:03:12,170 Gewoon zeggen dat je wilt maken een nieuw project, een nieuwe applicatie. 62 00:03:12,170 --> 00:03:15,650 Deze pop-up venster, aangenomen dat je Xcode 6.1. 63 00:03:15,650 --> 00:03:17,650 Nu, en voor de duur van dit seminar, 64 00:03:17,650 --> 00:03:19,990 we gaan gebruiken enkele weergave toepassingen, net 65 00:03:19,990 --> 00:03:22,590 soort van een basis applicatie om uw voeten nat worden. 66 00:03:22,590 --> 00:03:25,200 En je kunt vertakken op uw eigen vanaf daar. 67 00:03:25,200 --> 00:03:27,660 >> Klik op Volgende op dit punt. 68 00:03:27,660 --> 00:03:30,796 Nu hier is er een paar dingen dat u zou willen voeren. 69 00:03:30,796 --> 00:03:32,670 De naam van het product is de de naam van uw project. 70 00:03:32,670 --> 00:03:34,859 In dit geval, ik ben gewoon gaan om het te noemen Seminar1 71 00:03:34,859 --> 00:03:36,150 want het is onze eerste voorbeeld. 72 00:03:36,150 --> 00:03:38,290 Naam van de organisatie, in dit geval is gewoon mijn naam. 73 00:03:38,290 --> 00:03:41,760 U kunt natuurlijk ook veranderen om uw eigen naam, of om CS50. 74 00:03:41,760 --> 00:03:46,160 Organisatie identifier, als je toevallig een website hebben gewoon 75 00:03:46,160 --> 00:03:49,940 de domeinnaam in achteruit, com.yourname. 76 00:03:49,940 --> 00:03:54,200 en dan de naam van het product zou automatisch moeten verschijnen 77 00:03:54,200 --> 00:03:55,820 daarna de bundel identifier. 78 00:03:55,820 --> 00:03:59,200 >> Uiteraard is de taal die we gaat worden met behulp van vandaag is vlug. 79 00:03:59,200 --> 00:04:02,590 U kunt natuurlijk gebruik maken van Objective C voor dat, maar vandaag zal snel zijn. 80 00:04:02,590 --> 00:04:04,920 En we zullen nu zeggen universele apparaten, zodat 81 00:04:04,920 --> 00:04:06,900 dat het werkt op zowel de iPad en iPhone. 82 00:04:06,900 --> 00:04:10,040 En we zullen kern vertrekken gegevens ongecontroleerd te houden 83 00:04:10,040 --> 00:04:12,830 het project relatief eenvoudig voor het moment. 84 00:04:12,830 --> 00:04:14,430 Dus laten we verder gaan en klik op Volgende. 85 00:04:14,430 --> 00:04:16,471 En het gaat om me te vragen waar ik wil om het te redden. 86 00:04:16,471 --> 00:04:19,250 Ik zal gewoon sla het op mijn desktop voor nu. 87 00:04:19,250 --> 00:04:22,267 >> Oké, dus nu is dit wat zal gebeuren als je daadwerkelijk open Xcode. 88 00:04:22,267 --> 00:04:24,100 En merk op dat de allereerste wat je ziet 89 00:04:24,100 --> 00:04:28,770 is dit uitroepteken dat zegt dat er geen ondertekening identiteit gevonden. 90 00:04:28,770 --> 00:04:31,520 Ik dit met opzet deed op mijn computer en ik ben 91 00:04:31,520 --> 00:04:34,220 in de hoop dat ik ga in staat zijn om daadwerkelijk vast te stellen dat, 92 00:04:34,220 --> 00:04:37,860 want ik wil dat je hoe dit te zien daadwerkelijk zal werken op uw eigen computer. 93 00:04:37,860 --> 00:04:40,400 >> Ga je gang en klik op fix kwestie. 94 00:04:40,400 --> 00:04:45,400 Het zal u vragen of u een bestaande Apple Developer-account. 95 00:04:45,400 --> 00:04:48,330 Dit is waar de toetreding tot de CS50 app development team 96 00:04:48,330 --> 00:04:51,240 is belangrijk, zodat je niet alleen een app-account, 97 00:04:51,240 --> 00:04:53,690 maar je hebt ook de mogelijkheid om de apps te ondertekenen 98 00:04:53,690 --> 00:04:56,420 en zet ze op je iOS-apparaat. 99 00:04:56,420 --> 00:04:58,957 Dit is niet-- klikken fix probleem is niet nodig 100 00:04:58,957 --> 00:05:01,040 als je gewoon gaat om bouwen en plaatselijk ontwikkelen, 101 00:05:01,040 --> 00:05:03,520 geheel binnen de iOS-simulator. 102 00:05:03,520 --> 00:05:05,820 >> Maar voor nu ga ik te ontwikkelen en zet ze 103 00:05:05,820 --> 00:05:08,160 op mijn iPad, die zal worden kunnen eveneens uitzenden. 104 00:05:08,160 --> 00:05:10,770 Dus ik wil dit ook daadwerkelijk toe te voegen. 105 00:05:10,770 --> 00:05:13,670 En het gaat om te vragen me voor mijn Apple ID. 106 00:05:13,670 --> 00:05:15,700 Dus het gaat om dit te zijn. 107 00:05:15,700 --> 00:05:18,940 En ik moet mijn te halen wachtwoord, dat is meer dan hier. 108 00:05:18,940 --> 00:05:27,760 Dus geef me maar een seconde te vinden dat, en kopieer die en plak het dan hier. 109 00:05:27,760 --> 00:05:28,580 >> Klik op Toevoegen. 110 00:05:28,580 --> 00:05:31,095 Het gaat om me te vragen welk team ik wil meedoen. 111 00:05:31,095 --> 00:05:33,240 Ik ga naar school van de techniek te doen. 112 00:05:33,240 --> 00:05:35,680 Klik op Deelnemen. 113 00:05:35,680 --> 00:05:37,780 Oeps, dat is de verkeerde. 114 00:05:37,780 --> 00:05:40,730 Laten we dit één. 115 00:05:40,730 --> 00:05:42,060 Hopelijk zal dat ene werken. 116 00:05:42,060 --> 00:05:44,220 Dat men nog steeds niet werkt. 117 00:05:44,220 --> 00:05:46,610 We hebben bijna geen goeden hier. 118 00:05:46,610 --> 00:05:48,260 OK, moet deze werken. 119 00:05:48,260 --> 00:05:50,816 Sluit nu. 120 00:05:50,816 --> 00:05:54,450 Nu gaan we de school van engineering, klikt u kiest. 121 00:05:54,450 --> 00:06:00,190 >> En nu hopelijk na een paar seconden je OK can--, 122 00:06:00,190 --> 00:06:02,550 Ik zal intrekken en aanvraag. 123 00:06:02,550 --> 00:06:05,410 Oh man, dit gaat niet werken. 124 00:06:05,410 --> 00:06:08,890 OK, zal ik een andere proberen. 125 00:06:08,890 --> 00:06:11,167 Laten we dit doen hier. 126 00:06:11,167 --> 00:06:17,020 127 00:06:17,020 --> 00:06:19,310 Live-demo's er niet in slagen mij. 128 00:06:19,310 --> 00:06:22,540 Misschien moeten we terugkeren naar gewoon gebouw volledig lokaal, 129 00:06:22,540 --> 00:06:25,050 maar dat OK in dit geval. 130 00:06:25,050 --> 00:06:28,560 >> Dus hier, terwijl dit eigenlijk werken, wat we gaan doen is gewoon 131 00:06:28,560 --> 00:06:31,190 maakt een zeer eenvoudige Hello World-toepassing. 132 00:06:31,190 --> 00:06:32,340 Dus dit is Xcode. 133 00:06:32,340 --> 00:06:37,300 En als je het nog niet gezien, het kan een beetje intimiderend op het eerste. 134 00:06:37,300 --> 00:06:41,430 Er is veel van ruiten, er is een veel hebbedingetjes op verschillende gebieden. 135 00:06:41,430 --> 00:06:44,300 Maar gewoon beseffen dat er echt meerdere hoofdcomponenten 136 00:06:44,300 --> 00:06:46,580 deze ontwikkelomgeving. 137 00:06:46,580 --> 00:06:51,090 Op de uiterst links zijn alle bestanden die van toepassing zijn op uw programma 138 00:06:51,090 --> 00:06:52,997 of om uw specifieke project. 139 00:06:52,997 --> 00:06:55,080 We zullen rond te klikken op een aantal van hen en we zullen 140 00:06:55,080 --> 00:06:57,660 wijzen op de meest belangrijkste zijn in de tijd. 141 00:06:57,660 --> 00:06:59,650 Uiterst rechts, we hebben een set van attributen. 142 00:06:59,650 --> 00:07:02,920 Al deze eigenschappen, daar verschillende panelen voor de attributen. 143 00:07:02,920 --> 00:07:06,770 De ruiten zal veranderen afhankelijk van de de context van de belangrijkste inhoud, die 144 00:07:06,770 --> 00:07:08,290 toevallig in het midden. 145 00:07:08,290 --> 00:07:11,740 Nu de middelste daadwerkelijk aantonen u een verscheidenheid van dingen, bijvoorbeeld 146 00:07:11,740 --> 00:07:13,290 uw code zelf. 147 00:07:13,290 --> 00:07:17,070 Of je zou eigenlijk have-- wanneer U klikt op het storyboard waarop 148 00:07:17,070 --> 00:07:21,270 is, door de manier, maar een grafische weergave van uw gebruiker 149 00:07:21,270 --> 00:07:25,350 interface voor uw application-- vervolgens het deelvenster attributen 150 00:07:25,350 --> 00:07:27,334 op het meest rechtse daadwerkelijk veranderen. 151 00:07:27,334 --> 00:07:29,750 Nu is er een paar andere dingen die ik op wil wijzen. 152 00:07:29,750 --> 00:07:33,360 U kunt soort verkennen rond in de omgeving op uw eigen. 153 00:07:33,360 --> 00:07:35,730 Maar een van de dingen dat is zeer nuttig geweest 154 00:07:35,730 --> 00:07:38,470 is deze knop hier, de rechtsboven in het venster. 155 00:07:38,470 --> 00:07:41,230 Er is op deze knop dat lijkt op het ver 156 00:07:41,230 --> 00:07:46,090 liet het een paragraaf gevolgd door twee cirkels en sorteren 157 00:07:46,090 --> 00:07:49,540 twee pijlen afstand van elkaar. 158 00:07:49,540 --> 00:07:52,640 Als u tussen de standaard editor die 159 00:07:52,640 --> 00:07:55,560 is uiterst linker, de ene dat is standaard geselecteerd, 160 00:07:55,560 --> 00:08:01,040 en de twee overlappende cirkels elkaar, wat krijg je eigenlijk 161 00:08:01,040 --> 00:08:02,210 zijn een dubbele vensters. 162 00:08:02,210 --> 00:08:04,240 >> En dit is eigenlijk gaat om bruikbaar voor ons te zijn 163 00:08:04,240 --> 00:08:07,330 wanneer we nodig hebben om artikelen te koppelen in de gebruikersinterface om de code. 164 00:08:07,330 --> 00:08:09,330 En we zullen meer over praten dat in slechts een moment. 165 00:08:09,330 --> 00:08:12,050 Maar beseffen dat als je nog meer ruiten als dit, 166 00:08:12,050 --> 00:08:15,830 u kunt uw uitzicht gewoon te vereenvoudigen een beetje van terug te klikken 167 00:08:15,830 --> 00:08:20,680 op enkele editor. 168 00:08:20,680 --> 00:08:21,580 Tot nu toe alles goed. 169 00:08:21,580 --> 00:08:24,560 Dus eigenlijk hebben we de code op links, attributen aan de rechterkant, 170 00:08:24,560 --> 00:08:28,260 en wat het ook is we werken hier in het centrum. 171 00:08:28,260 --> 00:08:30,390 >> Dus hier heb ik klikte op de belangrijkste storyboard. 172 00:08:30,390 --> 00:08:33,350 En het storyboard, nogmaals, is een manier om in Xcode 173 00:08:33,350 --> 00:08:38,110 dat je daadwerkelijk kunt maken van uw gebruiker interface met behulp van gewoon slepen en neerzetten 174 00:08:38,110 --> 00:08:39,130 technieken. 175 00:08:39,130 --> 00:08:41,190 En dus voor ons erg eerste toepassing dit 176 00:08:41,190 --> 00:08:42,720 is precies wat we gaan doen. 177 00:08:42,720 --> 00:08:45,950 We gaan naar beneden te gaan naar de zeer veel lagere rechter gedeelte 178 00:08:45,950 --> 00:08:49,900 van het scherm, die bevat een verscheidenheid van de gebruiker elementen 179 00:08:49,900 --> 00:08:53,270 die u vervolgens kunt klikken en slepen om uw gebruikersinterface te creëren. 180 00:08:53,270 --> 00:08:55,550 >> Nu al deze elementen worden genoemd bekeken 181 00:08:55,550 --> 00:08:57,370 omdat zij leveren een soort van uitzicht. 182 00:08:57,370 --> 00:09:00,190 Er is een beeld uitzicht, voor bijvoorbeeld daadwerkelijk tonen 183 00:09:00,190 --> 00:09:01,740 een beeld op de gebruikersinterface. 184 00:09:01,740 --> 00:09:04,310 Er is een tafel te eigenlijk tonen een tafel. 185 00:09:04,310 --> 00:09:05,190 Enzovoort, enzovoort. 186 00:09:05,190 --> 00:09:08,250 Er is een grote verscheidenheid van uitzichten die je hier kunt selecteren. 187 00:09:08,250 --> 00:09:11,100 Dus gewoon voor nu gaan we te zoeken naar een label. 188 00:09:11,100 --> 00:09:13,550 Je kunt gewoon bladeren door alle van de lijsten die er is. 189 00:09:13,550 --> 00:09:15,460 Maar er is de zoektocht bar aan de onderkant 190 00:09:15,460 --> 00:09:19,460 dat maakt het gemakkelijker identificeren specifieke uitzicht dat je eigenlijk 191 00:09:19,460 --> 00:09:22,020 willen slepen in uw gebruikersinterface. 192 00:09:22,020 --> 00:09:23,560 >> Vond mijn label. 193 00:09:23,560 --> 00:09:28,430 Ik ga het slepen hier, direct op mijn voorbeeld applicatie. 194 00:09:28,430 --> 00:09:30,130 Daar in het midden ziet er goed uit. 195 00:09:30,130 --> 00:09:33,180 En ik ga het type "Hello World!" 196 00:09:33,180 --> 00:09:33,810 Druk op Enter. 197 00:09:33,810 --> 00:09:34,877 Nu heb ik een label. 198 00:09:34,877 --> 00:09:36,960 Het maakt niet uit als het is gecentreerd terecht. 199 00:09:36,960 --> 00:09:38,500 Dus ik kan proberen om opnieuw te centreren. 200 00:09:38,500 --> 00:09:42,100 Gelukkig biedt deze begeleidt om dingen veel gemakkelijker. 201 00:09:42,100 --> 00:09:44,130 Ik ga proberen om het te compileren. 202 00:09:44,130 --> 00:09:46,570 Hopelijk zal het eigenlijk hier. 203 00:09:46,570 --> 00:09:52,870 En als dat niet het geval, in slechts een moment het zal wel degelijk op mijn iPad. 204 00:09:52,870 --> 00:09:54,360 Het is hier. 205 00:09:54,360 --> 00:09:55,060 Daar is het. 206 00:09:55,060 --> 00:09:56,590 >> OK, dus dat is het. 207 00:09:56,590 --> 00:09:57,160 We zijn klaar. 208 00:09:57,160 --> 00:09:58,868 We hebben ons zeer gecreëerd eerste aanvraag. 209 00:09:58,868 --> 00:10:01,330 Nu is dit natuurlijk niet om het even wat doen. 210 00:10:01,330 --> 00:10:02,280 Het is gewoon een label. 211 00:10:02,280 --> 00:10:07,350 Er is geen verband tussen de user interface en de code. 212 00:10:07,350 --> 00:10:10,130 Dus als we eigenlijk wilden om deze verbinding te maken, 213 00:10:10,130 --> 00:10:14,790 als we wilde eigenlijk een soort hebben De communicatie tussen de elementen 214 00:10:14,790 --> 00:10:17,540 die bestaan ​​op de scherm en de code die 215 00:10:17,540 --> 00:10:19,810 laat ons toe om te controleren deze elementen, dan 216 00:10:19,810 --> 00:10:23,570 we eigenlijk nodig hebben om kijken naar de code zelf. 217 00:10:23,570 --> 00:10:27,000 >> Dus dit is wat heet ViewController.swift. 218 00:10:27,000 --> 00:10:30,080 En, vooral uw eerste paar programma's, 219 00:10:30,080 --> 00:10:33,120 dit gaat om een ​​soort van de te grootste deel van de code die u enter-- 220 00:10:33,120 --> 00:10:35,980 zal in dit document hier. 221 00:10:35,980 --> 00:10:38,390 Er is een heleboel dingen dat is hier tot nu toe, toch? 222 00:10:38,390 --> 00:10:42,660 Er is import UI kit klasse, overschrijven, [? funk,?] al deze verschillende dingen. 223 00:10:42,660 --> 00:10:45,820 En het is niet helemaal duidelijk wat is dat al deze middelen. 224 00:10:45,820 --> 00:10:48,570 Dus laten we eens een stap terug weg van Xcode voor een klein beetje 225 00:10:48,570 --> 00:10:52,420 en kijk naar de taal zelf, swift. 226 00:10:52,420 --> 00:10:56,370 >> Dus met swift, het was in ontwerp en ontwikkeling 227 00:10:56,370 --> 00:10:58,645 bij Apple voor ongeveer vier jaren aan mijn begrip. 228 00:10:58,645 --> 00:11:01,270 En er zijn een paar functies erover dat zijn echt netjes. 229 00:11:01,270 --> 00:11:03,910 Allereerst, het is samengesteld taal, net als C. 230 00:11:03,910 --> 00:11:06,120 Dus moet je eerst compileren en voer het uit 231 00:11:06,120 --> 00:11:09,580 voordat je daadwerkelijk kan uitvoeren van de code die het gevolg is. 232 00:11:09,580 --> 00:11:14,250 Maar, in tegenstelling tot C, een interactief vraagt ​​dat je eigenlijk kan draaien 233 00:11:14,250 --> 00:11:16,680 en typ willekeurige commando's in. 234 00:11:16,680 --> 00:11:20,280 En heel graag een JavaScript-console, die u nu vertrouwd met kan zijn, 235 00:11:20,280 --> 00:11:24,506 het daadwerkelijk zal beoordelen die commando's en aan u de output. 236 00:11:24,506 --> 00:11:26,380 En ze hebben zelfs genomen dat naar het volgende niveau 237 00:11:26,380 --> 00:11:29,100 en ze hebben iets gecreëerd riep speeltuinen in Xcode 238 00:11:29,100 --> 00:11:31,720 die u in staat om visueel werken met code. 239 00:11:31,720 --> 00:11:34,910 En we eigenlijk zien een aantal voorbeelden van die in slechts een klein beetje. 240 00:11:34,910 --> 00:11:41,680 Het is gebaseerd op C. C is de grond het, omdat alle van de samenstellers 241 00:11:41,680 --> 00:11:46,820 creëren code uit C en maken de objectcode van. 242 00:11:46,820 --> 00:11:49,240 Maar het is echt aandelen relatief weinig syntax. 243 00:11:49,240 --> 00:11:50,721 Het ziet er nogal anders. 244 00:11:50,721 --> 00:11:51,970 Er zullen een aantal gelijkenissen. 245 00:11:51,970 --> 00:11:54,140 Maar er gaan worden nogal wat verschillen 246 00:11:54,140 --> 00:11:57,200 in vergelijking met, zeg, JavaScript of PHP. 247 00:11:57,200 --> 00:11:59,070 En we zullen deze wijzen in slechts een moment. 248 00:11:59,070 --> 00:12:01,420 >> Nu een van de grootste dingen over swift dat is leuk 249 00:12:01,420 --> 00:12:05,650 is dat, zeker in vergelijking tot C, het is bedoeld om veilig te zijn. 250 00:12:05,650 --> 00:12:08,100 Alles in het bedoeld is worden zeer sterk ingetypt. 251 00:12:08,100 --> 00:12:10,780 In feite is het bijna vervelend in het begin, toen je voor het eerst 252 00:12:10,780 --> 00:12:15,610 begint te werken met snelle, hoe hoeveel het afdwingt types overal. 253 00:12:15,610 --> 00:12:17,860 Iets dat is een string moet een snaar blijven. 254 00:12:17,860 --> 00:12:22,100 Het is erg moeilijk om te sorteren van de bekeerling het of dwingen het in een andere vorm. 255 00:12:22,100 --> 00:12:23,800 >> En nogmaals, we voorbeelden van deze show. 256 00:12:23,800 --> 00:12:26,830 Maar uiteindelijk beseffen dat Dit is bedoeld om je te beschermen, 257 00:12:26,830 --> 00:12:32,010 en door u bedoel ik de code, uit crashen in sommige afschuwelijke manier waarop 258 00:12:32,010 --> 00:12:34,330 je hebt een soort van niet-passende type. 259 00:12:34,330 --> 00:12:36,040 En nogmaals, werken. 260 00:12:36,040 --> 00:12:40,210 Omdat het frustrerend zal eerst als je probeert te achterhalen waarom precies 261 00:12:40,210 --> 00:12:43,070 je krijgt deze ongewone fout omgaan met types. 262 00:12:43,070 --> 00:12:45,350 Maar het zal de moeite waard op het einde. 263 00:12:45,350 --> 00:12:47,267 >> Het behandelt wel automatische geheugenbeheer, 264 00:12:47,267 --> 00:12:49,100 je dus niet meer doen hebben te maken met dingen 265 00:12:49,100 --> 00:12:51,400 zoals malloc en vrij en alle van dit soort dingen. 266 00:12:51,400 --> 00:12:53,066 En het is ook ontworpen voor algemeenheden. 267 00:12:53,066 --> 00:12:58,360 Dus terwijl we een Xcode te kunnen gebruiken maken iOS-apps en Mac-toepassingen, 268 00:12:58,360 --> 00:13:00,380 we kunnen ook gewoon gebruiken als een scripttaal. 269 00:13:00,380 --> 00:13:03,660 En zo kunnen we het soort gebruik van de plaats van PHP of plaats 270 00:13:03,660 --> 00:13:07,800 van Python om daadwerkelijk snel ontleden en te verwerken 271 00:13:07,800 --> 00:13:09,800 sommige gegevens die wij hebben op onze computer. 272 00:13:09,800 --> 00:13:13,290 >> Het heeft een breed scala aan moderne functies, opties die, veranderlijkheid, 273 00:13:13,290 --> 00:13:17,900 generieke geneesmiddelen, sluitingen, en veel van deze dingen die je wel of niet herkennen. 274 00:13:17,900 --> 00:13:22,810 En het is gewoon een soort van een ongelukkige deel van de taal die sommige 275 00:13:22,810 --> 00:13:26,700 soort van futuristische, moderne elementen die zijn opgenomen in de elementen 276 00:13:26,700 --> 00:13:34,520 zo diep geworteld dat ik eigenlijk wil hebben om je te leren CS50.5 een beetje. 277 00:13:34,520 --> 00:13:37,305 >> We moeten een beetje meer te leren over enkele functies in orde 278 00:13:37,305 --> 00:13:40,180 om echt te begrijpen wat er gaande is op en zodat u kunt kijken naar code 279 00:13:40,180 --> 00:13:42,450 en niet het gevoel totaal verloren. 280 00:13:42,450 --> 00:13:44,820 En je zult zien wat ik bedoel door die in slechts een minuut. 281 00:13:44,820 --> 00:13:47,830 OK, dus let's-- genoeg van dit soort theoretische spullen. 282 00:13:47,830 --> 00:13:52,450 Laten we eigenlijk kijken naar onze allereerste snel programma. 283 00:13:52,450 --> 00:13:53,590 Het is een regel code. 284 00:13:53,590 --> 00:13:57,690 Lijn 14 hier, het zegt afdruk l n hallo CS50. 285 00:13:57,690 --> 00:14:01,160 >> Dus er is een paar dingen dat is heel anders over vergeleken 286 00:14:01,160 --> 00:14:04,140 om dingen die u misschien wel gebruikt vanaf, bijvoorbeeld. 287 00:14:04,140 --> 00:14:08,390 Een daarvan is dat er geen intmain, er is geen omvatten sectie, 288 00:14:08,390 --> 00:14:10,790 er is geen van deze extra dingen. 289 00:14:10,790 --> 00:14:13,790 De omvatten, zoals standaard I / O, zoals bibliotheken 290 00:14:13,790 --> 00:14:16,580 die daadwerkelijk zorgen voor de standaard functies van de taal, 291 00:14:16,580 --> 00:14:19,180 worden automatisch opgenomen als onderdeel van de standaard bibliotheek swift's 292 00:14:19,180 --> 00:14:20,680 en die worden automatisch geïmporteerd. 293 00:14:20,680 --> 00:14:23,740 Je hoeft niet te doen dat import handmatig. 294 00:14:23,740 --> 00:14:27,360 >> Intmain bestaat niet omdat de belangrijkste toegangspoort voor de code 295 00:14:27,360 --> 00:14:29,470 is effectief ter begin van de code. 296 00:14:29,470 --> 00:14:32,000 Dus elke code die je hebt vanaf het begin 297 00:14:32,000 --> 00:14:34,940 daadwerkelijk zal worden uitgevoerd bij de start. 298 00:14:34,940 --> 00:14:36,520 Dus dit is echt sterk vereenvoudigd. 299 00:14:36,520 --> 00:14:38,470 Merk ook, dat er geen puntkomma. 300 00:14:38,470 --> 00:14:41,040 Er is geen puntkomma's in deze taal. 301 00:14:41,040 --> 00:14:43,261 Je zet een verklaring op een afzonderlijke regel 302 00:14:43,261 --> 00:14:45,510 en dan de volgende regel vertegenwoordigt het andere verklaring. 303 00:14:45,510 --> 00:14:47,420 Als u wilt zetten mulitiple verklaringen online, 304 00:14:47,420 --> 00:14:49,086 dan heb je scheiden door een puntkomma. 305 00:14:49,086 --> 00:14:50,940 Maar voor het grootste deel, voor goede stijl, we zijn 306 00:14:50,940 --> 00:14:56,530 nooit te puntkomma zien het doel van het scheiden statements 307 00:14:56,530 --> 00:14:58,420 in swift. 308 00:14:58,420 --> 00:14:59,820 Dus hoe werkt dit eigenlijk? 309 00:14:59,820 --> 00:15:04,080 Wel erg veel op C we eigenlijk een compilatie. 310 00:15:04,080 --> 00:15:10,640 En zo kunnen we dat doen met behulp van swift c en dan 1.Swift. 311 00:15:10,640 --> 00:15:13,850 En dan na een paar minuten zal dit compileren 312 00:15:13,850 --> 00:15:16,340 en dan kan ik lopen punt één. 313 00:15:16,340 --> 00:15:19,691 En dan zal het gewoon zeggen "Hallo CS50." 314 00:15:19,691 --> 00:15:20,690 Geweldig, dus daar gaan we. 315 00:15:20,690 --> 00:15:22,273 Daar is onze eerste Hello World programma. 316 00:15:22,273 --> 00:15:24,790 Laten we verder gaan naar nummer twee. 317 00:15:24,790 --> 00:15:30,450 >> Nu in dit-- dit is veranderd lichtjes, want terwijl je normaal 318 00:15:30,450 --> 00:15:34,720 doen-- in feite altijd heb je te een snelle toepassing voordat je compileert 319 00:15:34,720 --> 00:15:37,180 eigenlijk het-- één run van de grote kenmerken 320 00:15:37,180 --> 00:15:40,230 dat ik zinspeelde eerder was dat swift daadwerkelijk kan worden gebruikt in een soort 321 00:15:40,230 --> 00:15:43,390 van een pseudo-interpretatieve modus is er in feite als een interpreter. 322 00:15:43,390 --> 00:15:46,690 Maar wat dit zal doen, is er is in feite een snelle applicatie 323 00:15:46,690 --> 00:15:47,520 die u kunt uitvoeren. 324 00:15:47,520 --> 00:15:51,050 >> Dus bijvoorbeeld als je typt gewoon swift hier, wat er zal gebeuren 325 00:15:51,050 --> 00:15:52,330 is dat u een melding krijgt. 326 00:15:52,330 --> 00:15:59,040 En u kunt uw snelle typen code, te printen hallo, en voer het uit. 327 00:15:59,040 --> 00:16:01,867 En het zal eigenlijk print-- nou ja, het is niet afgedrukt in dit geval 328 00:16:01,867 --> 00:16:04,450 omdat deze gemaakt gecentreerd uit, die niet hier zichtbaar. 329 00:16:04,450 --> 00:16:06,660 Maar het is eigenlijk in staat om te functioneren. 330 00:16:06,660 --> 00:16:09,580 En dus in dit geval, ik ben gewoon gaat dit als script. 331 00:16:09,580 --> 00:16:11,259 En ik kan eigenlijk deze code er draaien. 332 00:16:11,259 --> 00:16:13,800 Dus de manier waarop ik in feite lopen het iets anders zal zijn, 333 00:16:13,800 --> 00:16:15,710 maar je zult zien dat in slechts een moment. 334 00:16:15,710 --> 00:16:18,890 Nu, in dit geval wat we gaan te doen is om eerst een variabele definiëren. 335 00:16:18,890 --> 00:16:22,160 Dus dit is hoe we definiëren een variabele in vlotte, 336 00:16:22,160 --> 00:16:25,900 wordt gebruik gemaakt van de verhuurde trefwoord, gevolgd de naam van de variabele, 337 00:16:25,900 --> 00:16:29,280 en dan bieden we een aantal initialiseren van gegevens optioneel. 338 00:16:29,280 --> 00:16:34,660 Dus dit geval zijn we het definiëren een constante genaamd naam 339 00:16:34,660 --> 00:16:37,775 en we gaan gebruiken, dat in de output van onze printlijn 340 00:16:37,775 --> 00:16:39,590 helemaal onderaan, hello naam. 341 00:16:39,590 --> 00:16:43,260 >> Nu merken dat in plaats van% s, kunnen we de naam van deze kapselen 342 00:16:43,260 --> 00:16:49,960 variabele / () en kunnen samenvoegen in de inhoud van deze 343 00:16:49,960 --> 00:16:51,790 string in deze string. 344 00:16:51,790 --> 00:16:56,510 Nu tegenstelling C, koord is werkelijke echte typ snel. 345 00:16:56,510 --> 00:16:59,240 En zo is het, naast zit ints en langs 346 00:16:59,240 --> 00:17:02,220 verdubbelt heel gemakkelijk en natuurlijk vergeleken 347 00:17:02,220 --> 00:17:05,450 Om enkele van de andere talen die we hebben gezien. 348 00:17:05,450 --> 00:17:07,980 Dus dit zou eigenlijk functioneren net zoals je zou verwachten. 349 00:17:07,980 --> 00:17:10,540 >> Ik kan 2.swift draaien. 350 00:17:10,540 --> 00:17:14,390 En we zien dat mijn naam is eigenlijk gesplitst in, "Hallo Dan." 351 00:17:14,390 --> 00:17:16,050 OK, geweldig. 352 00:17:16,050 --> 00:17:17,485 Verhuizen naar nummer drie. 353 00:17:17,485 --> 00:17:19,359 Nu was het een beetje van een leugentje om bestwil dat ik 354 00:17:19,359 --> 00:17:23,369 zei dat de manier waarop we verklaren variabelen was om de verhuurde trefwoord te gebruiken. 355 00:17:23,369 --> 00:17:27,640 Zo vaak als u eventueel kunt u doen wilt gebruiken te laten, want wat dat doet 356 00:17:27,640 --> 00:17:29,280 is het definieert een constante. 357 00:17:29,280 --> 00:17:33,010 En dat snel dat het kan vertelt optimaliseren van de snelheid van uw aanvraag 358 00:17:33,010 --> 00:17:36,230 omdat hij weet dat variabele is niet van plan om te veranderen. 359 00:17:36,230 --> 00:17:38,760 >> Zo zorgvuldig evalueren wanneer je gaat gebruiken 360 00:17:38,760 --> 00:17:41,382 een variabele voor de oog veranderen. 361 00:17:41,382 --> 00:17:43,340 En als je gaat maak een variabele net 362 00:17:43,340 --> 00:17:47,010 om een ​​aantal gegevens te houden en dat is niet echt gaan veranderen. 363 00:17:47,010 --> 00:17:50,150 Dus dit concept van de onveranderlijkheid, het is niet echt gaat veranderen, 364 00:17:50,150 --> 00:17:53,740 is een belangrijk, zelfs als ver naar beneden als het definiëren van variabelen. 365 00:17:53,740 --> 00:17:56,870 Dus hier hebben we een naam gedefinieerd, Laat naam, en in dit geval 366 00:17:56,870 --> 00:18:02,120 het is een constante, die van het type snaar, en is gelijk aan Dan. 367 00:18:02,120 --> 00:18:05,580 >> Dus terwijl in de voorafgaande versie, het infers-- en door "het" 368 00:18:05,580 --> 00:18:08,220 Ik bedoel swift-- swift leidt het type gegevens 369 00:18:08,220 --> 00:18:10,850 dat we in de variabele hebt ingevoerd. 370 00:18:10,850 --> 00:18:12,930 In dit geval kunnen we expliciet zijn. 371 00:18:12,930 --> 00:18:17,590 Dus laat vervolgens de naam van deze variabele naam, dan een dubbele punt. 372 00:18:17,590 --> 00:18:21,350 En na de dubbele punt doen we specificeert het type gegevens. 373 00:18:21,350 --> 00:18:24,694 Dus het is niet langer int naam of string naam of iets dergelijks. 374 00:18:24,694 --> 00:18:26,860 Maar in plaats daarvan laat label, we zijn bepalen of 375 00:18:26,860 --> 00:18:29,090 het is een constante of variabele, gevolgd door de naam, 376 00:18:29,090 --> 00:18:31,870 gevolgd door het type naar keuze. 377 00:18:31,870 --> 00:18:34,730 >> Dus in dit geval zijn we het definiëren deze naam is een string. 378 00:18:34,730 --> 00:18:35,790 We zeggen is Dan. 379 00:18:35,790 --> 00:18:39,270 En nu heb ik een andere variabele, in dit geval heet het label. 380 00:18:39,270 --> 00:18:42,090 Maar merken dat het voorafgegaan door de var trefwoord. 381 00:18:42,090 --> 00:18:44,430 De var keyword middelen dat deze variabele kan 382 00:18:44,430 --> 00:18:48,720 op een later moment worden veranderd tijd, ergens in de code 383 00:18:48,720 --> 00:18:52,480 kunnen we eigenlijk veranderen en het zal niet geven ons een bepaalde fout. 384 00:18:52,480 --> 00:18:56,760 >> We kunnen standaard concatenating doen operator hier gebruik van het plusteken 385 00:18:56,760 --> 00:19:00,130 om daadwerkelijk toe te voegen onze noemen in deze string. 386 00:19:00,130 --> 00:19:02,921 En dan kunnen we uitprinten zoals we zagen slechts een moment geleden. 387 00:19:02,921 --> 00:19:04,920 Laten we nu eens zeggen dat je een variabele wilt maken 388 00:19:04,920 --> 00:19:06,586 maar u wilt niet het nog initialiseren. 389 00:19:06,586 --> 00:19:08,590 Je nog niet wilt zet alle gegevens binnen het. 390 00:19:08,590 --> 00:19:11,760 Nou moet je vertellen swift wat de aard van de gegevens 391 00:19:11,760 --> 00:19:16,430 gaat worden voordat je kan eigenlijk correct definiëren. 392 00:19:16,430 --> 00:19:20,360 >> Dus in dit geval, wanneer we hebben gedefinieerd een variabele genaamd graad we moeten 393 00:19:20,360 --> 00:19:24,450 expliciet over zijn soort, omdat het kan niet afleiden gewoon op zoek 394 00:19:24,450 --> 00:19:27,300 de geïnitialiseerde data die u aan het. 395 00:19:27,300 --> 00:19:30,050 Het zal ons een fout als u gewoon het type var rang, bijvoorbeeld, 396 00:19:30,050 --> 00:19:31,830 omdat het geen soort dan ook. 397 00:19:31,830 --> 00:19:33,353 Dus graad = 100. 398 00:19:33,353 --> 00:19:35,790 Zodat 100 een geheel getal is past heel mooi in dat. 399 00:19:35,790 --> 00:19:36,998 Het zal blijven functioneren. 400 00:19:36,998 --> 00:19:40,350 401 00:19:40,350 --> 00:19:43,022 We kunnen zien hoe dan wij kunnen deze samenvoegen in. 402 00:19:43,022 --> 00:19:44,730 Nu u misschien wel verleiding, als je werkelijk 403 00:19:44,730 --> 00:19:48,610 wilde het aaneenschakelen leerjaar in een andere tekenreeks, 404 00:19:48,610 --> 00:19:52,560 in andere string, dat je zou gewoon Gebruik diezelfde concatenating operator. 405 00:19:52,560 --> 00:19:54,630 En dat zou normaal gesproken waar zijn. 406 00:19:54,630 --> 00:20:00,540 Maar snel zal je niet laten impliciet veranderen de aard van de gegevens. 407 00:20:00,540 --> 00:20:03,440 Dus in dit geval, dit lijn, 25, zal mislukken 408 00:20:03,440 --> 00:20:06,650 omdat rang een integer en niet een string. 409 00:20:06,650 --> 00:20:08,760 En dus is er een mismatch set van soorten. 410 00:20:08,760 --> 00:20:11,780 Dus je moet expliciet te zijn wanneer wilt u deze gegevens te wijzigen, 411 00:20:11,780 --> 00:20:14,080 wanneer u dit wilt dwingen gegevens in een ander type 412 00:20:14,080 --> 00:20:17,250 en zeggen: OK, ik wil nemen deze kwaliteit, die een integer, 413 00:20:17,250 --> 00:20:19,050 en te converteren naar een string. 414 00:20:19,050 --> 00:20:23,970 >> Dus ik een hoofdletter s String nemen alle van de soorten, zult u merken, worden geactiveerd, 415 00:20:23,970 --> 00:20:26,280 Int, Dubbele, String, enzovoort, enzovoort. 416 00:20:26,280 --> 00:20:28,930 Allemaal zijn gekapitaliseerde alleen maar om dingen makkelijker te maken. 417 00:20:28,930 --> 00:20:32,240 En we zullen zeggen kapitaliseren String overgaan in het leerjaar. 418 00:20:32,240 --> 00:20:35,020 En het zal creëren touwtje uit dat integer. 419 00:20:35,020 --> 00:20:37,970 En dan kunnen we samenvoegen de twee zeer mooi. 420 00:20:37,970 --> 00:20:40,500 Heeft u vragen over dit soort dingen tot nu toe? 421 00:20:40,500 --> 00:20:43,770 Oké, laten we ploegen door naar nummer vier. 422 00:20:43,770 --> 00:20:47,870 >> Laten we nu praten over een aantal meer geavanceerde structuren, zoals arrays en loops. 423 00:20:47,870 --> 00:20:54,920 En in tegenstelling tot C, arrays in swift worden niet vertegenwoordigd door pointers. 424 00:20:54,920 --> 00:20:58,730 Wijzers in swift, hoewel ze bestaan, genaamd 425 00:20:58,730 --> 00:21:02,840 als onveilig pointers of sommige gelijkaardig type als dit, 426 00:21:02,840 --> 00:21:04,950 ze zijn niet normaal blootgesteld aan u. 427 00:21:04,950 --> 00:21:07,300 Dus wordt het zeer moeilijk voor u om te manipuleren 428 00:21:07,300 --> 00:21:10,020 het geheugen rechtstreeks van uw computer. 429 00:21:10,020 --> 00:21:11,670 >> Dus arrays zijn slechts een type data. 430 00:21:11,670 --> 00:21:16,830 En ze zijn verwezen met behulp van dit soort van nu standaard vierkante haakjesnotering 431 00:21:16,830 --> 00:21:18,280 die u eerder hebt gezien. 432 00:21:18,280 --> 00:21:21,130 Maar als je eigenlijk wilt definieert een type variabele 433 00:21:21,130 --> 00:21:24,330 als een array van enkele bepaald type, dan moet je 434 00:21:24,330 --> 00:21:27,150 zet dat soort vierkante haakjes. 435 00:21:27,150 --> 00:21:30,260 Dus wat ik hier zeg is dat Ik ben het creëren van een variabele genaamd 436 00:21:30,260 --> 00:21:33,930 kwaliteiten van het type int array. 437 00:21:33,930 --> 00:21:37,380 En ik ben het opzetten dat gelijk is aan een aantal geïnitialiseerde gegevens, die in dit geval 438 00:21:37,380 --> 00:21:42,960 is 100, 0, 90, 85, dat is gewoon een verzameling van willekeurige cijfers hier. 439 00:21:42,960 --> 00:21:46,480 Nu in dit geval ik kon, vergeet niet, verwijder dan de soort, 440 00:21:46,480 --> 00:21:49,580 en het zou in staat om het af te leiden zijn op basis van de gegevens geïnitialiseerd. 441 00:21:49,580 --> 00:21:51,990 Maar als ik verwijderd dit en Ik nodig om het later te stellen, 442 00:21:51,990 --> 00:21:56,840 dan zou ik moeten ervoor zorgen dat ik de soort daar. 443 00:21:56,840 --> 00:21:58,750 Oké, laten we gaan samen. 444 00:21:58,750 --> 00:22:03,010 Dus we can-- arrays aan ons een verscheidenheid 445 00:22:03,010 --> 00:22:07,130 van methoden door die puntnotatie bij u waarschijnlijk nu vertrouwd met. 446 00:22:07,130 --> 00:22:10,360 Dus grades.count bijvoorbeeld vertelt precies het aantal 447 00:22:10,360 --> 00:22:13,680 elementen die op deze array. 448 00:22:13,680 --> 00:22:17,260 >> Als ik wil additional-- toevoegen merk nu dat dit een var 449 00:22:17,260 --> 00:22:20,140 en niet-- dit is een variabele en niet een constante, die 450 00:22:20,140 --> 00:22:24,410 betekent dat ik de inhoud kan veranderen van deze array, kan ik objecten toe te voegen. 451 00:22:24,410 --> 00:22:28,870 Maar ik kan niet zomaar kwaliteiten zeggen en dan tussen vierkante haakjes 452 00:22:28,870 --> 00:22:33,280 vier, want dat zal zijn een out of bounds fout in dit geval. 453 00:22:33,280 --> 00:22:36,190 Als ik wil eigenlijk verandering de grootte van deze matrix, 454 00:22:36,190 --> 00:22:41,140 Ik moet de stip append methode gebruiken om iets toe te voegen aan het einde van het. 455 00:22:41,140 --> 00:22:46,900 Ik kan echter verandering individuele indices. 456 00:22:46,900 --> 00:22:48,920 >> Zo kon ik kwaliteiten gebruiken en dan vierkante haakjes 457 00:22:48,920 --> 00:22:52,480 nul tot deze eerste index manipuleren en enzovoorts, zoals je normaal zou verwachten. 458 00:22:52,480 --> 00:22:56,530 En ik kan het zelfde om daadwerkelijk te doen ontvangt de gegevens van dat ook. 459 00:22:56,530 --> 00:23:00,420 Nu is er ook een soort van een fancy-methode om dit te doen, kwaliteiten plus gelijken 460 00:23:00,420 --> 00:23:02,525 en dan nog een index, die append-- 461 00:23:02,525 --> 00:23:04,400 of niet een andere index-- maar een andere lijst die 462 00:23:04,400 --> 00:23:07,340 zal die lijst toe te voegen aan de achterkant van rangen. 463 00:23:07,340 --> 00:23:09,780 En de kwaliteiten zal bevat dan dat alles. 464 00:23:09,780 --> 00:23:13,850 Maar dat is een soort van een extra ding dat ik ben gewoon te laten zien voor de lol. 465 00:23:13,850 --> 00:23:14,910 >> Nu is er een lus. 466 00:23:14,910 --> 00:23:18,970 Dit is het begin waar dingen beginnen om een ​​beetje te veranderen. 467 00:23:18,970 --> 00:23:22,920 Merk op hoe deze lus is anders dan voor loops in C. 468 00:23:22,920 --> 00:23:26,470 Nu zal ik er rekening mee dat voor lussen in Swift kan 469 00:23:26,470 --> 00:23:30,650 worden gemaakt om te kijken als naar lussen in C, maar er is veel nuttiger constructies 470 00:23:30,650 --> 00:23:37,840 die in wezen overbodig te hebben voor var i gelijk is aan 0 puntkomma i 471 00:23:37,840 --> 00:23:40,340 minder dan uiteenzetten, zo voort en zo verder, toch? 472 00:23:40,340 --> 00:23:42,940 En deze constructie is slechts een van hen. 473 00:23:42,940 --> 00:23:49,030 >> Voor de index, index is nieuw variabele, in casu het bereik. 474 00:23:49,030 --> 00:23:52,730 En wat ik zeg is dat er een bereik van 0 helemaal tot aan 475 00:23:52,730 --> 00:23:55,870 maar niet met inbegrip van grades.count. 476 00:23:55,870 --> 00:23:58,470 Dus dit punt minder dot dan teken vertegenwoordigt 477 00:23:58,470 --> 00:24:05,040 een bereik van waarden vanaf nul helemaal tot aan grades.count minus 1. 478 00:24:05,040 --> 00:24:07,070 Er is een aparte operator die er bestaat, 479 00:24:07,070 --> 00:24:13,320 dat is dot dot dot, wat zou betekenen dat ik wil dat het bereik van nul 480 00:24:13,320 --> 00:24:16,310 in klassen tellen inclusive. 481 00:24:16,310 --> 00:24:19,130 >> Maar in dit geval, omdat deze arrays zijn nul-index, die we natuurlijk 482 00:24:19,130 --> 00:24:23,290 willen niet naar de maximum aantal kwaliteiten. 483 00:24:23,290 --> 00:24:26,390 Ik kan samenvatten van de kwaliteiten, zoals je misschien verwachten, en output allemaal van dit spul. 484 00:24:26,390 --> 00:24:29,620 OK, bewegen op. 485 00:24:29,620 --> 00:24:32,270 Laten we nu praten over de functies. 486 00:24:32,270 --> 00:24:35,465 Teneinde een functie te definiëren u de funk trefwoord te gebruiken. 487 00:24:35,465 --> 00:24:38,090 En nogmaals, in Swift moet je heel voorzichtig zijn met het typen. 488 00:24:38,090 --> 00:24:41,530 Die u verstrekt aan deze parameters mee door het definiëren, bijvoorbeeld, 489 00:24:41,530 --> 00:24:45,440 de naam van de parameter en Vervolgens Colin, het type gegevens 490 00:24:45,440 --> 00:24:47,690 dat je verwacht dat parameter te accepteren. 491 00:24:47,690 --> 00:24:50,700 >> Dus in dit geval hebben we een functie genaamd afdruk leerjaar tellen. 492 00:24:50,700 --> 00:24:54,630 Het accepteert een variabele genaamd cijferlijst, of liever een parameter genaamd cijferlijst. 493 00:24:54,630 --> 00:24:59,267 En wij verwachten dat cijferlijst een array van gehele getallen. 494 00:24:59,267 --> 00:25:01,350 Als dat cijferlijst leeg is, zullen we een ding af te drukken. 495 00:25:01,350 --> 00:25:06,090 Anders zullen we het aantal af te drukken cijferlijst dat dit eigenlijk. 496 00:25:06,090 --> 00:25:09,470 >> Als we nu willen terugkeren bepaalde waarde, dan de manier 497 00:25:09,470 --> 00:25:14,595 we passen deze definitie om daadwerkelijk gebruik maken van deze pijl trefwoord, 498 00:25:14,595 --> 00:25:16,870 of om deze pijl betekenaar gebruiken. 499 00:25:16,870 --> 00:25:19,440 We dus hier gaan om te definiëren een functie genaamd gemiddeld. 500 00:25:19,440 --> 00:25:21,940 We gaan een lijst van nummers te accepteren. 501 00:25:21,940 --> 00:25:25,430 En we gaan naar een terugkeer dubbel, die hopelijk 502 00:25:25,430 --> 00:25:31,270 als gemiddelde van deze array. 503 00:25:31,270 --> 00:25:34,570 En om dat te doen, teneinde om daadwerkelijk te berekenen dit gemiddelde, 504 00:25:34,570 --> 00:25:38,651 zullen we een som te nemen en wij zullen van Natuurlijk vatten alle objecten 505 00:25:38,651 --> 00:25:39,400 binnen deze array. 506 00:25:39,400 --> 00:25:41,480 >> Merk op dat er een nieuwe stijl van de for-lus hier. 507 00:25:41,480 --> 00:25:45,450 We hebben niet expliciet over te zijn itereren over elk afzonderlijk element, 508 00:25:45,450 --> 00:25:48,280 maar we kunnen in plaats daarvan zeggen voor rang en cijferlijst, betekenis 509 00:25:48,280 --> 00:25:50,930 dat voor elk item dat wij hebben in deze, 510 00:25:50,930 --> 00:25:53,482 bepalen dat artikel in deze variabele genaamd leerjaar. 511 00:25:53,482 --> 00:25:54,940 En ik wil er iets mee doen. 512 00:25:54,940 --> 00:26:00,350 Dus ik ga al deze gegevens samen te vatten en eigenlijk terug de dubbele divisie. 513 00:26:00,350 --> 00:26:04,436 >> Merk nu weer hier is er de concept van de integer deling in Swift. 514 00:26:04,436 --> 00:26:06,810 Als u wilt divisie verdubbelen want je wilt decimalen, 515 00:26:06,810 --> 00:26:09,460 dan moet je expliciet te zijn, niet alleen over de ene kant, 516 00:26:09,460 --> 00:26:14,030 want het gaat niet om u te laten gegevens aan beide zijden van deze dwingen, 517 00:26:14,030 --> 00:26:17,030 je moet eigenlijk natuurlijk beide zijden in dubbelspel 518 00:26:17,030 --> 00:26:19,440 zodat je erg expliciet over het ervoor zorgen 519 00:26:19,440 --> 00:26:23,370 dat je doet dubbele divisie. 520 00:26:23,370 --> 00:26:26,150 >> Laten we verder gaan. 521 00:26:26,150 --> 00:26:31,150 Dus als ik eigenlijk willen accept-- dus in dit voorbeeld, 522 00:26:31,150 --> 00:26:34,260 dit is nog steeds een opdracht lijn-gebaseerde applicatie. 523 00:26:34,260 --> 00:26:37,920 En we beginnen om een ​​aantal van zien de beperkingen van de jonge taal 524 00:26:37,920 --> 00:26:41,850 dat hoewel we kunnen toegang krijgen tot de argumenten met behulp 525 00:26:41,850 --> 00:26:44,940 dit process.arguments, het is nog niet noodzakelijkerwijs de schoonste 526 00:26:44,940 --> 00:26:46,200 ding dat we ooit hebben gezien. 527 00:26:46,200 --> 00:26:49,142 Maar in principe Ik moedig u naar soort van kijken naar deze code 528 00:26:49,142 --> 00:26:51,100 en proberen te achterhalen wat er precies aan de hand is. 529 00:26:51,100 --> 00:26:55,030 >> Wezen wat er gebeurt is dat we nemen een lijst van argumenten 530 00:26:55,030 --> 00:26:57,610 en waren ze te dwingen tot gehele getallen, en dan zijn we 531 00:26:57,610 --> 00:27:03,620 gaan gebruiken als een manier om afdrukken uit het gemiddelde van al onze kwaliteiten. 532 00:27:03,620 --> 00:27:06,150 533 00:27:06,150 --> 00:27:07,350 Verdergaan. 534 00:27:07,350 --> 00:27:11,190 Nu is er een ander type data-- andere gegevens te typen in plaats van arrays 535 00:27:11,190 --> 00:27:14,940 genaamd woordenboeken, die zeer zijn vergelijkbaar met tabellen of hash kaarten hash 536 00:27:14,940 --> 00:27:18,560 en lijken ook Associatieve arrays PHP. 537 00:27:18,560 --> 00:27:20,770 Zo hebben zij de notie van sleutels en waarden. 538 00:27:20,770 --> 00:27:23,780 >> En ze zijn ook met gedefinieerde dit plein haakjesnotering, 539 00:27:23,780 --> 00:27:26,750 maar het verschil dat woordenboeken 540 00:27:26,750 --> 00:27:29,370 binnenzijde van de rechte haak een dubbele punt. 541 00:27:29,370 --> 00:27:33,850 En het colon scheidt de gegevens typt dat is de sleutel en de waarde. 542 00:27:33,850 --> 00:27:38,540 Dus in dit geval, ik ga maken een woordenboek om een ​​aantal kwaliteiten te accepteren. 543 00:27:38,540 --> 00:27:44,200 En het gaat worden van het type string: int, 544 00:27:44,200 --> 00:27:46,940 hetgeen betekent dat alle sleutels zullen strings, 545 00:27:46,940 --> 00:27:53,080 en alle waarden van de sleutels zullen integers. 546 00:27:53,080 --> 00:27:55,780 >> Wat dit betekent is dat ik kan referentie dan de specifieke data 547 00:27:55,780 --> 00:28:00,490 dat wil ik met behulp van deze toetsen in plaats dan met behulp van numerieke indices zoals ik 548 00:28:00,490 --> 00:28:04,350 zou een standaard array. 549 00:28:04,350 --> 00:28:06,470 Laten we nu zien, is er een belangrijk ding 550 00:28:06,470 --> 00:28:10,790 dat wil ik ook vermelden over dit specifieke volgorde van de code. 551 00:28:10,790 --> 00:28:12,910 En dat is dat er Andere soorten gegevens, 552 00:28:12,910 --> 00:28:15,580 of liever, er is dit idee van gegevens die 553 00:28:15,580 --> 00:28:18,340 vervat in Swift genoemd optionals. 554 00:28:18,340 --> 00:28:21,270 >> En wat opties die betekent is dat zij erkent het feit 555 00:28:21,270 --> 00:28:27,500 dat je soms gaat niet krijgen de gegevens die je eigenlijk verwachten. 556 00:28:27,500 --> 00:28:31,400 En dus wat ik bedoel met dat is-- laten neem een ​​kijkje op deze opeenvolging van code 557 00:28:31,400 --> 00:28:38,910 die itereert over alle van de argumenten die werden doorgegeven aan deze code 558 00:28:38,910 --> 00:28:43,460 en probeert om te zetten, probeert te splitsen in een aantal snaren, 559 00:28:43,460 --> 00:28:47,310 omdat aanvaardt een bepaald type argument. 560 00:28:47,310 --> 00:28:51,530 En dan is het gaan proberen te dwingen de snaren die getallen 561 00:28:51,530 --> 00:28:55,460 in gehele getallen die zijn kwaliteiten, dat ik dan kan berekenen. 562 00:28:55,460 --> 00:28:58,230 >> Dus eigenlijk ga ik Gebruik deze split functie die 563 00:28:58,230 --> 00:29:00,080 bestaat binnen de Swift standaard bibliotheek. 564 00:29:00,080 --> 00:29:03,720 Ik ga om te gaan in het de snaar die ik wil splitsen. 565 00:29:03,720 --> 00:29:06,980 En het gebruik van deze soort van funky syntax, die 566 00:29:06,980 --> 00:29:09,670 Ik weet niet of we zullen krijgen, maar misschien zijn we 567 00:29:09,670 --> 00:29:14,320 daadwerkelijk zal specificeren de precieze karakter dat we willen splitsen op. 568 00:29:14,320 --> 00:29:16,030 Dus wat heeft dit er eigenlijk uit? 569 00:29:16,030 --> 00:29:18,740 Laten we eens een kijkje nemen op daadwerkelijk uitvoeren van deze code. 570 00:29:18,740 --> 00:29:22,000 >> Dus bijvoorbeeld, laten we zeggen dat ik heb een quiz en ik kreeg 50 op dat. 571 00:29:22,000 --> 00:29:23,960 En ik heb een PSETs en Ik kreeg een honderdtal op dat. 572 00:29:23,960 --> 00:29:29,180 En ik got-- er is een andere quiz en ik kreeg een 40 op dat. 573 00:29:29,180 --> 00:29:33,520 Ik druk op Enter, en uiteindelijk wat zal gebeuren is dat wat het doet 574 00:29:33,520 --> 00:29:37,730 is het nemen van deze parameters, splitsen de snaren bij deze dubbele punten, 575 00:29:37,730 --> 00:29:41,390 het besef dat er twee elementen in elk, 576 00:29:41,390 --> 00:29:43,700 en het is in wezen bijhouden van elk. 577 00:29:43,700 --> 00:29:49,226 >> Dus ik heb in mijn woordenboek een quiz, wiens waarde wordt vertegenwoordigd door het getal 50, 578 00:29:49,226 --> 00:29:54,290 Ik heb een PSET die waarde van 100 heeft, en een quiz een die een waarde van 40 heeft. 579 00:29:54,290 --> 00:29:57,400 Vervolgens later in de code die ik eigenlijk gemiddeld al deze waarden 580 00:29:57,400 --> 00:30:01,160 en een lijst van alle van de sleutels van dat bepaalde woordenboek. 581 00:30:01,160 --> 00:30:03,217 Maar dit is belangrijk zodat u kunt zien 582 00:30:03,217 --> 00:30:06,050 wat er gebeurt, is dat wat we willen doen is om deze string te nemen 583 00:30:06,050 --> 00:30:11,450 en splitsen het op dit karakter, die we weer kunnen doen met deze split 584 00:30:11,450 --> 00:30:15,690 functie met behulp van dit soort interessante syntax die hier bestaat. 585 00:30:15,690 --> 00:30:17,880 >> Net voor nu aannemen dat dat is OK. 586 00:30:17,880 --> 00:30:19,980 We zullen meer op dit kijken in slechts een tijdje. 587 00:30:19,980 --> 00:30:23,230 Maar nu is er een interessante aspect dat we eigenlijk 588 00:30:23,230 --> 00:30:27,250 willen proberen dit om te zetten string in een integer. 589 00:30:27,250 --> 00:30:29,720 Maar in andere talen wat er kan gebeuren is 590 00:30:29,720 --> 00:30:33,440 dat we zouden waarschijnlijk proberen om het te doen en ofwel terug te krijgen 591 00:30:33,440 --> 00:30:36,185 een soort van sentinel waarde als negatief 592 00:30:36,185 --> 00:30:39,420 of misschien een nul of iets dergelijks. 593 00:30:39,420 --> 00:30:41,070 Of misschien zou het gewoon een fout heeft veroorzaakt. 594 00:30:41,070 --> 00:30:42,820 En we zouden moeten vang dan die fout 595 00:30:42,820 --> 00:30:44,820 en dan proberen te doen iets gebaseerd op het feit 596 00:30:44,820 --> 00:30:48,280 dat deze omzetting een integer mislukt. 597 00:30:48,280 --> 00:30:50,460 Dat is waar dit idee van de opties die binnen komt. 598 00:30:50,460 --> 00:30:56,120 Je kunt eigenlijk het creëren van een soort data dat is een int vraagteken, bijvoorbeeld. 599 00:30:56,120 --> 00:30:59,140 600 00:30:59,140 --> 00:31:01,910 Dat betekent dat deze integer is in feite optioneel. 601 00:31:01,910 --> 00:31:05,980 En wat zal gebeuren is dat het kan bevat een geheel getal, of het kan niet. 602 00:31:05,980 --> 00:31:10,650 Het kan in feite zijn dit andere idee, helemaal genaamd nill. 603 00:31:10,650 --> 00:31:14,900 Waarin dat betekent dat er geen enkele waarde in deze. 604 00:31:14,900 --> 00:31:16,810 Het is zelfs niet nul, er is gewoon geen waarde. 605 00:31:16,810 --> 00:31:18,790 Er is absoluut geen waarde vertegenwoordigd. 606 00:31:18,790 --> 00:31:21,650 >> En dat is wat deze lijn 71 aan het doen is. 607 00:31:21,650 --> 00:31:25,990 Is dat het is te zeggen dat ik willen proberen om een ​​waarde in te stellen, 608 00:31:25,990 --> 00:31:31,790 een variabele genaamd rang, gelijk aan de omzetting van deze string in een int. 609 00:31:31,790 --> 00:31:34,010 Dus ik heb deze string genomen, deze eerste onderdelen, 610 00:31:34,010 --> 00:31:37,680 of liever de tweede componenten, omdat 611 00:31:37,680 --> 00:31:40,770 nul geïndexeerd, dit string die ik heb te splitsen. 612 00:31:40,770 --> 00:31:42,930 En ik wil omzetten die naar een integer. 613 00:31:42,930 --> 00:31:46,730 Maar het kan niet altijd doorgaan normaal, want stel 614 00:31:46,730 --> 00:31:50,710 wat zou er gebeuren als, in plaats van het type een nummer, typ ik natuurlijk als asdf. 615 00:31:50,710 --> 00:31:51,534 >> Het zal mislukken. 616 00:31:51,534 --> 00:31:54,200 Het is niet echt gaat worden kunnen zetten die een integer 617 00:31:54,200 --> 00:31:55,510 zoals ik zou verwachten. 618 00:31:55,510 --> 00:31:58,660 Dus in plaats van de aftrap een soort van een fout, 619 00:31:58,660 --> 00:32:01,210 hebben we dit idee van een optioneel. 620 00:32:01,210 --> 00:32:04,240 En dat betekent dat het gebruik van Dit vraagteken wat ik kan zeggen, 621 00:32:04,240 --> 00:32:09,100 OK, is het mogelijk dat ik kan nemen dit, omgebouwd tot een int, 622 00:32:09,100 --> 00:32:12,630 en zet het in een variabele, die ook een int. 623 00:32:12,630 --> 00:32:15,420 Zo ja, dan betekent dat dit gelukt is 624 00:32:15,420 --> 00:32:18,720 en deze eerste portie het blok kan blijven. 625 00:32:18,720 --> 00:32:21,040 >> Anders is het mislukt. 626 00:32:21,040 --> 00:32:25,840 Er is geen waarde in grade-- of plaats is er geen waarde in de bestaande, 627 00:32:25,840 --> 00:32:30,220 en ik heb eigenlijk proberen om behandelen deze fout staat. 628 00:32:30,220 --> 00:32:33,340 Je gaat om dit te zien vraagteken hele tijd 629 00:32:33,340 --> 00:32:35,990 in Swift en voorbeeldcode voor Swift. 630 00:32:35,990 --> 00:32:40,980 En in feite de nill operator, dit soort van vraagteken, de opties die deel, 631 00:32:40,980 --> 00:32:45,057 zal waarschijnlijk een van de moeilijkere dingen 632 00:32:45,057 --> 00:32:47,640 naar soort wikkel je hoofd rond als je eigenlijk werken. 633 00:32:47,640 --> 00:32:48,490 >> Het is misschien zinvol nu maken. 634 00:32:48,490 --> 00:32:50,760 En in feite, toen ik het schrijven van voorbeeldcode voor deze, 635 00:32:50,760 --> 00:32:52,780 zeker begreep ik wat er gaande was, 636 00:32:52,780 --> 00:32:55,570 maar nog steeds gevangen me door verrassing om zo vaak 637 00:32:55,570 --> 00:32:58,370 als ik zou vinden dat sommige gegevens was eigenlijk 638 00:32:58,370 --> 00:33:04,024 een nul-versie, een optionele versie van de gegevens die ik verwachtte. 639 00:33:04,024 --> 00:33:06,190 Dus gewoon beseffen dat als je hebben een optionele versie 640 00:33:06,190 --> 00:33:09,360 je moet uitpakken dat gegevens uit dit vak. 641 00:33:09,360 --> 00:33:15,870 >> Dus het is een beetje zoals Ik-- stel je voor als je een doos en het iets bevat. 642 00:33:15,870 --> 00:33:18,490 En wat je moet doen is om de vraag te stellen, 643 00:33:18,490 --> 00:33:22,800 is het mogelijk dat deze box eigenlijk bevat de gegevens die ik zoek? 644 00:33:22,800 --> 00:33:28,180 Als dat zo is, trek dan de gegevens uit en zet het in deze variabele bestaande. 645 00:33:28,180 --> 00:33:32,080 Zo niet, dan moet ik gewoon geen rekening met de inhoud van deze doos 646 00:33:32,080 --> 00:33:34,310 helemaal omdat bevat letterlijk niets. 647 00:33:34,310 --> 00:33:36,880 648 00:33:36,880 --> 00:33:40,400 >> Heeft u vragen over dit? 649 00:33:40,400 --> 00:33:44,430 OK, laten we af te stappen van deze soort command line gebaseerde ding 650 00:33:44,430 --> 00:33:47,610 en gaan kijken naar sommige van de techniek 651 00:33:47,610 --> 00:33:53,060 dat Xcode biedt aan ons in de vorm van speeltuinen. 652 00:33:53,060 --> 00:33:56,669 Dus er is een heleboel mogelijkheid hier met Swift. 653 00:33:56,669 --> 00:33:59,210 En als je het openstellen van Xcode en het vraagt ​​wat u wilt doen, 654 00:33:59,210 --> 00:34:01,340 kunt u het openstellen van de speelplaats en gewoon spelen rond 655 00:34:01,340 --> 00:34:06,200 met veel verschillende structuren en aspecten van de taal 656 00:34:06,200 --> 00:34:11,800 voordat je zelfs beginnen te raken de iOS SDK of de Mac SDK. 657 00:34:11,800 --> 00:34:15,670 >> Dus dit geval, laten we zeggen dat ik have-- Ik heb een vrij gekunsteld voorbeeld 658 00:34:15,670 --> 00:34:18,460 hier, maar geduld met mij als we een soort van werken door middel van dit voorbeeld. 659 00:34:18,460 --> 00:34:22,639 Laten we zeggen dat we moeten veel doen exponenten met een vaste waarde, 660 00:34:22,639 --> 00:34:26,397 als we weten dat we gaan moeten doen veel vierkante bevoegdheden, bijvoorbeeld. 661 00:34:26,397 --> 00:34:28,980 Dus we gaan naar een bepaalde waarde te nemen x, gaan we naar het plein, 662 00:34:28,980 --> 00:34:30,540 we gaan om een ​​bepaalde waarde te nemen y en we gaan het plein. 663 00:34:30,540 --> 00:34:31,780 Enzovoort, enzovoort. 664 00:34:31,780 --> 00:34:35,549 >> Nu zouden we eigenlijk gewoon een macht van 2-functie voor deze, toch? 665 00:34:35,549 --> 00:34:37,090 Dus zouden we een macht van 2-functie te creëren. 666 00:34:37,090 --> 00:34:38,600 We zullen instemmen met een dubbele. 667 00:34:38,600 --> 00:34:41,489 We zullen output-- of we terug van een dubbele type. 668 00:34:41,489 --> 00:34:46,159 We zullen dit resultaat te nemen en dan twee keer 669 00:34:46,159 --> 00:34:52,040 wat we eigenlijk de resultaten, neem die werd geïnitialiseerd op de waarde één, 670 00:34:52,040 --> 00:34:53,090 en vermenigvuldigen met x. 671 00:34:53,090 --> 00:34:56,540 Dus in wezen hebben we x keer x hier. 672 00:34:56,540 --> 00:35:01,860 >> En dus dan kan ik dan, als we zouden kunnen verwachten, neem dit, lopen macht van 2, 673 00:35:01,860 --> 00:35:03,680 bieden om het aantal gegevens, ik hou van 2,0. 674 00:35:03,680 --> 00:35:05,756 En we krijgen om de resultaten hier 4.0 zien. 675 00:35:05,756 --> 00:35:09,200 Run kracht van 2 op 3,2 en we krijgen op ons resultaat, 10.24 te zien. 676 00:35:09,200 --> 00:35:10,840 So far so good, toch? 677 00:35:10,840 --> 00:35:12,070 Nu we denken, nou ja, OK. 678 00:35:12,070 --> 00:35:15,530 Nu heb ik eigenlijk nodig om doe heel veel van de bevoegdheden van de 3. 679 00:35:15,530 --> 00:35:19,180 Dus zal ik kopieer en plak dit allemaal code, verander de naam van de functie van 680 00:35:19,180 --> 00:35:24,440 vermogen van 2 tot de macht van 3, en alles Dezelfde behalve deze waarde 681 00:35:24,440 --> 00:35:26,740 Hier, dit bereik, 1 ... 2. 682 00:35:26,740 --> 00:35:29,590 >> Dus in plaats van het herhalen van deze lus twee keer, 683 00:35:29,590 --> 00:35:31,880 Ik wil deze loop drie keer te herhalen. 684 00:35:31,880 --> 00:35:36,330 Dus ik verander gewoon dat de waarde van 1 tot 3-- of liever 2-3. 685 00:35:36,330 --> 00:35:39,230 Dus nogmaals, dezelfde code, dat is de enige verandering. 686 00:35:39,230 --> 00:35:40,080 Nu werkt dit ook. 687 00:35:40,080 --> 00:35:43,860 Power of 3 indien aanwezig waarde 2. 688 00:35:43,860 --> 00:35:44,420 We krijgen 8. 689 00:35:44,420 --> 00:35:45,370 Dus 2 in blokjes. 690 00:35:45,370 --> 00:35:48,060 En 3.2 blokjes is 32,768. 691 00:35:48,060 --> 00:35:50,597 En tot nu toe zo goed, toch? 692 00:35:50,597 --> 00:35:52,930 Maar hopelijk is dit een beetje beetje een rode vlag voor u 693 00:35:52,930 --> 00:35:55,530 in dat we nu hebben sommige duplicatie van code 694 00:35:55,530 --> 00:35:58,800 behalve enkele zeer kleine van de ene naar de volgende. 695 00:35:58,800 --> 00:36:02,170 Dus is er een manier we zouden kunnen vereenvoudigen 696 00:36:02,170 --> 00:36:06,080 dit probleem, waar we kunnen eigenlijk, tijdens runtime, erachter te komen wat, 697 00:36:06,080 --> 00:36:11,320 te verstrekken aan ons enkele functie die heeft juist de kracht van dat we willen. 698 00:36:11,320 --> 00:36:13,960 >> En er is dit idee van sluitingen, die is echt, echt 699 00:36:13,960 --> 00:36:18,180 belangrijk in de context van Swift, en in vele andere talen. 700 00:36:18,180 --> 00:36:21,580 Maar waarschijnlijk zul je zien het vroeger meer in Swift 701 00:36:21,580 --> 00:36:23,650 want het is ingebed binnen de taal 702 00:36:23,650 --> 00:36:28,280 dan wel in andere Ook moderne talen. 703 00:36:28,280 --> 00:36:31,140 Dus het idee van een sluiting Hierdoor, is dat we 704 00:36:31,140 --> 00:36:35,430 een functie die bedoeld is om zijn een generieke functie, een generieke macht 705 00:36:35,430 --> 00:36:36,860 van de functie. 706 00:36:36,860 --> 00:36:41,010 >> En deze functie zal accepteren Deze exponent dat we eigenlijk 707 00:36:41,010 --> 00:36:42,990 wilt maken. 708 00:36:42,990 --> 00:36:46,550 Dus bijvoorbeeld, de eerste Zo wilden we een macht van 2. 709 00:36:46,550 --> 00:36:50,050 Dus zouden we de macht van bieden en daarna tussen haakjes 2. 710 00:36:50,050 --> 00:36:52,490 En let nu op wat dit ook daadwerkelijk terugkeert. 711 00:36:52,490 --> 00:36:57,680 Dit neemt een ingang van een primer genaamd y dat een geheel getal, 712 00:36:57,680 --> 00:37:03,090 en het terugkeert dit gek op zoek ding in parentheses-- haakjes 713 00:37:03,090 --> 00:37:06,230 dubbele pijl en dubbelklik. 714 00:37:06,230 --> 00:37:10,270 >> Wat dit betekent is dat ik ben naar een functie weer. 715 00:37:10,270 --> 00:37:13,510 Ik ben niet terug een ander type van gegevens, ik ben 716 00:37:13,510 --> 00:37:16,350 in feite een functie oplevert dat heeft deze parameter, dat 717 00:37:16,350 --> 00:37:22,680 accepteert een dubbele als input en voert een dubbele als een terugkeer waarde. 718 00:37:22,680 --> 00:37:29,750 En als gevolg daarvan, want nu heb ik geroepen macht van, passeren in een bepaalde waarde voor y, 719 00:37:29,750 --> 00:37:32,280 en ik ben deze andere creëren function-- bericht dat er 720 00:37:32,280 --> 00:37:35,980 een andere functie dat wordt gecreëerd binnenkant van dit-- wat ik doe 721 00:37:35,980 --> 00:37:37,830 wordt kan ik dan veranderen die waarde, dat men 722 00:37:37,830 --> 00:37:41,010 waarde dat ik veranderd was 2-3, I maken het nu y. 723 00:37:41,010 --> 00:37:42,500 >> En dit aanhoudt. 724 00:37:42,500 --> 00:37:48,530 Dus elke keer dat ik bel de macht van, in wezen wat er gebeurt 725 00:37:48,530 --> 00:37:51,030 is dat ik terug een functie. 726 00:37:51,030 --> 00:37:54,310 Merk op dat ik hier heb gedefinieerd een nieuwe variabele genaamd plein. 727 00:37:54,310 --> 00:37:59,340 Ik heb ingesteld dat gelijk is aan de macht, mits deze waarde 2 tot de macht van. 728 00:37:59,340 --> 00:38:02,030 En wat dit terug is de functie. 729 00:38:02,030 --> 00:38:05,970 Dus plein, de variabele plein, is nu van het type functie 730 00:38:05,970 --> 00:38:11,390 dat heeft dit-- oops, bladert u omhoog een weinig bit-- dat deze handtekening heeft, 731 00:38:11,390 --> 00:38:15,560 instemmen met een tweepersoonsbed en de output van een dubbele. 732 00:38:15,560 --> 00:38:17,330 >> Dus nu wat ik heb gedaan is ik heb in wezen 733 00:38:17,330 --> 00:38:22,890 creëerde een functie genaamd plein dat aanvaardt geen enkele waarde en zal het plein. 734 00:38:22,890 --> 00:38:24,960 We kunnen zien wat hier beneden gebeurt. 735 00:38:24,960 --> 00:38:29,960 Vierkant 3 bijvoorbeeld, betekent dat ik ga om de waarde 3 te nemen en in het kwadraat het. 736 00:38:29,960 --> 00:38:32,010 Dus hoe precies werkt dit? 737 00:38:32,010 --> 00:38:37,800 Toen ik pas kracht van 2-- toen ik passeren 2 in deze macht van de functie, 738 00:38:37,800 --> 00:38:44,430 deze variabele y bevolkt met die waarde 2. 739 00:38:44,430 --> 00:38:46,340 En dat is een soort van in het geheugen bewaard. 740 00:38:46,340 --> 00:38:49,430 Dat is een beetje zoals gehouden in staat ergens in de computer, 741 00:38:49,430 --> 00:38:51,980 we niet echt schelen hoe of wanneer op dit punt. 742 00:38:51,980 --> 00:38:54,692 >> Maar ik deze functie terug riep machtsverheffen. 743 00:38:54,692 --> 00:38:57,400 En nogmaals, het maakt eigenlijk niet uit Wat deze functie wordt aangeroepen, 744 00:38:57,400 --> 00:39:01,730 kunnen we echt noemen het iets, dat accepteert een tweepersoonsbed en geeft een dubbel, 745 00:39:01,730 --> 00:39:05,640 maar gebruikt deze waarde y erin. 746 00:39:05,640 --> 00:39:09,290 Dus ook al is deze functie, Dit exponentiater functie dat is 747 00:39:09,290 --> 00:39:13,600 is terug terug naar mijn variabele die ik noemde plein, 748 00:39:13,600 --> 00:39:17,980 het is opgenomen in het deze notie van wat y was. 749 00:39:17,980 --> 00:39:19,070 En het herinnert zich dat. 750 00:39:19,070 --> 00:39:24,810 >> Dus elke keer als ik bel die functie dat heet nu vierkant, het maakt gebruik van dat. 751 00:39:24,810 --> 00:39:27,990 Maar dit betekent ook dat ik kan maakt u een andere variabele met behulp van 752 00:39:27,990 --> 00:39:29,120 een andere kracht van. 753 00:39:29,120 --> 00:39:33,240 Dus ik kan een kubus variabel te maken, voor Zo bieden om het vermogen van 3. 754 00:39:33,240 --> 00:39:37,230 Nu kubus zal eigenlijk wel wat waarde en de kubus die en terug te sturen. 755 00:39:37,230 --> 00:39:39,570 Dus we kunnen zien dat ik krijg een waarde 8 van dat. 756 00:39:39,570 --> 00:39:42,720 >> Maar die waarde y niet veranderd omdat ze 757 00:39:42,720 --> 00:39:44,980 gehouden soort onafhankelijke variabelen. 758 00:39:44,980 --> 00:39:47,480 Ze zijn soort gehouden in onafhankelijke ruimtes in het geheugen. 759 00:39:47,480 --> 00:39:51,290 Dus kubus zal altijd x tot de macht 3. 760 00:39:51,290 --> 00:39:55,380 En plein zal altijd x tot de macht 2, waarbij 761 00:39:55,380 --> 00:39:58,470 betekent dat plein zal altijd vierkant nummers, zoals ik verwacht. 762 00:39:58,470 --> 00:40:01,794 En kubus zal altijd in blokjes gesneden getallen, zoals ik verwacht. 763 00:40:01,794 --> 00:40:04,960 Dit betekent ook dat je soms kunt krijgen een soort van funky zoek syntaxis 764 00:40:04,960 --> 00:40:09,030 waar heb je de macht van de zeer onderkant van het scherm hier, kracht 5. 765 00:40:09,030 --> 00:40:11,410 En je overgaan in het resultaat. 766 00:40:11,410 --> 00:40:14,670 Noem je dat de functie dat is is terug met het nummer 4. 767 00:40:14,670 --> 00:40:17,440 En ja, wat in wezen dit 4 tot de vijfde macht, 768 00:40:17,440 --> 00:40:20,830 we kunnen de resultaten daar te zien. 769 00:40:20,830 --> 00:40:23,690 Met mij tot nu toe? 770 00:40:23,690 --> 00:40:26,620 >> Dus dit idee wordt een sluiting, want wat we eigenlijk aan het doen zijn 771 00:40:26,620 --> 00:40:30,610 is dat we het inkapselen sommige gegevens into-- soort 772 00:40:30,610 --> 00:40:33,050 omsluiten deze gegevens in een functie en we zijn 773 00:40:33,050 --> 00:40:36,240 kunnen deze functie opnieuw. 774 00:40:36,240 --> 00:40:41,480 Nu is deze syntax al kan eigenlijk vereenvoudigd een grote hoeveelheid. 775 00:40:41,480 --> 00:40:45,005 En er is veel mogelijk in Swift voor deze vereenvoudiging. 776 00:40:45,005 --> 00:40:47,780 En dat is wat voor soort het daaropvolgende degenen eigenlijk naar te kijken. 777 00:40:47,780 --> 00:40:51,400 Dus in 7b we bijvoorbeeld neem deze exact dezelfde code. 778 00:40:51,400 --> 00:40:54,360 >> Maar nu plaats een functie in de praktijk te definiëren 779 00:40:54,360 --> 00:40:57,910 binnenkant van deze kracht van functioneren en geef het een naam, 780 00:40:57,910 --> 00:41:00,150 en dan terug de naam van die functie, hetgeen 781 00:41:00,150 --> 00:41:02,357 vervolgens wordt gebruikt als onderdeel van deze sluiting, in plaats daarvan zijn we 782 00:41:02,357 --> 00:41:03,440 gewoon gaan om het te vereenvoudigen. 783 00:41:03,440 --> 00:41:06,580 We hoeven niet deze functie worden benoemd. 784 00:41:06,580 --> 00:41:09,760 Dit is dus het begrip anonieme functie waar we kunnen dan 785 00:41:09,760 --> 00:41:15,180 accepteren als invoer haakjes hier de variabele x die is van het type double. 786 00:41:15,180 --> 00:41:17,250 >> We gaan naar het type double terugkeren. 787 00:41:17,250 --> 00:41:19,830 En dan is het sleutelwoord, n, is het begin van deze functie. 788 00:41:19,830 --> 00:41:22,180 Zo merken dat dit alles is binnen accolades 789 00:41:22,180 --> 00:41:25,310 en we zijn het definiëren van een anoniem functioneren hier. 790 00:41:25,310 --> 00:41:29,910 Gewoon een eenvoudigere manier van vaststellen van de precieze hetzelfde. 791 00:41:29,910 --> 00:41:30,810 OK? 792 00:41:30,810 --> 00:41:36,740 Maar wacht even, Swift laat ons eigenlijk om verder te gaan en nog meer te vereenvoudigen, 793 00:41:36,740 --> 00:41:40,180 omdat we echt niet doen zorg dat deze parameter is 794 00:41:40,180 --> 00:41:41,700 noemde een bepaalde zaak. 795 00:41:41,700 --> 00:41:48,090 Het kan echt iets te noemen en kunnen we nog steeds gebruik maken van die eerste parameter. 796 00:41:48,090 --> 00:41:53,800 >> Dus in feite is er deze speciale soort gegevens in anonieme functies, 797 00:41:53,800 --> 00:41:57,710 er is deze bijzondere naam van variabelen in anonieme functies 798 00:41:57,710 --> 00:42:00,280 die beginnen met de dollarteken en vertegenwoordigen 799 00:42:00,280 --> 00:42:03,785 de parameter getallen nul geïndexeerd voor deze functie. 800 00:42:03,785 --> 00:42:05,410 Dus er is een paar dingen aan de hand. 801 00:42:05,410 --> 00:42:08,550 Hier ga ik om terug te keren, en dan een accolade die een functie, 802 00:42:08,550 --> 00:42:09,050 toch? 803 00:42:09,050 --> 00:42:13,920 >> Merk op dat ik niet hebt gedefinieerd de parameter types of de return type. 804 00:42:13,920 --> 00:42:16,460 Het kan zelfs worden afgeleid vanwege de handtekening 805 00:42:16,460 --> 00:42:18,360 van deze oorspronkelijke functie. 806 00:42:18,360 --> 00:42:20,500 Dus we kunnen elimineren dat als mogelijkheid. 807 00:42:20,500 --> 00:42:25,120 Maar ook kan ik dollarteken nul gebruiken om vertegenwoordigen deze eerste parameter dat is 808 00:42:25,120 --> 00:42:28,200 overgegaan in deze anonieme functie. 809 00:42:28,200 --> 00:42:31,630 Dus vereenvoudigen het nog meer. 810 00:42:31,630 --> 00:42:32,750 OK? 811 00:42:32,750 --> 00:42:33,820 Tot nu toe alles goed? 812 00:42:33,820 --> 00:42:36,980 >> Nu is dit Motortype- doe je onthoud dit dollarteken nul 813 00:42:36,980 --> 00:42:40,130 die we zagen in deze accolade dat zagen we gewoon een tijdje 814 00:42:40,130 --> 00:42:43,870 geleden in deze Swift zes voorbeeld? 815 00:42:43,870 --> 00:42:46,560 Het was hier. 816 00:42:46,560 --> 00:42:48,430 Merk op dat is precies wat we kijken naar, 817 00:42:48,430 --> 00:42:51,580 is dat wij overgegaan in deze split-functie 818 00:42:51,580 --> 00:42:55,140 een anonieme functie die controleert de eerste parameter 819 00:42:55,140 --> 00:42:57,830 om te zien of deze gelijk is aan de dubbele punt. 820 00:42:57,830 --> 00:42:59,830 En dat is precies wat er gebeurt, is dat alle 821 00:42:59,830 --> 00:43:02,320 we doing-- de terugkeer trefwoord wordt geïmpliceerd 822 00:43:02,320 --> 00:43:05,800 in deze case-- we terugkeren deze waarde waar we het vergelijken 823 00:43:05,800 --> 00:43:10,020 de eerste parameter tegen dit karakter dikke darm. 824 00:43:10,020 --> 00:43:11,730 En dus dat soort demystifies dit. 825 00:43:11,730 --> 00:43:17,210 En je gaat deze constructie zien veel in Swift syntax, dus doe houden dat 826 00:43:17,210 --> 00:43:19,400 in gedachten wanneer u bent het nemen van een kijkje op deze. 827 00:43:19,400 --> 00:43:21,970 Nu kunnen we uitstappen de rails een beetje 828 00:43:21,970 --> 00:43:25,460 en ga echt zin dat shows nog wat meer van kracht Swift. 829 00:43:25,460 --> 00:43:27,950 Je zou zelfs een aantal te zien van deze in de steekproef van codes. 830 00:43:27,950 --> 00:43:29,790 Dus dat is de reden waarom ik ga om dit te laten zien. 831 00:43:29,790 --> 00:43:37,260 >> Eigenlijk wat we kunnen doen is dat, ten eerste van alles, het was een soort van onnodig voor mij 832 00:43:37,260 --> 00:43:41,710 om al die macht van de uit te voeren code want als je importeert de Darwin 833 00:43:41,710 --> 00:43:46,490 bibliotheek, het eigenlijk een functie omvat riep pow dat dit voor je doet. 834 00:43:46,490 --> 00:43:50,570 Zodat we het kunnen vereenvoudigen nog meer en hebben onze macht up functie nu net 835 00:43:50,570 --> 00:43:54,890 zijn een prachtige one-liner waar we net terug deze anonieme functie die 836 00:43:54,890 --> 00:44:00,780 aanvaardt dollarteken 0 als zijn base en y als exponent. 837 00:44:00,780 --> 00:44:02,582 >> Maar we kunnen echt, echt zin als we 838 00:44:02,582 --> 00:44:04,790 beseffen dat Swift heeft een veel kracht onder de motorkap. 839 00:44:04,790 --> 00:44:07,010 Een groot deel van de exploitanten die we hebben te maken met, 840 00:44:07,010 --> 00:44:11,270 plustekens en verdeeldheid symbolen al deze dingen die je normaal 841 00:44:11,270 --> 00:44:15,620 werken met met datatypes in een programmeertaal, 842 00:44:15,620 --> 00:44:17,600 zijn eigenlijk uitbreidbaar in Swift. 843 00:44:17,600 --> 00:44:21,460 Dus wat dat betekent in dat wij kunnen onze eigen operatoren te definiëren. 844 00:44:21,460 --> 00:44:26,020 >> Dus nu ben ik moe van het typen in dit alles pow en vervolgens een haakjes en dan 845 00:44:26,020 --> 00:44:26,520 de basis. 846 00:44:26,520 --> 00:44:27,520 Ik wil niet om dat te doen. 847 00:44:27,520 --> 00:44:30,190 Ik eigenlijk wil een hebben operator die me in staat stelt om dat te doen. 848 00:44:30,190 --> 00:44:34,510 Dus ik kan Swift vertellen dat ik wil aan een operator, ster creëren 849 00:44:34,510 --> 00:44:39,472 star-- door de manier waarop ik kan de karaat niet gebruiken omdat de karaat is een operator die 850 00:44:39,472 --> 00:44:40,680 doet iets heel anders. 851 00:44:40,680 --> 00:44:42,720 Dus ik wil niet om te sorteren van botsen met die. 852 00:44:42,720 --> 00:44:45,750 En dus wat je ziet in een verscheidenheid van talen, waaronder Python, 853 00:44:45,750 --> 00:44:48,810 is als star star exploitant te exponenten vertegenwoordigen. 854 00:44:48,810 --> 00:44:50,730 >> Dus dat is de enige reden waarom heb ik dat gedaan. 855 00:44:50,730 --> 00:44:53,067 En het gaat worden een soort infix operator. 856 00:44:53,067 --> 00:44:54,900 En ik moet bieden het enige informatie 857 00:44:54,900 --> 00:44:58,386 over de voorrang van deze exploitant dus het is links associatief. 858 00:44:58,386 --> 00:45:00,260 Het is als relatief hoge prioriteit in vergelijking 859 00:45:00,260 --> 00:45:02,432 om optelling of vermenigvuldiging. 860 00:45:02,432 --> 00:45:04,140 Het is een hogere prioriteit dan al die. 861 00:45:04,140 --> 00:45:04,931 Enzovoort, enzovoort. 862 00:45:04,931 --> 00:45:07,410 En dan heb ik bepalen de functie daadwerkelijk 863 00:45:07,410 --> 00:45:10,070 dicteert wat deze operator doet. 864 00:45:10,070 --> 00:45:14,150 Dus in de veronderstelling dat ik een linkse kant en de rechterkant, 865 00:45:14,150 --> 00:45:17,330 hetgeen zou misschien betere variabele naam voor dit. 866 00:45:17,330 --> 00:45:20,690 Linkerkant en rechterkant. 867 00:45:20,690 --> 00:45:26,740 Ik kan dan deze bevoegdheid van de linkerkant naar de rechterkant 868 00:45:26,740 --> 00:45:28,980 en terug te keren die waarde. 869 00:45:28,980 --> 00:45:30,370 Dus nu is het super lief. 870 00:45:30,370 --> 00:45:33,790 Het enige wat we moeten doen is 2 star star 3 en 2 tot de derde macht, 871 00:45:33,790 --> 00:45:35,290 en krijgen we een waarde van 8. 872 00:45:35,290 --> 00:45:40,280 2 star star 10 is 2 tot de 10e macht, krijgen we 1.024. 873 00:45:40,280 --> 00:45:43,630 >> Dus nu onze macht van de functie, die opnieuw verschillend, 874 00:45:43,630 --> 00:45:47,030 omdat het hele idee achter deze was dat we een functie die 875 00:45:47,030 --> 00:45:50,700 duurt altijd even waarde en vermenigvuldigt het-- of liever 876 00:45:50,700 --> 00:45:53,240 neemt de exponent op dezelfde stroombron. 877 00:45:53,240 --> 00:45:54,300 Dus nu is het nog eenvoudiger. 878 00:45:54,300 --> 00:45:57,070 Dus nu is het gewoon dollar aanmelden 0 star star y. 879 00:45:57,070 --> 00:46:01,190 We hebben niet eens te pow meer gebruiken. 880 00:46:01,190 --> 00:46:03,020 >> OK, wie heeft verloren? 881 00:46:03,020 --> 00:46:03,700 Doen we OK? 882 00:46:03,700 --> 00:46:05,090 Heeft u vragen over dit spul? 883 00:46:05,090 --> 00:46:05,815 Yeah? 884 00:46:05,815 --> 00:46:09,500 >> Publiek: Wanneer u krijge [onverstaanbaar] de funk macht y dubbel. 885 00:46:09,500 --> 00:46:11,441 Dus als je een functie oplevert. 886 00:46:11,441 --> 00:46:13,190 DANIEL Armendariz: Funk macht y dubbel. 887 00:46:13,190 --> 00:46:14,270 Oh ja, ik weet het niet Wat de y getallen zijn. 888 00:46:14,270 --> 00:46:15,708 Sorry daarvoor. 889 00:46:15,708 --> 00:46:19,420 >> Publiek: Waarom bent u terug een functie [onverstaanbaar] behuizing. 890 00:46:19,420 --> 00:46:24,214 Is niet dollar nul ster ster y [onverstaanbaar] 891 00:46:24,214 --> 00:46:29,710 vinden dat operator met dat terugkerende dubbele [onverstaanbaar] verdubbelen? 892 00:46:29,710 --> 00:46:32,742 >> DANIEL Armendáriz: Dus laten mij antwoord op uw vraag 893 00:46:32,742 --> 00:46:35,950 hoe ik het begrijp en je kan mij vertellen als ik niet begrijp uw vraag. 894 00:46:35,950 --> 00:46:42,850 Dus dit construct de accolade dollarteken nul star star y, 895 00:46:42,850 --> 00:46:44,280 is een functie. 896 00:46:44,280 --> 00:46:50,080 En een parameter die accepteert vertegenwoordigd door deze dollarteken nul. 897 00:46:50,080 --> 00:46:55,830 De return sleutelwoord wordt geïmpliceerd in deze zeer korte, anonieme syntaxis van de functie. 898 00:46:55,830 --> 00:46:57,870 >> Wat betekent dat in wezen wat dit zegt 899 00:46:57,870 --> 00:47:01,270 is dat ik de definitie van een function-- en dan zal ik 900 00:47:01,270 --> 00:47:05,320 noem het gewoon something-- waar heb ik enkele waarde y. 901 00:47:05,320 --> 00:47:08,300 Ik heb y, wat het dubbele is. 902 00:47:08,300 --> 00:47:10,750 En ik ben terug van een dubbele. 903 00:47:10,750 --> 00:47:19,010 En ik heb in die terugkeer Y-- sorry, Ik zou niet dit Y-- x hebben genoemd. 904 00:47:19,010 --> 00:47:20,240 Oh dear, oh dear, oh dear. 905 00:47:20,240 --> 00:47:27,440 X-- nope-- star star y. 906 00:47:27,440 --> 00:47:29,720 >> Dus dit is gewoon een vereenvoudigde versie van deze. 907 00:47:29,720 --> 00:47:33,990 En dus is de reden dat ik heb dollar teken nul is dat het gebruik van deze behuizing 908 00:47:33,990 --> 00:47:41,050 betekent dat ik niet meer naar pow te typen, of niet meer doen 909 00:47:41,050 --> 00:47:45,570 Ik moet iets doen als 3-sterren ster 2. 910 00:47:45,570 --> 00:47:48,530 Ik kan alleen maar een enkele functie genaamd vierkante 911 00:47:48,530 --> 00:47:50,820 dat zal altijd enige waarde als input 912 00:47:50,820 --> 00:47:52,980 en eigenlijk terug op het plein van dat. 913 00:47:52,980 --> 00:47:56,460 >> Dus de hele doel van de sluiting om gewoon een soort van kapselen het feit 914 00:47:56,460 --> 00:47:59,920 dat ik wil altijd y gebruiken wanneer Ik noem dat de functie als de kracht 915 00:47:59,920 --> 00:48:01,710 bij het nemen van deze exponent. 916 00:48:01,710 --> 00:48:04,650 Dus terug dan een functie die accepteert 917 00:48:04,650 --> 00:48:08,460 een dubbele, die de basis en retourneren het resultaat van die exponent 918 00:48:08,460 --> 00:48:10,740 is hier het sleutelwoord. 919 00:48:10,740 --> 00:48:12,790 En dat is het grote verschil. 920 00:48:12,790 --> 00:48:14,430 Er was gewoon een beetje een floreren. 921 00:48:14,430 --> 00:48:17,970 >> Dit is niet anders vergeleken met de voorafgaande voorbeelden 922 00:48:17,970 --> 00:48:20,530 maar het was gewoon een beetje een floreren we kunnen eigenlijk 923 00:48:20,530 --> 00:48:24,500 zorgen voor een operator in Swift en werkelijk dingen mee doen, 924 00:48:24,500 --> 00:48:26,396 dat is een soort van een cool ding. 925 00:48:26,396 --> 00:48:27,520 Heb ik je vraag beantwoord? 926 00:48:27,520 --> 00:48:28,390 Zoet. 927 00:48:28,390 --> 00:48:31,350 Iets anders, voordat we verder gaan? 928 00:48:31,350 --> 00:48:33,570 OK. 929 00:48:33,570 --> 00:48:36,430 >> Nu dit soort smeekt de vraag is dat-- goed OK, 930 00:48:36,430 --> 00:48:40,870 Nu hebben we de mogelijkheid voor functies worden geretourneerd. 931 00:48:40,870 --> 00:48:48,950 Kunnen we ook functies als gegevens doorgeven of als parameters andere functies? 932 00:48:48,950 --> 00:48:50,710 En in feite we kunnen. 933 00:48:50,710 --> 00:48:53,480 Dus laten we zeggen dat we hebben allemaal van dezelfde code. 934 00:48:53,480 --> 00:48:56,120 We hebben het plein variabele dat zal deze code vierkant. 935 00:48:56,120 --> 00:48:59,320 En we hebben de kubus variabele dat zal een aantal gegevens kubus. 936 00:48:59,320 --> 00:49:02,440 En we eigenlijk willen toepassen een breed bereik van getallen. 937 00:49:02,440 --> 00:49:06,870 >> Dus wat we misschien geneigd te doen, natuurlijk wat zeker geldig 938 00:49:06,870 --> 00:49:15,430 is te itereren over deze lijst van nummers en toe te passen mijn functies vierkant en kubus 939 00:49:15,430 --> 00:49:22,270 en krijgt twee nieuwe lijsten als resultaat dat deze oorspronkelijke lijst kwadraat zijn 940 00:49:22,270 --> 00:49:24,970 en in blokjes, respectievelijk. 941 00:49:24,970 --> 00:49:26,880 Perfect aanvaardbaar. 942 00:49:26,880 --> 00:49:29,130 Maar wat is de zaak die we hier zien is dat we hebben, 943 00:49:29,130 --> 00:49:31,310 nogmaals, de verdubbeling van onze code. 944 00:49:31,310 --> 00:49:34,310 En er is misschien een kans voor ons om dit een beetje te vereenvoudigen. 945 00:49:34,310 --> 00:49:41,260 Wat als er een manier voor ons om eigenlijk altijd itereren over enkele lijst 946 00:49:41,260 --> 00:49:45,450 en gewoon door te geven aan deze magische functie een variabele 947 00:49:45,450 --> 00:49:47,350 is een functie die we willen toepassen 948 00:49:47,350 --> 00:49:50,336 elke afzonderlijk product in deze lijst. 949 00:49:50,336 --> 00:49:53,210 Dit brengt het concept van wat worden hogere orde functies genoemd. 950 00:49:53,210 --> 00:49:57,150 En dat is in wezen wat dit is, is dat we een functie kunnen maken. 951 00:49:57,150 --> 00:50:00,210 >> En in dit geval heet het een mapper, alleen maar om het een naam te geven, net 952 00:50:00,210 --> 00:50:02,510 in kaart brengen over elk enkel item in een lijst. 953 00:50:02,510 --> 00:50:06,191 Waar ik neem een ​​lijst en ik neem een ​​functie. 954 00:50:06,191 --> 00:50:08,440 En die functie, natuurlijk heeft een bepaalde signatuur. 955 00:50:08,440 --> 00:50:11,980 Het accepteert als parameter double en het zal de uitgang is een dubbele. 956 00:50:11,980 --> 00:50:14,310 En het gehele resultaat van deze functie zal 957 00:50:14,310 --> 00:50:18,921 om een ​​nieuwe lijst die is van het type double zijn. 958 00:50:18,921 --> 00:50:19,420 OK? 959 00:50:19,420 --> 00:50:22,650 >> En wat ik ga doen is deze functie f toegepast 960 00:50:22,650 --> 00:50:24,960 om elk element in mijn lijst. 961 00:50:24,960 --> 00:50:30,280 En reply-- en plaats deze nieuwe terugkeren lijst als resultaat, dat is echt cool. 962 00:50:30,280 --> 00:50:31,820 Nu kan ik de functies rond passeren. 963 00:50:31,820 --> 00:50:35,290 En dit idee van hogere orde functies is echt belangrijk. 964 00:50:35,290 --> 00:50:39,260 En dit mapper is eigenlijk gewoon implementatie van de arme man 965 00:50:39,260 --> 00:50:43,130 een functie die wordt gebouwd in Swift genoemd kaart. 966 00:50:43,130 --> 00:50:45,690 En het doet precies dit, misschien zelfs een beetje beter. 967 00:50:45,690 --> 00:50:48,260 >> Dit is gewoon een soort van een generiek, vereenvoudigde versie 968 00:50:48,260 --> 00:50:51,270 laat ons toe om het te zien concept dat hier van toepassing. 969 00:50:51,270 --> 00:50:54,630 Kijk nu eens naar de manier waarop ik daadwerkelijk kan toepassen mijn vierkante 970 00:50:54,630 --> 00:50:57,850 en mijn kubus functies om deze lijst van nummers. 971 00:50:57,850 --> 00:50:58,780 Ik run mijn mapper. 972 00:50:58,780 --> 00:51:00,280 Ik geef het mijn lijst van nummers. 973 00:51:00,280 --> 00:51:02,155 Ik geef om het de de functie dat gaat 974 00:51:02,155 --> 00:51:04,170 om voor elk van deze indices. 975 00:51:04,170 --> 00:51:07,120 En het gaat worden uitgang als resultaat. 976 00:51:07,120 --> 00:51:11,810 En ik zal krijgen om te zien dat ik heb in het kwadraat en in blokjes mijn nummers als gevolg. 977 00:51:11,810 --> 00:51:14,660 >> En natuurlijk de mapper zal nemen elke vorm van anonieme functie. 978 00:51:14,660 --> 00:51:17,640 We kunnen zelfs zien dat ik heb gemaakt een nieuwe anonieme functie die 979 00:51:17,640 --> 00:51:20,220 duurt slechts enkele parameter en deelt het door 2. 980 00:51:20,220 --> 00:51:24,340 En we kunnen zien dat ik heb, in feite, verdeelde mijn lijst met 2 in plaats daarvan. 981 00:51:24,340 --> 00:51:25,250 Cool? 982 00:51:25,250 --> 00:51:27,340 Tot nu toe alles goed? 983 00:51:27,340 --> 00:51:29,650 Oké, laten we nu terug te komen op dit idee. 984 00:51:29,650 --> 00:51:36,160 Laten we voeren dit terug in de context van een cijferlijst. 985 00:51:36,160 --> 00:51:41,860 >> En als ik dat doen, kunnen we zien dat ik kan een groot aantal van deze options-- toepassing 986 00:51:41,860 --> 00:51:44,330 of een groot aantal van deze hogere orde functies 987 00:51:44,330 --> 00:51:51,450 om mijn vermogen om een ​​doen eigenlijk te vereenvoudigen verscheidenheid van dingen op lijsten van getallen. 988 00:51:51,450 --> 00:51:53,660 Dus bijvoorbeeld, als ik neem een ​​lijst van nummers, 989 00:51:53,660 --> 00:51:57,060 een van de hogere orde functies dat bestaat heet verminderen. 990 00:51:57,060 --> 00:52:00,080 Wat te verminderen doet nogal dan de kaart, wordt verminderd zal 991 00:52:00,080 --> 00:52:03,710 neem twee elementen in de lijst, zal een functie te nemen dat 992 00:52:03,710 --> 00:52:07,420 vergelijkt de twee elementen van de lijst en het zal dan 993 00:52:07,420 --> 00:52:09,610 soort output-- de output van die functie 994 00:52:09,610 --> 00:52:13,790 zal een element dat je dan vergelijken met anderen. 995 00:52:13,790 --> 00:52:18,190 >> Dus je zou kunnen dit gebruiken om daadwerkelijk som van de getallen in de lijst. 996 00:52:18,190 --> 00:52:20,640 Bijvoorbeeld, als je had Een lijst 1, 2, 3, 4, 5, 997 00:52:20,640 --> 00:52:22,940 u de eerste elementen, 1 en 2 nemen. 998 00:52:22,940 --> 00:52:27,270 U kunt toepassen om het een toevoeging functie dat deze twee elementen draait 999 00:52:27,270 --> 00:52:30,980 en spuugt een van die elementen, wat zou de waarde 3 te zijn. 1000 00:52:30,980 --> 00:52:35,684 Dan nemen we die waarde 3 met de volgende element van de lijst, de som van deze twee, 1001 00:52:35,684 --> 00:52:37,100 en vervolgens door te gaan naar beneden in de lijst. 1002 00:52:37,100 --> 00:52:40,410 >> We zijn het verminderen van de lijst om een ​​enkele waarde. 1003 00:52:40,410 --> 00:52:42,700 En het gewoon zo gebeurt dat het plusteken 1004 00:52:42,700 --> 00:52:44,670 is een operator, net zoals we net zagen. 1005 00:52:44,670 --> 00:52:47,500 Deze operator is eigenlijk een functie die 1006 00:52:47,500 --> 00:52:53,100 heeft juist deze lijst die wij zou willen, in plaats van deze eigenschappen 1007 00:52:53,100 --> 00:52:54,770 dat we zouden willen. 1008 00:52:54,770 --> 00:52:56,760 Dus ik moedig u aan neem een ​​kijkje op deze. 1009 00:52:56,760 --> 00:52:59,290 Ik wil om te sorteren van de verhuizing op van een aantal van deze code 1010 00:52:59,290 --> 00:53:05,330 zodat we daadwerkelijk kunnen kijken naar een aantal werkelijke, echte, ware Swift in Xcode, 1011 00:53:05,330 --> 00:53:06,880 in iOS ontwikkeling. 1012 00:53:06,880 --> 00:53:08,630 Maar een kijkje nemen op dit en kijk of je kunt 1013 00:53:08,630 --> 00:53:11,171 ontleden door wat er aan de hand met sommige van deze hogere orde 1014 00:53:11,171 --> 00:53:13,790 functies, waaronder filter, te verminderen, en je zult zelfs 1015 00:53:13,790 --> 00:53:17,060 zie ergens hier in kaart ook. 1016 00:53:17,060 --> 00:53:17,910 Het is hier. 1017 00:53:17,910 --> 00:53:20,410 Waar het zal een opeenvolging te nemen kwaliteiten en het zal eigenlijk 1018 00:53:20,410 --> 00:53:24,230 in kaart te brengen met behulp van de schakelaar constructie, die u misschien herkennen uit C, 1019 00:53:24,230 --> 00:53:27,640 maar het is eigenlijk een veel meer krachtiger dan de switch constructie 1020 00:53:27,640 --> 00:53:29,810 dat we in C. 1021 00:53:29,810 --> 00:53:31,930 >> En we zullen toepassen op elk element in de lijst 1022 00:53:31,930 --> 00:53:34,540 en eigenlijk bieden de brief graad van elke 1023 00:53:34,540 --> 00:53:40,780 van deze cijfers met al deze concepten die we zojuist hebben gesproken over vroeger. 1024 00:53:40,780 --> 00:53:44,760 Laten we nu eens omzeilen voor slechts een minuut en praten over structuren. 1025 00:53:44,760 --> 00:53:49,680 En zo structuren zijn een wachttijd in C dat wij konden een nieuw type gegevens. 1026 00:53:49,680 --> 00:53:53,590 Structs bestaan ​​binnen Swift. 1027 00:53:53,590 --> 00:53:58,980 En dus doen veel andere constructies riep opsommingen en klassen, die echt 1028 00:53:58,980 --> 00:54:01,175 neem dit idee om een geheel ander niveau. 1029 00:54:01,175 --> 00:54:05,300 >> En eigenlijk is het gewoon een manier het definiëren van een nieuw type gegevens. 1030 00:54:05,300 --> 00:54:11,010 Dus als je get-- als je komt tegenover klasse of structuren of opsommingen, 1031 00:54:11,010 --> 00:54:13,290 niet in de war raken door het. 1032 00:54:13,290 --> 00:54:16,280 Het is gewoon de manier van het definiëren van nieuwe bepaald type gegevens. 1033 00:54:16,280 --> 00:54:20,230 En dit is echt belangrijk bij we praten over iOS app ontwikkeling 1034 00:54:20,230 --> 00:54:24,630 omdat alles wat bestaat binnen de iOS-app 1035 00:54:24,630 --> 00:54:27,460 is in wezen een object van een soort. 1036 00:54:27,460 --> 00:54:31,980 En een voorwerp is in feite een klasse of een enum of een structuur. 1037 00:54:31,980 --> 00:54:34,760 >> Dus in dit geval ben ik definiëren van een nieuw type gegevens 1038 00:54:34,760 --> 00:54:37,740 dat Ik bel beoordeling Dat is een aantal eigenschappen, waaronder 1039 00:54:37,740 --> 00:54:41,040 een naam en een opeenvolging van rangen. 1040 00:54:41,040 --> 00:54:43,470 Dus een soort van evaluatie dat ik zou kunnen hebben in het achterhoofd 1041 00:54:43,470 --> 00:54:44,760 quizzen, bijvoorbeeld zou zijn. 1042 00:54:44,760 --> 00:54:48,180 Ik zou willen een hebben beoordeling dat een quiz was 1043 00:54:48,180 --> 00:54:51,460 en dat een verscheidenheid aan kwaliteiten had verbonden dat voor een quiz, 1044 00:54:51,460 --> 00:54:52,840 quiz twee, enzovoort, enzovoort. 1045 00:54:52,840 --> 00:54:55,720 >> Of ik misschien een ander type hebben van de beoordeling voor probleem sets. 1046 00:54:55,720 --> 00:54:56,650 En ik kan dingen doen. 1047 00:54:56,650 --> 00:54:59,860 Ik kan eigenlijk functies binnen deze 1048 00:54:59,860 --> 00:55:02,645 gegevens, waarvan nu bekend methoden. 1049 00:55:02,645 --> 00:55:04,520 Dus als je ooit de woord methode, het is echt 1050 00:55:04,520 --> 00:55:08,190 is gewoon een functie die geldt een zeer specifieke klasse, 1051 00:55:08,190 --> 00:55:10,100 of een datatype. 1052 00:55:10,100 --> 00:55:12,350 Het stelt ons in staat om de gegevens binnen te wijzigen. 1053 00:55:12,350 --> 00:55:15,510 >> Dus met andere woorden, als ik wil toevoegen van een cijfer aan mijn beoordeling, 1054 00:55:15,510 --> 00:55:18,630 dan alles wat ik moet doen is om voeg de score die ingang was 1055 00:55:18,630 --> 00:55:22,660 deze functie mijn interne eigenschap. 1056 00:55:22,660 --> 00:55:25,880 Er is nog een nette constructie hier in Swift, dat is deze dot dot dot 1057 00:55:25,880 --> 00:55:31,780 operator, wat betekent dat scores kunnen Nu accepteren aantal gehele getallen. 1058 00:55:31,780 --> 00:55:33,940 En scores zullen een array van integers die 1059 00:55:33,940 --> 00:55:39,030 zijn doorgegeven aan mijn functie, die betekent dat ik dingen kan doen als dit. 1060 00:55:39,030 --> 00:55:42,360 >> Ik kan denk kwaliteiten toe te voegen en leveren alleen willekeurig aantal getallen erin 1061 00:55:42,360 --> 00:55:47,420 en eigenlijk worden een matrix van die waarden in mijn functie 1062 00:55:47,420 --> 00:55:50,270 of mijn methode, zoals het geval. 1063 00:55:50,270 --> 00:55:54,040 Nu is dit belangrijk, omdat alles in Xcode, alles in iOS, 1064 00:55:54,040 --> 00:55:56,250 is in feite een object. 1065 00:55:56,250 --> 00:55:59,630 Dus hou dat in gedachten toen we buste geopend Xcode 1066 00:55:59,630 --> 00:56:04,890 en ga je verder dan iOS versies van twee en drie 1067 00:56:04,890 --> 00:56:08,820 en eigenlijk gaan naar versie vier. 1068 00:56:08,820 --> 00:56:11,940 >> En nogmaals, dit alles zal worden geplaatst op de seminar pagina. 1069 00:56:11,940 --> 00:56:16,980 iOS vier is een soort van een full blown implementatie van een zeer eenvoudige app. 1070 00:56:16,980 --> 00:56:23,920 En wat deze app doet is het laadt een UI, die er als volgt uitziet. 1071 00:56:23,920 --> 00:56:28,680 Nogmaals, als we op storyboard we kunnen zien dat dit is wat het lijkt. 1072 00:56:28,680 --> 00:56:31,320 Dit is de gebruikersinterface. 1073 00:56:31,320 --> 00:56:33,676 Het heeft een titel aan de top. 1074 00:56:33,676 --> 00:56:34,800 Ik heb het zogenaamde web gallery. 1075 00:56:34,800 --> 00:56:38,400 >> In het midden is er een element riep de afbeelding UI uitzicht. 1076 00:56:38,400 --> 00:56:41,340 En aan de onderkant is er een werkbalk met een enkele knop die 1077 00:56:41,340 --> 00:56:46,850 heeft rekbare ruimtes die het mogelijk maken om centrum in het midden van deze werkbalk. 1078 00:56:46,850 --> 00:56:51,780 En wat er gebeurt is dat wanneer deze laadt het een JSON-bestand dat is gedownload 1079 00:56:51,780 --> 00:56:55,540 die op een server elders ontleedt dat JSON-bestand, 1080 00:56:55,540 --> 00:56:58,130 en de JSON-bestand ziet er een beetje als dit. 1081 00:56:58,130 --> 00:57:02,770 1082 00:57:02,770 --> 00:57:06,230 De JSON-bestand ziet er als volgt uit. 1083 00:57:06,230 --> 00:57:08,650 Daar is het. 1084 00:57:08,650 --> 00:57:11,730 >> Het heeft een albumnaam en heeft een reeks foto's. 1085 00:57:11,730 --> 00:57:13,490 Elk van die foto's een naam en ook 1086 00:57:13,490 --> 00:57:19,460 een URL zelf dat het vertegenwoordigen jpeg versie van die individuele foto. 1087 00:57:19,460 --> 00:57:24,780 Dus wat gebeurt is dat wanneer dit programma belastingen, het de JSON-bestand downloadt, 1088 00:57:24,780 --> 00:57:30,590 ontleedt het, zet dit alles in het equivalent van een array in iOS 1089 00:57:30,590 --> 00:57:33,020 app ontwikkeling, dat is een NSArray. 1090 00:57:33,020 --> 00:57:37,520 En dan kan ik laad deze gegevens in een toepassing 1091 00:57:37,520 --> 00:57:41,100 en laad het op mijn scherm. 1092 00:57:41,100 --> 00:57:44,760 >> Er is een beeld dat werd geladen met de knop helemaal onderaan. 1093 00:57:44,760 --> 00:57:49,190 Als ik klik op Get Next Image, het dan trekt die afbeelding van het internet 1094 00:57:49,190 --> 00:57:53,370 en vervangt die afbeelding in het beeld UI uitzicht. 1095 00:57:53,370 --> 00:57:57,820 Dus je kunt deze downloaden en eigenlijk een kijkje nemen op het op uw computer. 1096 00:57:57,820 --> 00:58:00,940 En bouwen en eigenlijk compileren naar uw apparaat. 1097 00:58:00,940 --> 00:58:04,710 Maar in wezen het proces was dit, maak het storyboard-- 1098 00:58:04,710 --> 00:58:08,080 of liever niet create-- maar selecteer het storyboard. 1099 00:58:08,080 --> 00:58:15,030 En eigenlijk we'll-- als je niet mind-- we gewoon een paar seconden duren 1100 00:58:15,030 --> 00:58:18,390 om daadwerkelijk te laten zien hoe dit werd gedaan. 1101 00:58:18,390 --> 00:58:22,430 1102 00:58:22,430 --> 00:58:27,820 >> Gewoon zo dat hoe we kunnen eigenlijk dit te bereiken wordt gemaakt een beetje meer 1103 00:58:27,820 --> 00:58:28,360 duidelijk. 1104 00:58:28,360 --> 00:58:30,651 Enkele weergave toepassing, ik ben ga dit seminar te bellen 1105 00:58:30,651 --> 00:58:35,330 vier vertegenwoordigen deze bepaald getal. 1106 00:58:35,330 --> 00:58:36,335 Opslaan op het bureaublad. 1107 00:58:36,335 --> 00:58:39,890 1108 00:58:39,890 --> 00:58:42,110 OK, gaat klikken op het storyboard. 1109 00:58:42,110 --> 00:58:47,030 En wat ik ga doen is om mijn imago uitzicht te vinden, 1110 00:58:47,030 --> 00:58:50,940 sleep het naar mijn gebruiker interface en centreren. 1111 00:58:50,940 --> 00:58:54,850 Nu alleen gecentreerd helaas is niet van plan om een ​​heleboel te doen, 1112 00:58:54,850 --> 00:58:58,680 behalve een scherm dat is precies deze grootte. 1113 00:58:58,680 --> 00:59:03,950 >> Dus we kunnen onszelf overtuigen dat door klikken op deze dubbele cirkel ding, 1114 00:59:03,950 --> 00:59:08,290 het terugdringen van deze pop up menu hier en veranderende 1115 00:59:08,290 --> 00:59:11,110 om een ​​voorbeeld, waar we eigenlijk de kans krijgen om te bekijken hoe 1116 00:59:11,110 --> 00:59:13,530 dit ook daadwerkelijk kijk op andere apparaten. 1117 00:59:13,530 --> 00:59:16,500 Zoals we kunnen zien, we doen niet eens zie het op dit specifieke geval. 1118 00:59:16,500 --> 00:59:18,500 Dus ik ga dit afsluiten. 1119 00:59:18,500 --> 00:59:22,100 >> En ik ga om te selecteren dit pictogram neer op de zeer 1120 00:59:22,100 --> 00:59:23,910 onderste gedeelte van het scherm. 1121 00:59:23,910 --> 00:59:26,584 Het zegt Resolve Auto Layout Vraagstukken. 1122 00:59:26,584 --> 00:59:28,000 Sorry, het is afgesneden aan de onderkant. 1123 00:59:28,000 --> 00:59:36,360 Maar als ik op dat, wat ik krijgen wordt deze pop up-- weggaan. 1124 00:59:36,360 --> 00:59:39,740 1125 00:59:39,740 --> 00:59:51,220 Wat ik krijg is deze pop-up die kan ik ontbrekende beperkingen toe te voegen. 1126 00:59:51,220 --> 00:59:53,780 En door te doen dat het zal dan een soort van op slot 1127 00:59:53,780 --> 00:59:56,640 in het middengedeelte van de scherm zoals ik zou verwachten. 1128 00:59:56,640 --> 01:00:00,520 >> Nu in om deze knop op te krijgen top van het, ik moet gaan naar de editor. 1129 01:00:00,520 --> 01:00:05,010 Ga naar verankeren in en klik Navigation Controller. 1130 01:00:05,010 --> 01:00:08,900 Wat dat zal doen, is die zal toevoegen deze hele andere component aan, 1131 01:00:08,900 --> 01:00:11,310 maar het zal eigenlijk verbinden het terug naar mijn oorspronkelijke UI. 1132 01:00:11,310 --> 01:00:14,450 En de details, nogmaals, we doen niet echt zorgen te maken over nu. 1133 01:00:14,450 --> 01:00:16,710 Maar ik wil wel een hebben werkbalk helemaal onderaan. 1134 01:00:16,710 --> 01:00:18,530 Dus ik zal Shows Toolbar controleren. 1135 01:00:18,530 --> 01:00:21,870 >> En dit biedt binnen mijn inziens die nu elders, 1136 01:00:21,870 --> 01:00:23,900 we kunnen zien dat dat verband houdt hier. 1137 01:00:23,900 --> 01:00:28,710 Het biedt nu een werkbalk onderaan mijn UI. 1138 01:00:28,710 --> 01:00:34,770 Dus nu, in plaats van het selecteren van een image view, kan ik een label te vinden, 1139 01:00:34,770 --> 01:00:41,140 of liever een toolbar-- laten we eens kijken, waar is dat? 1140 01:00:41,140 --> 01:00:41,890 Hoe heet het? 1141 01:00:41,890 --> 01:00:49,760 Een button-- punt bar-- item-- sorry-- bar knop voorwerp. 1142 01:00:49,760 --> 01:00:54,590 Plop dat er en pas een paar flexibele spaties naast 1143 01:00:54,590 --> 01:00:57,429 om daadwerkelijk te centreren dat. 1144 01:00:57,429 --> 01:00:58,970 Zo nu heb ik mijn UI gemaakt, in principe. 1145 01:00:58,970 --> 01:01:01,428 En ik kan het een naam geven door dubbelklikken op de top 1146 01:01:01,428 --> 01:01:04,880 hier en zeggen webgalerie en ga zo maar door. 1147 01:01:04,880 --> 01:01:08,100 Nu weer, dit zijn elementen die bestaan ​​op zichzelf. 1148 01:01:08,100 --> 01:01:10,400 En ik moet verbinden ze naar mijn code die 1149 01:01:10,400 --> 01:01:14,297 Ik kan doen door nogmaals te brengen tot deze cirkel icon dubbele, 1150 01:01:14,297 --> 01:01:15,380 het veranderen van de preview. 1151 01:01:15,380 --> 01:01:18,950 Die, door de manier, nu kunnen we zien is mooi gecentreerd en zal er goed uitzien 1152 01:01:18,950 --> 01:01:23,720 op verschillende apparaten. 1153 01:01:23,720 --> 01:01:27,280 >> Schakelen naar de automatische, die zal brengen de ViewController code. 1154 01:01:27,280 --> 01:01:29,030 En nu dit deel is belangrijk. 1155 01:01:29,030 --> 01:01:34,590 Om voor u om deze te sluiten twee elementen, de code voor de UI, 1156 01:01:34,590 --> 01:01:36,680 u het item te selecteren dat u verbinding wilt maken. 1157 01:01:36,680 --> 01:01:39,570 Dus in dit geval, we eigenlijk willen coderen 1158 01:01:39,570 --> 01:01:43,520 verandert het beeld dat is opgenomen binnen deze afbeelding UI uitzicht. 1159 01:01:43,520 --> 01:01:47,070 Dus als je de controle op uit De beeldweergave en sleep, 1160 01:01:47,070 --> 01:01:51,960 je zult merken dat je een kleine bar te krijgen, wanneer je laat gaan van alles wat deze pop 1161 01:01:51,960 --> 01:01:53,550 up zal optreden. 1162 01:01:53,550 --> 01:01:56,470 >> En dat zullen we zegt een verbinding te maken. 1163 01:01:56,470 --> 01:01:59,300 En vanaf hier wil ik het geven een naam, zoiets als galerie. 1164 01:01:59,300 --> 01:02:00,240 Druk op Enter. 1165 01:02:00,240 --> 01:02:03,040 En dit ook daadwerkelijk biedt een galerie variabele genaamd 1166 01:02:03,040 --> 01:02:08,600 dat ik dan kan verwijzen in mijn code om het beeld te veranderen, bijvoorbeeld. 1167 01:02:08,600 --> 01:02:10,430 Dus hoe werkt die code er eigenlijk uit? 1168 01:02:10,430 --> 01:02:13,030 Nou nogmaals, ik wil niet besteden te veel tijd op. 1169 01:02:13,030 --> 01:02:15,430 En ik moedig u aan downloaden en een kijkje nemen. 1170 01:02:15,430 --> 01:02:18,330 Maar een van de meest belangrijk aspect is de code 1171 01:02:18,330 --> 01:02:20,980 die daadwerkelijk haalt een beeld. 1172 01:02:20,980 --> 01:02:26,470 >> Dus in dit geval wil ik binnen mijn foto's te krijgen 1173 01:02:26,470 --> 01:02:28,520 matrix, die is opgenomen in mijn klas. 1174 01:02:28,520 --> 01:02:33,390 Ik wil definiëren de naam en de URL die is ontleed uit deze JSON. 1175 01:02:33,390 --> 01:02:39,810 Eigenlijk is het apparaat vragen om de te krijgen URL om de URL te halen uit deze, 1176 01:02:39,810 --> 01:02:44,060 en dan halen de gegevens van de inhoud van die URL. 1177 01:02:44,060 --> 01:02:49,430 Zet deze gegevens vervolgens in een beeld door het passeren van het in beeld UI. 1178 01:02:49,430 --> 01:02:52,880 Dus nogmaals, het zijn allemaal verschillende types voorwerpen, verschillende klassen. 1179 01:02:52,880 --> 01:02:58,410 >> En dan kan ik vervolgens mijn gallery.image gelijk aan die gegevens. 1180 01:02:58,410 --> 01:03:00,750 En dat is een soort van het vlees ervan die eigenlijk dan 1181 01:03:00,750 --> 01:03:08,250 in staat om de gegevens van-- verandering veranderen het beeld van de ene naar de volgende. 1182 01:03:08,250 --> 01:03:10,660 Dus nogmaals, hopelijk nu veel van de constructen 1183 01:03:10,660 --> 01:03:12,240 zal een beetje meer zin te maken. 1184 01:03:12,240 --> 01:03:15,260 Merk op dat er een aantal uitroeptekens hier. 1185 01:03:15,260 --> 01:03:19,810 De uitroeptekens zijn voornamelijk met betrekking tot de optionals. 1186 01:03:19,810 --> 01:03:22,657 >> Wat ik eigenlijk te zeggen is dat zonder zelfs te controleren 1187 01:03:22,657 --> 01:03:24,490 om te zien of er gegevens binnen deze optionele, 1188 01:03:24,490 --> 01:03:27,140 Ik ga om te gaan en veronderstellen dat er op en ontrafel het. 1189 01:03:27,140 --> 01:03:31,340 Vergeet niet dat we de analogie van soort van een pakket voor de opties die 1190 01:03:31,340 --> 01:03:34,700 en we moeten het uitpakken verpakking en trek de gegevens uit. 1191 01:03:34,700 --> 01:03:37,570 Het uitroepteken krachten die daadwerkelijk gebeuren. 1192 01:03:37,570 --> 01:03:39,590 >> Maar ik weet dat dit is veilig omdat ik gecontroleerd 1193 01:03:39,590 --> 01:03:42,070 om te zien of beeldgegevens gelijk tot nihil, heb ik eigenlijk controleren 1194 01:03:42,070 --> 01:03:45,420 om te zien of dat optioneel was in feite mislukt. 1195 01:03:45,420 --> 01:03:47,110 Als dat had in feite niet reeds. 1196 01:03:47,110 --> 01:03:52,450 En dus ik weet zeker dat als ik eenmaal aan deze punt dat ik kan veilig uitpakken die gegevens. 1197 01:03:52,450 --> 01:03:55,710 Je zou het ook zien in de vorm van een vraagteken. 1198 01:03:55,710 --> 01:03:59,100 Dus als we naar beneden scrollen naar waar ik moeten eigenlijk ontleden gegevens. 1199 01:03:59,100 --> 01:04:01,850 >> Dus laat je niet afschrikken door worden gezet dit soort lange namen. 1200 01:04:01,850 --> 01:04:06,580 U kunt vinden in de Apple developer site veel 1201 01:04:06,580 --> 01:04:09,620 verwijzingen naar alle voorwerpen en alle processen 1202 01:04:09,620 --> 01:04:11,170 dat eigenlijk dit mogelijk te maken. 1203 01:04:11,170 --> 01:04:15,990 Maar merk op dat dit in wezen een functie waar ik geef het aantal gegevens. 1204 01:04:15,990 --> 01:04:18,410 En ik krijg weer een soort van data. 1205 01:04:18,410 --> 01:04:24,190 En ik nodig om dit te gebruiken als zoekwoord om omzetten in dit NSDictionary? 1206 01:04:24,190 --> 01:04:26,490 Die weer is, een optionele NSDictionary. 1207 01:04:26,490 --> 01:04:31,070 Die ik moet dan controleren om te zien of het bestaat. 1208 01:04:31,070 --> 01:04:37,130 >> Dus ik kan gebruiken dat als laat succesvolle gelijken ontleed, 1209 01:04:37,130 --> 01:04:40,620 dan weet ik dat dat optioneel eigenlijk bevat een aantal gegevens. 1210 01:04:40,620 --> 01:04:43,840 Of wat ik hier deed was om gewoon aannemen dat als er 1211 01:04:43,840 --> 01:04:49,067 geen fouten waren dat het inderdaad veilig. 1212 01:04:49,067 --> 01:04:51,400 Oké, ik wil bedanken u allen hartelijk voor uw komst. 1213 01:04:51,400 --> 01:04:53,540 Ik weet dat dit was een stuk, maar het was slechts een uur 1214 01:04:53,540 --> 01:04:55,920 om te praten over een aantal vrij geavanceerde spullen. 1215 01:04:55,920 --> 01:04:59,640 En dus hopelijk heb je een te krijgen kans om alle code te downloaden 1216 01:04:59,640 --> 01:05:01,657 en neem een ​​betere, meer grondig te kijken naar het. 1217 01:05:01,657 --> 01:05:04,240 Soort overtuig uzelf van alle van de dingen die gaande is. 1218 01:05:04,240 --> 01:05:06,800 En ik wil je bedanken alles, nogmaals, voor het komen. 1219 01:05:06,800 --> 01:05:08,760 En veel succes met je laatste projecten. 1220 01:05:08,760 --> 01:05:10,600 Heb een geweldige dag. 1221 01:05:10,600 --> 01:05:11,467