1 00:00:00,000 --> 00:00:03,332 >> [MUSIC nagpe-play] 2 00:00:03,332 --> 00:00:06,200 3 00:00:06,200 --> 00:00:09,590 >> DAN AMRMENDARIZ: Ang bawat tao, maligayang pagdating sa CS50 seminar, 4 00:00:09,590 --> 00:00:11,690 iOS App Development sa Swift. 5 00:00:11,690 --> 00:00:15,690 Ako Dan Armendariz, at ako preceptor ng computer science dito sa Harvard. 6 00:00:15,690 --> 00:00:21,510 >> At sa susunod na oras ay magiging isang ipoipo tour ng mas maraming mga bagay-bagay 7 00:00:21,510 --> 00:00:25,160 tungkol sa paksang ito na maaari naming magkasya. 8 00:00:25,160 --> 00:00:29,170 Ako mag-post ng lahat ng mga source code na makikita mo sa araw na ito online. 9 00:00:29,170 --> 00:00:31,990 Maaaring hindi namin magagawang aktwal na pumunta sa paglipas ng lahat ng bagay 10 00:00:31,990 --> 00:00:34,810 na ako na ako Ipinapakita sa iyo sa oras na ito. 11 00:00:34,810 --> 00:00:37,580 Ngunit hindi bababa sa inaasahan namin na sa pamamagitan ng mga komento ng source code, 12 00:00:37,580 --> 00:00:40,830 Makikita mo na subukan upang malaman kung ano ang eksakto ang nangyayari para sa mga bagay-bagay 13 00:00:40,830 --> 00:00:42,950 na hindi pa namin makuha sa. 14 00:00:42,950 --> 00:00:46,970 >> Sa pangkalahatan, ang mga istraktura ng talk ngayon ay ang mga sumusunod. 15 00:00:46,970 --> 00:00:52,820 Makikita simulan namin ang paggawa ng ilang mga pangunahing syntax sa mga wika Swift, 16 00:00:52,820 --> 00:00:56,290 pagpunta sa ilan sa mga mas advance na mga syntax ng Swift wika. 17 00:00:56,290 --> 00:00:59,560 Dahil ang mga wika ay talagang moderno at ito 18 00:00:59,560 --> 00:01:02,110 ay may maraming mga mataas na antas mga tampok, ang mga bagay na mayroon kaming hindi 19 00:01:02,110 --> 00:01:06,600 makikita sa C buong CS50, o kahit ilang iba pang mga wika 20 00:01:06,600 --> 00:01:09,310 na sinimulan namin sa gamit sa CS50 tulad ng PHP, 21 00:01:09,310 --> 00:01:12,670 kaya ako pagpunta sa may upang subukan upang ipakilala ang ilan din na mga paksa na 22 00:01:12,670 --> 00:01:18,580 ay may kaugnayan sa mas mataas na antas ng mga wika na maaaring hindi mo makita sa lalim sa CS50, 23 00:01:18,580 --> 00:01:21,380 ngunit makikita mo sa ibang pagkakataon aaral ng computer science. 24 00:01:21,380 --> 00:01:25,290 Kaya ito ay magiging isang mahigpit nakaimpake oras. 25 00:01:25,290 --> 00:01:28,897 At huwag mag-atubiling ipaalam sa akin malaman kung ikaw ay may anumang mga katanungan. 26 00:01:28,897 --> 00:01:30,730 Kaya kung interesado ka sa paggawa ng pag-unlad 27 00:01:30,730 --> 00:01:34,442 may Swift, o talagang anumang pag-unlad iOS app, 28 00:01:34,442 --> 00:01:35,900 may isang pares ng mga kinakailangan. 29 00:01:35,900 --> 00:01:39,940 Una sa lahat, kailangan mo na gamitin ang Mac, na tumatakbo sa mga halimbawa 30 00:01:39,940 --> 00:01:43,880 na kami ay pagpunta sa maging gamit ang araw na ito, isang relatibong bagong bersyon ng OS 31 00:01:43,880 --> 00:01:46,580 X. Sa kasong ito, ako tumatakbo X 10.5. 32 00:01:46,580 --> 00:01:48,600 Maaari mong patakbuhin ang 10.11 kung gusto mo. 33 00:01:48,600 --> 00:01:52,430 Ngunit lahat ng bagay na kayo ay pagpunta sa makita ay kinasasangkutan Xcode 7 at sa ibang pagkakataon, 34 00:01:52,430 --> 00:01:56,271 na kung saan ay ang pinakabagong bersyon ng Swift, na kung saan ay Swift 2.0. 35 00:01:56,271 --> 00:01:58,270 Ito ay talagang isang pretty mahalagang pagkakaiba. 36 00:01:58,270 --> 00:02:01,510 Ang isang pulutong ng mga syntax ay may nagbago pretty makabuluhang 37 00:02:01,510 --> 00:02:05,890 sa ilang mga kaso mula sa Swift 1.0, na kung saan ay inilabas noong nakaraang taon, 38 00:02:05,890 --> 00:02:08,514 sa Swift 2.0, na kung saan lamang ay dumating out na ito mahulog. 39 00:02:08,514 --> 00:02:09,889 Kaya kami ay pagpunta upang ipakita Swift 2.0. 40 00:02:09,889 --> 00:02:13,020 Ang isang pulutong ng mga bagay na naghanap ka para sa mga online 41 00:02:13,020 --> 00:02:18,040 kapag sinusubukan mong makakuha ng mga karagdagang impormasyon tungkol sa iba't-ibang mga bagay-bagay, 42 00:02:18,040 --> 00:02:20,710 baka gusto mong malinaw maghanap para sa Swift 2 43 00:02:20,710 --> 00:02:24,950 sa halip na lamang plain lumang Swift upang gumawa ng Siguraduhin na makuha mo ang syntax tama. 44 00:02:24,950 --> 00:02:26,920 >> Sa katunayan, ito ay totoo. 45 00:02:26,920 --> 00:02:31,210 May isang mabilis na halaga ng pag-unlad nangyayari sa Swift wika 46 00:02:31,210 --> 00:02:35,110 mula pa nang inilabas ito Apple, sa palagay ko kung ano, ito ay naging isang maliit na higit sa isang taon 47 00:02:35,110 --> 00:02:36,370 ngayon. 48 00:02:36,370 --> 00:02:39,080 At bagay ay nagbago kapansin-pansing sa oras na iyon. 49 00:02:39,080 --> 00:02:42,160 At upang hindi maging bigo kung, kapag kayo ay naghahanap sa paligid 50 00:02:42,160 --> 00:02:48,310 para sa mga paksa sa Swift o kung paano ganapin isang bagay gamit ang ilang halimbawa ng code 51 00:02:48,310 --> 00:02:51,210 o isang bagay na ito ay hindi tunay na gawain sa Swift 2.0. 52 00:02:51,210 --> 00:02:53,790 Tiyakin na ikaw ay naghahanap partikular para sa bersyon na iyon 53 00:02:53,790 --> 00:02:58,690 upang subukan upang i-minimize epekto ng iba't ibang mga bersyon at mga uri ng mga bagay. 54 00:02:58,690 --> 00:03:02,470 >> Kukunin ko ang subukan upang ituro ang ilang mga bagay lamang na iba sa mga mas lumang mga bersyon. 55 00:03:02,470 --> 00:03:03,970 Ngunit ito ay isang bagay upang panoorin ang para sa. 56 00:03:03,970 --> 00:03:06,770 Iyan ay malamang na magiging isa sa pinakamalaking sakit ng ulo 57 00:03:06,770 --> 00:03:11,010 na ikaw ay may sa Swift ay paghahanap Halimbawa code na mas matanda, kahit na lamang 58 00:03:11,010 --> 00:03:14,050 sa pamamagitan ng ilang buwan, sinusubukan mong gamitin ang mga ito sa iyong mas modernong proyekto. 59 00:03:14,050 --> 00:03:15,430 At ito lamang lamang ay hindi gumagana. 60 00:03:15,430 --> 00:03:18,530 Nakakakuha ka ng mga error compiler, syntax mga error, ang lahat ng mga uri ng mga nakatutuwang bagay. 61 00:03:18,530 --> 00:03:21,580 Kaya maging matiyaga sa pamamagitan lamang na, at ikaw sana 62 00:03:21,580 --> 00:03:24,200 magkaroon ng isang medyo magandang karanasan may Swift pangkalahatang. 63 00:03:24,200 --> 00:03:28,430 >> Ngayon ay maaari mo talagang join-- at Umaasa ako ang tunay na kami ay magkakaroon pa rin ito year-- ito 64 00:03:28,430 --> 00:03:30,910 Apple app CS 50 ng pag-unlad ng koponan, na 65 00:03:30,910 --> 00:03:34,680 ay magbibigay-daan sa iyo upang i-install ang anumang apps na kung saan nilikha mo sa iyong iOS device. 66 00:03:34,680 --> 00:03:39,190 Kaya maglaan ng hitsura sa URL na ito kung ikaw ay interesado sa paggawa na. 67 00:03:39,190 --> 00:03:41,450 >> Kaya lang ng ilang mga mga bagay-bagay tungkol sa Swift mismo. 68 00:03:41,450 --> 00:03:43,580 Ito ay isang pinagsama-sama wika. 69 00:03:43,580 --> 00:03:45,870 Ngunit makikita mo na ang ilang mga sa mga tampok na ginagamit namin 70 00:03:45,870 --> 00:03:50,650 payagan ito upang magamit din sa isang bit tulad ng isang naisalin paraan rin. 71 00:03:50,650 --> 00:03:56,350 >> Ang isang pulutong ng mga syntax ay hiram mula sa C. Ito ay batay at nakasulat sa C. 72 00:03:56,350 --> 00:04:00,400 At sa gayon ay makikita natin na may isang pulutong ng mga takeaways 73 00:04:00,400 --> 00:04:04,450 mula sa iyong mga umiiral na kaalaman mula sa C na aming makakaya port sa Swift. 74 00:04:04,450 --> 00:04:07,290 >> Ngunit may mga bagay na gawin itong tunay na naiiba mula sa C. 75 00:04:07,290 --> 00:04:08,860 Ito ay napaka-Matindi-type. 76 00:04:08,860 --> 00:04:10,380 May automatic memory management. 77 00:04:10,380 --> 00:04:13,170 Hindi ka pagpunta sa may sa gamitin ang malloc o libre kahit saan. 78 00:04:13,170 --> 00:04:15,110 Ito ay dinisenyo para sa mga pahayag. 79 00:04:15,110 --> 00:04:19,480 Kaya sa ibang salita, maaari mong gamitin ito sa lahat ng uri ng konteksto, mula sa Apple Watch 80 00:04:19,480 --> 00:04:26,290 sa iPhone ang lahat ng mga paraan ng hanggang sa OS X, at kahit ilang mga server, kahit na ang ilang scripting. 81 00:04:26,290 --> 00:04:28,400 Ngunit kami ay makita na ang mga suporta para sa scripting 82 00:04:28,400 --> 00:04:31,360 ay hindi pa lubos na may bilang ito ay sa iba pang mga wika. 83 00:04:31,360 --> 00:04:34,930 Kaya malamang makikita mo ang gamit ito eksklusibo para sa pag-unlad 84 00:04:34,930 --> 00:04:37,060 sa iyong Mac o sa iyong iPhone. 85 00:04:37,060 --> 00:04:40,150 >> At ito ay may maraming mga modernong mga tampok. 86 00:04:40,150 --> 00:04:43,380 At ng maraming mga bagay na ito ay mga bagay-bagay na kami ay pagpunta sa subukan sa address na ngayon, 87 00:04:43,380 --> 00:04:47,590 kundi pati na rin ang aming mga paksa na lantaran, maaari naming italaga ang buong kurso. 88 00:04:47,590 --> 00:04:50,140 Sa katunayan, ang CS 51, na kung saan ay inaalok sa susunod na semestre, 89 00:04:50,140 --> 00:04:53,990 naka-focus sa isang pulutong sa mga paksang ito na inilarawan sa ibaba. 90 00:04:53,990 --> 00:04:56,781 Kaya maaari mong gastusin sa isang buong semester pag-unawa sa mga bagay na ito. 91 00:04:56,781 --> 00:04:58,530 Ngunit kami ay pagpunta sa subukan upang makuha sa pamamagitan ng mga ito 92 00:04:58,530 --> 00:05:00,800 hindi bababa sa sapat na iyong maaaring maunawaan kung ano ang 93 00:05:00,800 --> 00:05:03,700 nangyayari kapag ikaw ay tumingin sa isang Swift program 94 00:05:03,700 --> 00:05:07,310 at ma-hack ang iyong paraan sa pamamagitan ng ito para sa pangwakas na proyekto. 95 00:05:07,310 --> 00:05:10,780 >> Ngayon ay isa sa mga pinakamahusay na paraan na maaari mong makakuha ng karagdagang impormasyon tungkol sa mga ito 96 00:05:10,780 --> 00:05:14,700 ay lantaran sa pamamagitan lamang ng Apple ibinigay na dokumentasyon para sa Swift. 97 00:05:14,700 --> 00:05:16,930 May isang pulutong ng mga API na magagamit. 98 00:05:16,930 --> 00:05:21,170 At ito ay isang mahusay na home base para sa iyo ang hahanapin, tiyak na mga bagay na iyong 99 00:05:21,170 --> 00:05:23,020 nais na gawin na may API na kinasasangkutan ng iOS. 100 00:05:23,020 --> 00:05:26,350 Kung nais mong gamitin ang camera para sa Halimbawa, maaari mong simulan ang hinahanap dito, 101 00:05:26,350 --> 00:05:32,540 at gamitin din ang Google at stack Umaapaw na gagawin mo sa normal. 102 00:05:32,540 --> 00:05:36,670 >> Ang anumang mga katanungan sa mga ito bago namin tumalon sa kanan? 103 00:05:36,670 --> 00:05:37,880 Lahat tama. 104 00:05:37,880 --> 00:05:38,700 Ni ilipat sa. 105 00:05:38,700 --> 00:05:42,620 >> Kaya una, mayroon akong isang bilang ng mga halimbawa ng mga file. 106 00:05:42,620 --> 00:05:46,040 At ako pagpunta sa subukan sa hakbang pamamagitan ng mga ito relatibong mabilis. 107 00:05:46,040 --> 00:05:49,190 Ito ang Hello World file para sa Swift. 108 00:05:49,190 --> 00:05:51,050 Ito ay napaka-simple. 109 00:05:51,050 --> 00:05:54,360 May paraan higit pang mga komento kaysa sa may mga aktwal na code. 110 00:05:54,360 --> 00:05:57,100 Pansinin ang aktwal na code ay pinakailalim sa 14 linya. 111 00:05:57,100 --> 00:05:57,980 Ito sabi print. 112 00:05:57,980 --> 00:05:59,820 At pagkatapos ay ito ay isang function na tawag. 113 00:05:59,820 --> 00:06:03,010 Kami ay pagpasa sa mga ito ng isang string na tinatawag Kamusta cs50. 114 00:06:03,010 --> 00:06:04,750 Pansinin na walang semicolon. 115 00:06:04,750 --> 00:06:07,010 Pansinin na walang int main. 116 00:06:07,010 --> 00:06:10,392 May wala sa mga cruft na namin ay may C. 117 00:06:10,392 --> 00:06:15,020 Kapag kami ay gumagamit Swift sa ganitong paraan, na kung saan ay lamang na nakasulat sa isang file ng teksto 118 00:06:15,020 --> 00:06:18,340 at naka-imbak sa aking computer, at pagkatapos ay Maaari ko ba itong itala at patakbuhin ito. 119 00:06:18,340 --> 00:06:20,920 >> Pansinin na dito ako hindi gamit ang CS50 IDE. 120 00:06:20,920 --> 00:06:24,460 Ipinapalagay na ako tumatakbo at na ako sa OS X, 121 00:06:24,460 --> 00:06:27,870 at na ako na naka-install Xcode na ito sa machine sa order para sa 122 00:06:27,870 --> 00:06:29,080 upang aktwal na function. 123 00:06:29,080 --> 00:06:33,349 Ngunit ito ay lamang ng isang normal na text file na maaari naming pagkatapos ay sumulat ng libro at i-edit. 124 00:06:33,349 --> 00:06:34,890 Kaya sabihin makita kung paano talaga gumagana ito. 125 00:06:34,890 --> 00:06:37,430 Paano kung gusto kong sumulat ng libro ito? 126 00:06:37,430 --> 00:06:40,450 swiftc 1.swift. 127 00:06:40,450 --> 00:06:42,960 Pagkatapos ng isang sandali o dalawa, ito ay makikita na mayroon kami ngayon 128 00:06:42,960 --> 00:06:45,360 pinagsama-sama na ito sa isang file na tinatawag na 1. 129 00:06:45,360 --> 00:06:51,090 At ngayon ay naka-print na namin ang aming CS50, aming Hello World application sa halip. 130 00:06:51,090 --> 00:06:54,690 >> Pansinin ang isa sa iba pang mga bagay tulad ng well ay na sa pamamagitan ng default, 131 00:06:54,690 --> 00:07:00,090 hindi namin ay may sa input a / n-print ng isang bagong linya. 132 00:07:00,090 --> 00:07:05,315 Sa pamamagitan ng default, ang function print in Swift ay i-print ang isang bagong linya para sa iyo. 133 00:07:05,315 --> 00:07:09,284 Maaari mong ipasa ang isang opsyonal na dagdag na parameter upang sabihin dito na hindi na gawin ito. 134 00:07:09,284 --> 00:07:10,950 Ngunit ang Google para sa karagdagang impormasyon tungkol sa mga iyon. 135 00:07:10,950 --> 00:07:13,450 Sa pamamagitan ng default, ito ay gawin ang mga linya print. 136 00:07:13,450 --> 00:07:16,420 >> Sabihin ilipat sa Lahat ng karapatan, kaya hayaan pagkatapos ay sa ilang iba pang mga bagay. 137 00:07:16,420 --> 00:07:18,620 Kaya kung paano namin aktwal na matukoy ang mga variable? 138 00:07:18,620 --> 00:07:21,960 Maaari naming gawin na gamit isa sa dalawang paraan. 139 00:07:21,960 --> 00:07:26,122 At ang isa na gusto kong sabihin sa iyo tungkol sa una ay ang kahulugan let. 140 00:07:26,122 --> 00:07:27,830 At ito ay mahalaga dahil epektibo 141 00:07:27,830 --> 00:07:30,240 kung ano ang aming ginagawa ay pagtukoy sa isang pare-pareho. 142 00:07:30,240 --> 00:07:34,010 Kami ay pagpunta upang lumikha ng isang variable, o sa halip ng isang pare-pareho na tinatawag na pangalan, 143 00:07:34,010 --> 00:07:38,200 magbigay sa mga ito ang ilang mga data-- in kasong ito, ang string Dan. 144 00:07:38,200 --> 00:07:40,630 Ngunit sa pamamagitan ng paggamit na ito ay hahayaan keyword, kami ay sinasabi 145 00:07:40,630 --> 00:07:43,860 na ito variable-- o muli constant-- tinatawag 146 00:07:43,860 --> 00:07:46,220 pangalan ay hindi pagpunta sa mabago. 147 00:07:46,220 --> 00:07:50,120 Ito ay pagpunta sa maging walang pagbabago sa kabuuan ng ang tagal ng programa na ito 148 00:07:50,120 --> 00:07:53,100 o sa buong tagal ng konteksto 149 00:07:53,100 --> 00:07:55,390 na variable na ito ay magagamit. 150 00:07:55,390 --> 00:08:00,096 >> Ito ay talagang mahalaga na kapag mayroon kang ilang mga data na ito ay hindi 151 00:08:00,096 --> 00:08:02,970 pagpunta sa pagbabago sa iyong programa, at makikita mo ang isang iba't ibang mga halimbawa 152 00:08:02,970 --> 00:08:06,790 tungkol sa kapag gusto naming gamitin hayaan kumpara sa iba pang mga syntax, 153 00:08:06,790 --> 00:08:11,040 ito ay mahalaga na gamitin mo hayaan hangga't maaari dahil ito Inaabisuhan 154 00:08:11,040 --> 00:08:13,740 ang wika na ito ay hindi pagpunta sa ay nagbago, 155 00:08:13,740 --> 00:08:16,590 at ang tunay na ito ay maaaring gumanap isang pulutong ng mga pag-optimize 156 00:08:16,590 --> 00:08:19,560 upang mapabuti ang bilis at ang kaligtasan ng inyong programa. 157 00:08:19,560 --> 00:08:24,480 At sa pamamagitan ng kaligtasan, hindi ko ibig sabihin ng ipaalam ito crash sa mga nakatutuwang mga error 158 00:08:24,480 --> 00:08:27,910 upang tayo'y maging bihasa sa nakikita sa C. 159 00:08:27,910 --> 00:08:32,460 >> Pagkatapos ay maaari naming gamitin ang string agaw sa encapsulate ito sa loob ng isang string. 160 00:08:32,460 --> 00:08:35,200 Kaya maaari naming makita na ito sa print linya, i-print hello, 161 00:08:35,200 --> 00:08:38,950 at pagkatapos ay gumagamit ng backslash open parens, at pagkatapos ay ang pangalan ng aking variable, 162 00:08:38,950 --> 00:08:41,809 sa kasong ito pare-pareho, isara ang panaklong. 163 00:08:41,809 --> 00:08:46,400 Mahalagang ako pagkatapos ay inilagay ang mga nilalaman ng pangalan ng variable na tinatawag na ito 164 00:08:46,400 --> 00:08:50,240 sa loob ng string at pagkatapos ay pag-print ang resulta doon. 165 00:08:50,240 --> 00:08:54,070 >> May isa pang pagbabago sa file na ito na kung saan ay na mayroon ako, sa pinakadulo itaas, 166 00:08:54,070 --> 00:08:57,340 ilagay sa isang shebang line, kung saan talaga lang tumutukoy 167 00:08:57,340 --> 00:09:00,180 na gusto kong gamitin ang Swift interpreter, na 168 00:09:00,180 --> 00:09:04,190 Nangangahulugan ito na hindi ko na kailangang sumulat ng libro na ito partikular na programa. 169 00:09:04,190 --> 00:09:06,567 Maaari ko bang patakbuhin lamang ito tulad ng kanyang sariling script. 170 00:09:06,567 --> 00:09:09,400 Ngunit ito ay, sa kasong ito, sa likod ng mga eksena na naipon at pagkatapos ay 171 00:09:09,400 --> 00:09:10,030 tumakbo. 172 00:09:10,030 --> 00:09:13,540 Ito ay hindi nakikita lamang sa amin. 173 00:09:13,540 --> 00:09:15,880 >> Sabihin ilipat sa Lahat ng karapatan, kaya hayaan. 174 00:09:15,880 --> 00:09:19,650 Kaya mayroong isang bit ng panlilinlang na lamang ang nangyari noon. 175 00:09:19,650 --> 00:09:23,230 Ipinakita ko sa inyo na ako maaaring tukuyin ang isang pare-pareho. 176 00:09:23,230 --> 00:09:25,490 At ako ay maaaring magbigay ng ilang mga data na gawin ito. 177 00:09:25,490 --> 00:09:29,240 Ngunit sa kasong ito, ang paunawa na ako ay hindi talagang tukuyin ang uri ng data 178 00:09:29,240 --> 00:09:29,820 na ito ay. 179 00:09:29,820 --> 00:09:32,780 At iyon ay dahil sa tagatala, Swift Maaari 180 00:09:32,780 --> 00:09:36,910 magpakilala ang mga uri ng data na batay lamang sa data na ako ilagay sa ito. 181 00:09:36,910 --> 00:09:41,760 Dahil alam ng mga ito na sa pamamagitan ng pagsusuri na ito variable dito mismo, ang data na ito right 182 00:09:41,760 --> 00:09:43,370 dito, alam na ito ay isang string. 183 00:09:43,370 --> 00:09:48,690 At kaya ito pare-pareho ang pangalan ay samakatuwid magiging pati isang string. 184 00:09:48,690 --> 00:09:52,730 >> Ngunit maaari din naming maging tahasan tungkol sa mga uri na 185 00:09:52,730 --> 00:09:55,790 kami ay pagpunta upang gamitin para sa constants o mga variable 186 00:09:55,790 --> 00:10:01,590 sa pamamagitan ng paggamit na ito syntax instead-- hayaan name colon String katumbas 187 00:10:01,590 --> 00:10:05,530 Dan, na sa kasong ito ay nangangahulugan hindi namin pagpunta upang tukuyin ang isang pare-pareho na tinatawag na pangalan. 188 00:10:05,530 --> 00:10:07,150 Ito ay pagpunta sa maging ng uri String. 189 00:10:07,150 --> 00:10:10,550 At ang halaga ay magiging Dan. 190 00:10:10,550 --> 00:10:12,550 Ngayon ang iba pang mga paraan na maaari naming lumikha variables-- 191 00:10:12,550 --> 00:10:15,549 at ang mga ito ay maaaring mabago ng mga variable, kung saan ay nangangahulugan na tayo, sa katunayan, pagpunta 192 00:10:15,549 --> 00:10:19,670 na baguhin ang kanilang mga nilalaman sa ibang araw sa tagal ng konteksto 193 00:10:19,670 --> 00:10:23,890 na variable na defined-- namin sa halip ng paggamit ng var keyword ipaalam. 194 00:10:23,890 --> 00:10:27,400 Ngunit muli, sa pamamagitan ng default, maliban kung alam mo na kailangan mo upang manipulahin ang data na iyon, 195 00:10:27,400 --> 00:10:30,510 subukang gamitin ipaalam para pagpapabuti ng pagganap. 196 00:10:30,510 --> 00:10:33,740 >> Sa kasong ito, pagkatapos ay maaari ko tukuyin ang uri ng data 197 00:10:33,740 --> 00:10:37,650 na inaasahan namin na maging sa loob ng ito ng mga bagong variable na tinatawag na label. 198 00:10:37,650 --> 00:10:38,800 Ito ay pagpunta sa maging isang string. 199 00:10:38,800 --> 00:10:43,030 At kami ay pagpunta sa pagkatapos ay pagdugtungin dalawang string magkasama, ang string hello, 200 00:10:43,030 --> 00:10:48,070 at ang string na kinakatawan ng mga variable, o sa halip ang constant name. 201 00:10:48,070 --> 00:10:50,660 >> Kaya ito ay dahil sa ganda ito ay medyo PHP tulad ng sa na namin 202 00:10:50,660 --> 00:10:52,250 Mayroon napakadaling string pagdudugtong. 203 00:10:52,250 --> 00:10:56,350 Kami ay hindi awtomatikong kung gumamit ng anumang uri ng memory management 204 00:10:56,350 --> 00:11:00,580 upang dagdagan ang laki at gawin anumang uri ng mga nakakatawang bagay doon. 205 00:11:00,580 --> 00:11:05,040 Ito ay gumagana bilang ang tunay na kami ay inaasahan. 206 00:11:05,040 --> 00:11:09,370 >> Lahat ng karapatan, anumang mga katanungan sa mga ito? 207 00:11:09,370 --> 00:11:12,520 >> Ngayon ang iba pang mga dahilan na kailangan naming mayroon kang kakayahan 208 00:11:12,520 --> 00:11:15,490 para ma-define kung ano uri ng variable data ay 209 00:11:15,490 --> 00:11:18,170 ay dahil sa kung minsan ay hindi kami Gusto upang magpasimula variable 210 00:11:18,170 --> 00:11:21,080 kasama ang ilang mga data sa punto ng kahulugan. 211 00:11:21,080 --> 00:11:23,500 Kaya sa kasong ito, sabihin natin na gusto kong simulan inputting 212 00:11:23,500 --> 00:11:25,040 sa ilang mga grado sa isang grade book. 213 00:11:25,040 --> 00:11:27,530 Well alam ko na ang isa sa mga variable na gusto kong maging 214 00:11:27,530 --> 00:11:30,280 ay magiging isang nagbabago grade. 215 00:11:30,280 --> 00:11:33,010 At alam din natin na tayo gusto mo itong maging isang integer. 216 00:11:33,010 --> 00:11:36,030 Pero siguro hindi namin pa may magagamit grade na iyon. 217 00:11:36,030 --> 00:11:39,570 >> Sa Swift, kailangan mong tukuyin ang uri ng data 218 00:11:39,570 --> 00:11:44,000 na nauugnay sa isang variable o isang ipaalam sa pare-pareho ang 219 00:11:44,000 --> 00:11:47,840 bago maaari mong aktwal na gamitin ang variable na iyon. 220 00:11:47,840 --> 00:11:51,170 Dahil ito ay malakas na nag-type, mayroon kang mag-ugnay ng uri 221 00:11:51,170 --> 00:11:52,890 may mga variable na ito. 222 00:11:52,890 --> 00:11:56,120 >> Kaya sa kasong ito, kung hindi ko na hindi maayos initialize ang unang na may ilang mga halaga, 223 00:11:56,120 --> 00:12:00,520 pagkatapos ay kailangan ko upang sabihin sa Swift ano Inaasahan ko ang uri ng data na. 224 00:12:00,520 --> 00:12:02,650 At ito ay pagpunta sa mananatiling na parehong uri ng data 225 00:12:02,650 --> 00:12:05,780 sa buong kasaysayan ng programang ito. 226 00:12:05,780 --> 00:12:10,050 >> Ngayon maaari mong matukso sa lalong madaling Ako ay may ginawa ito variable grade 227 00:12:10,050 --> 00:12:13,530 at ibinigay ito ng isang integer ng 100, ngayon kung ako 228 00:12:13,530 --> 00:12:18,540 nais na subukan upang pagdugtungin isang string na may na integer, 229 00:12:18,540 --> 00:12:21,610 maaaring matukso upang pa ring gamitin na string pagdudugtong operator 230 00:12:21,610 --> 00:12:24,500 tulad ng ginawa namin lamang ng ilang linya ng bago. 231 00:12:24,500 --> 00:12:26,460 Ngunit sa kasamaang palad, tunay na ito ay hindi 232 00:12:26,460 --> 00:12:29,270 magtrabaho, dahil ikaw ay mahalagang gumaganap 233 00:12:29,270 --> 00:12:32,380 isang operasyon sa dalawang iba't ibang uri. 234 00:12:32,380 --> 00:12:36,856 >> Ngayon na ito ay ibang-iba mula sa iba pang wika tulad ng PHP na kung saan ay tunay na 235 00:12:36,856 --> 00:12:38,480 loosey gusi sa kanilang mga uri ng mga uri. 236 00:12:38,480 --> 00:12:40,030 Sila ay tulad lamang, oo, kahit na ano, Wala akong pakialam. 237 00:12:40,030 --> 00:12:42,710 Lang bigyan ako ng isang uri, at siguro kailangan kong gawin ang mga tamang bagay. 238 00:12:42,710 --> 00:12:46,060 >> Sa kasong ito, Swift ay lubhang mahigpit tungkol sa mga uri 239 00:12:46,060 --> 00:12:47,350 na ikaw ay may pakikisama. 240 00:12:47,350 --> 00:12:50,700 Ito kabuuan operator o pagdudugtong operator 241 00:12:50,700 --> 00:12:54,400 may mahalagang isang pares ng mga iba't ibang posibleng mga opsyon. 242 00:12:54,400 --> 00:12:56,970 Maaari mong gawin ang kabuuan may integer, o mo 243 00:12:56,970 --> 00:13:00,870 maaaring gawin string pagdudugtong, at marahil ilang iba pang mga bagay pati na rin. 244 00:13:00,870 --> 00:13:05,550 Pero kung na operator ay hindi kinikilala kung ano ang nasa magkabilang panig ng mga ito, 245 00:13:05,550 --> 00:13:10,452 o sa halip ang mga kumbinasyon ng mga dalawang uri, ay hindi kung ano ito ay umaasa, 246 00:13:10,452 --> 00:13:11,910 pagkatapos ito ay pagpunta sa maging sanhi ng isang pagkabigo. 247 00:13:11,910 --> 00:13:16,690 >> Kaya sa kasong ito, kung ano ang ibig sabihin ng na magkaroon ng isang string plus isang integer? 248 00:13:16,690 --> 00:13:18,880 Well sa konteksto ng na ito, malamang na gusto namin 249 00:13:18,880 --> 00:13:21,990 upang gawin ang isang operasyon string pagdudugtong. 250 00:13:21,990 --> 00:13:26,420 Ngunit ng mga kurso sa computer ay hindi na uri ng konteksto. 251 00:13:26,420 --> 00:13:29,950 At kaya kailangan namin upang magbigay ng na ang karagdagang impormasyon 252 00:13:29,950 --> 00:13:32,390 upang ipaalam ito alam kung ano ito ay na gusto naming gawin. 253 00:13:32,390 --> 00:13:36,860 >> Kaya sa ibang salita, ang katunayan na Swift ay malakas na nag-type 254 00:13:36,860 --> 00:13:39,520 ay nangangahulugan na ikaw ay may sa gawin ang isang maliit na piraso ng karagdagang trabaho 255 00:13:39,520 --> 00:13:42,100 upang makakuha ng mga ito upang patakbuhin ang paraan na gusto mo. 256 00:13:42,100 --> 00:13:43,710 Ngunit bilang isang resulta, ito ay mas ligtas. 257 00:13:43,710 --> 00:13:46,290 At sa sandaling ikaw ay kumuha ng sa account ang mga uri, 258 00:13:46,290 --> 00:13:49,300 mga bagay na lantaran simulan lamang upang gumana nang mahusay. 259 00:13:49,300 --> 00:13:52,520 >> Kaya sa kasong ito, at pagkatapos namin na gagawin gumanap string pagdudugtong 260 00:13:52,520 --> 00:13:56,040 sa pamamagitan ng tahasang paghahagis ang integer sa isang string 261 00:13:56,040 --> 00:13:58,490 sa pamamagitan ng pambalot na ito sa kategoryang ito capital S String function, 262 00:13:58,490 --> 00:14:03,510 at pagkatapos gamit ang string pagdudugtong operator upang baguhin ang aming mga variable label, 263 00:14:03,510 --> 00:14:06,280 at pagkatapos ay i-print ito. 264 00:14:06,280 --> 00:14:08,420 >> Sa ngayon, kaya mabuti? 265 00:14:08,420 --> 00:14:12,020 Lahat ng mga karapatan, sabihin ilipat sa ipaalam. 266 00:14:12,020 --> 00:14:16,300 >> Ngayon may mga iba't-ibang uri ng data uri na maaari naming gamitin sa Swift. 267 00:14:16,300 --> 00:14:21,620 Habang ikaw ay naging bihasa sa, maaari naming lumikha ng isang nagbabago array. 268 00:14:21,620 --> 00:14:26,140 At na array ay maaari lamang naglalaman ng isang solong uri. 269 00:14:26,140 --> 00:14:30,360 >> Kaya sa kasong ito, kami ay pagpunta upang lumikha ng maaaring mabago ng isang array ng mga integer, na 270 00:14:30,360 --> 00:14:34,800 tatawagan namin marka, at kami ay maaaring upang mag-imbak na sa square bracket 271 00:14:34,800 --> 00:14:38,650 format tulad mo na lumaki sanay sa sa iba't-ibang mga wika. 272 00:14:38,650 --> 00:14:41,150 Ngunit mapansin na dito hindi namin pagtukoy ng isang pares ng mga bagay-bagay. 273 00:14:41,150 --> 00:14:45,350 marka ay maaaring mabago ng isang variable-- hindi namin gamitin ang let keyword. 274 00:14:45,350 --> 00:14:49,620 Kaya ito ay nangangahulugan na maaari naming pagkatapos ay baguhin ang mga nilalaman ng array. 275 00:14:49,620 --> 00:14:53,420 Ito ay uri ng Array int, at maaari naming sabihin na ang 276 00:14:53,420 --> 00:14:56,260 batay sa mga square bracket dito. 277 00:14:56,260 --> 00:14:58,930 >> Ngayon ay isa sa mga bagay na maganda tungkol dito ay na namin 278 00:14:58,930 --> 00:15:02,310 magkaroon ng access sa isang pulutong ng mga karagdagang impormasyon 279 00:15:02,310 --> 00:15:07,110 tungkol sa mga array lamang gamit ang ilang mga simpleng dot notation. 280 00:15:07,110 --> 00:15:10,500 Kaya halimbawa, nagbibigay grades.count sa amin 281 00:15:10,500 --> 00:15:14,820 ang bilang ng mga item na umiiral sa na array, na kung saan namin pagkatapos ma-access pretty 282 00:15:14,820 --> 00:15:19,090 madali lang gamit na notation tuldok. 283 00:15:19,090 --> 00:15:21,830 >> Kung nais mong magdagdag ng mga karagdagang item sa array na ito, 284 00:15:21,830 --> 00:15:27,220 hindi mo maaaring gawin ang mga estilo PHP kung saan mo lamang malinaw na tukuyin, 285 00:15:27,220 --> 00:15:30,910 sa isang ibinigay na index, ang ilang mga halaga na gusto mong ipasok. 286 00:15:30,910 --> 00:15:37,210 Sa halip, gamitin ang ikakabit Ang pamamaraan sa uri ng array 287 00:15:37,210 --> 00:15:40,920 upang maidagdag ang item na iyon, 95, sa listahan na ito. 288 00:15:40,920 --> 00:15:45,990 >> Kaya ngayon ito array ay ang mga sumusunod contents-- 100, 0, 90, 85. 289 00:15:45,990 --> 00:15:49,270 At ngayon ko na nakadugtong namin 95 pati na rin sa mga iyon. 290 00:15:49,270 --> 00:15:51,830 >> May iba pang paraan maaari naming ikabit ang mga bagay-bagay. 291 00:15:51,830 --> 00:15:55,030 Maaari mong aktwal na gamitin ang isang kabuuan operator, 292 00:15:55,030 --> 00:15:59,200 na kung saan ay kahulugan bilang isang array na Magkabit operasyon. 293 00:15:59,200 --> 00:16:04,680 At maaari mong pagkatapos ay idagdag ang isa pang array, na ang mga nilalaman ay 70 at 80, 294 00:16:04,680 --> 00:16:05,560 sa na array. 295 00:16:05,560 --> 00:16:08,250 Kaya ngayon kami ay may mga mga nilalaman sa mga variable na ito 296 00:16:08,250 --> 00:16:17,220 grades-- 100, 0, 90, 85, 95, 70, at 80. 297 00:16:17,220 --> 00:16:21,850 Ito ay lamang ng isang magandang maliit na syntactic asukal na nagbibigay Swift sa amin. 298 00:16:21,850 --> 00:16:23,850 >> Kaya kung gusto naming sabihin sa ilang mga marka, hindi namin marahil 299 00:16:23,850 --> 00:16:27,340 pagpunta sa nais na umulit sa paglipas ng bawat item na ito sa loop. 300 00:16:27,340 --> 00:16:32,150 At tayong, sa Swift, ang paniwala ng isang para sa loop tulad ng iyong inaasahan. 301 00:16:32,150 --> 00:16:35,350 Ngunit ang paraan na nagpapahiwatig ng namin isang hanay ay bahagyang naiiba. 302 00:16:35,350 --> 00:16:37,790 Kaya sa kasong ito, upang sabihin sa ilang ang lahat ng bagay, bibigyan namin ng 303 00:16:37,790 --> 00:16:40,650 pagpunta upang lumikha ng isang pansamantalang variable na tinatawag na sum sa order para sa amin 304 00:16:40,650 --> 00:16:42,580 upang mapanatili ang bilang na ito. 305 00:16:42,580 --> 00:16:44,430 >> At mapansin ang aming para sa loop construction dito. 306 00:16:44,430 --> 00:16:46,820 Para sa index sa 0 .. 00:16:51,480 308 00:16:51,480 --> 00:16:57,390 Kaya ito konstruksiyon, 0 .. 00:17:01,860 sinasabi na kami ay pagpunta upang lumikha ng isang hanay ng mga integer mula up 0 310 00:17:01,860 --> 00:17:05,750 ngunit hindi kasama grades.count. 311 00:17:05,750 --> 00:17:09,577 Kaya ito ay 0, 1, 2, 3, 4, 5, hanggang gayunpaman maraming isa 312 00:17:09,577 --> 00:17:10,410 bago grades.count. 313 00:17:10,410 --> 00:17:14,160 >> Kaya ito ay iba kaysa sa kung paano namin Gusto karaniwang ginagamit para sa mga loop 314 00:17:14,160 --> 00:17:18,569 kung saan nais mong magkaroon ng ilang mga index variable, itakda ito katumbas ng 0 sa una, 315 00:17:18,569 --> 00:17:25,480 at pagkatapos ay isama ang hanggang sa ilang mga halaga na mas mababa kaysa sa bilang ng mga ite 316 00:17:25,480 --> 00:17:27,140 sa na array. 317 00:17:27,140 --> 00:17:29,820 >> Kaya doon ay isang pagbabago sa ito, talaga, 318 00:17:29,820 --> 00:17:35,010 na kung saan ay nagbibigay-daan sa amin upang tunay madali magtakda ng iba't ibang mga uri ng mga saklaw. 319 00:17:35,010 --> 00:17:40,570 Kung babaguhin mo ang hanay na ito sa tatlong tuldok, 0 ... grade.count, 320 00:17:40,570 --> 00:17:45,120 ito ay kumakatawan sa hanay na 0 upang grades.count inklusibo, 321 00:17:45,120 --> 00:17:49,260 ibig sabihin na ang number na din pagkatapos ay kasama sa saklaw na iyon. 322 00:17:49,260 --> 00:17:52,110 >> Ngunit ito ay lubhang madaling gamitin para sa mga eksaktong mga bagay, 323 00:17:52,110 --> 00:17:54,590 kapag kami ay may upang magsagawa ng iteration sa paglipas ng loop 324 00:17:54,590 --> 00:17:59,630 dahil sa mga ini-index ay zero-index, tulad ng nakita natin sa ibang wika 325 00:17:59,630 --> 00:18:02,360 din. 326 00:18:02,360 --> 00:18:05,210 Ang anumang mga katanungan sa mga ito para sa loop? 327 00:18:05,210 --> 00:18:10,660 >> Kaya may implicit kahulugan ng index variable na ito, 328 00:18:10,660 --> 00:18:14,350 halaga na nagsisimula sa 0, at patuloy sa bawat loop na pag-ulit 329 00:18:14,350 --> 00:18:17,950 upang dagdagan ng 1 hanggang isang punto na katumbas ng grades.count, 330 00:18:17,950 --> 00:18:20,380 at sa puntong, loop aborts. 331 00:18:20,380 --> 00:18:23,730 >> Pansinin na sa aming string agaw dito, 332 00:18:23,730 --> 00:18:26,910 maaari naming talagang gawin ang ilang mga simpleng manipulations sa mga halagang iyon. 333 00:18:26,910 --> 00:18:31,230 Kaya index plus 1 ay talagang gumanap ng isang kabuuan ng halaga na 334 00:18:31,230 --> 00:18:34,780 dahil index ay, sa kasong ito, isang integer. 335 00:18:34,780 --> 00:18:37,810 At sa puntong iyon, ito ay pagkatapos ay i-convert sa isang string 336 00:18:37,810 --> 00:18:42,230 at interpolated sa ang string na ito dito, at naka-print out tulad ng gagawin namin inaasahan. . 337 00:18:42,230 --> 00:18:44,520 >> At ang ganda ng bagay tungkol sa mga array dito ay 338 00:18:44,520 --> 00:18:50,730 na hindi namin din maaaring magkaroon ng fetching halaga at pagtatakda ng mga halaga 339 00:18:50,730 --> 00:18:54,080 gamit ang square bracket pagtatanda bilang nasaksihan namin sa iba pang mga wika pati na rin. 340 00:18:54,080 --> 00:18:57,130 341 00:18:57,130 --> 00:19:01,030 >> Lahat ng karapatan, kaya mula dito, kami ngayon compute aming kabuuan ng lahat ng aming mga grado. 342 00:19:01,030 --> 00:19:02,780 Ngayon uri ng mga susunod na lohikal na hakbang ay 343 00:19:02,780 --> 00:19:07,580 upang gawin ang isang operasyon division upang mahanap ang average ng mga marka. 344 00:19:07,580 --> 00:19:10,150 Ngunit isang bagay na mahalaga dito ang nangyayari kung saan 345 00:19:10,150 --> 00:19:15,020 ay na sum na ito ay marahil isang integer. 346 00:19:15,020 --> 00:19:18,020 Ngunit kailangan namin upang magsagawa ng ilang mga uri ng double division. 347 00:19:18,020 --> 00:19:20,600 At ito ay magiging lubhang mahalaga kapag 348 00:19:20,600 --> 00:19:24,140 gusto naming gawin ang operasyon, dahil kung ano ang sinasabi ng mga kami 349 00:19:24,140 --> 00:19:28,430 ay na kailangan namin upang aktwal na gumanap ng division sa dalawang doubles. 350 00:19:28,430 --> 00:19:31,370 At muli, dahil Swift ay napaka-Matindi nai-type, 351 00:19:31,370 --> 00:19:36,760 kami ay dapat na malinaw na itakda ang lahat ng mga item upang doubles bago namin talagang 352 00:19:36,760 --> 00:19:38,300 gawin ang operasyon na iyon. 353 00:19:38,300 --> 00:19:40,550 >> Kaya sa order para sa amin upang gumanap ng double division, 354 00:19:40,550 --> 00:19:43,730 ito ay hindi sapat para sa isa lamang sa mga bagay na maging isang double. 355 00:19:43,730 --> 00:19:46,400 Pareho sa mga ito ay may na maging isang double sa order para sa matulin 356 00:19:46,400 --> 00:19:50,860 upang siguraduhin na ito ay kung ano ang gusto naming gawin. 357 00:19:50,860 --> 00:19:54,360 Kaya pagkatapos namin malinaw na pumili ng aktor ang kabuuan na kung saan namin nakalkula sa itaas 358 00:19:54,360 --> 00:19:58,970 at ang bilang ng mga grado sa doubles, at pagkatapos ay gawin na operasyon at store 359 00:19:58,970 --> 00:20:02,390 na ito sa bagong variable, o sa halip ang bagong constant tinatawag average, 360 00:20:02,390 --> 00:20:06,810 na kung saan ay magkakaroon ng kung ano ang uri, mo isipin? 361 00:20:06,810 --> 00:20:07,587 Double, oo. 362 00:20:07,587 --> 00:20:09,420 Kaya sa kasong ito, kami Hindi mo na kailangang tukuyin ito 363 00:20:09,420 --> 00:20:13,450 dahil ito ay maaaring natukoy na mula sa operasyon kung anong uri ng average na data 364 00:20:13,450 --> 00:20:14,730 magiging. 365 00:20:14,730 --> 00:20:19,025 At Swift ay karaniwang medyo magandang tungkol sa pagiging magagawang upang ipahiwatig ang mga uri. 366 00:20:19,025 --> 00:20:22,116 367 00:20:22,116 --> 00:20:24,200 >> Gusto mo bang makita ang mga ito tumakbo, o maaari ko bang ilipat sa? 368 00:20:24,200 --> 00:20:25,640 Gusto kong panatilihin ang pagpunta. 369 00:20:25,640 --> 00:20:28,130 Ang anumang mga katanungan sa anumang ng mga ito? 370 00:20:28,130 --> 00:20:28,630 Great. 371 00:20:28,630 --> 00:20:31,160 372 00:20:31,160 --> 00:20:35,010 >> Ngayon kami ay pagpunta upang simulan upang makakuha ng sa ang mabuting stuff-- function pagtukoy, 373 00:20:35,010 --> 00:20:39,090 at ng ilang iba pang mga uri na natatangi sa Swift na hindi mo pa 374 00:20:39,090 --> 00:20:41,620 makikita sa ibang wika hanggang sa puntong ito, 375 00:20:41,620 --> 00:20:46,290 ngunit sila ay naroroon sa iba pang mga ito ay wika na maaring mahanap sa susunod. 376 00:20:46,290 --> 00:20:48,210 Kaya unang kung nais mong upang tukuyin ang isang function, 377 00:20:48,210 --> 00:20:52,170 mong tukuyin ang mga ito sa funky salita function, at pagkatapos ay ang pangalan ng function, 378 00:20:52,170 --> 00:20:56,710 at pagkatapos ay sa mga panaklong, ang argumento na nais mo na ang pag-andar upang tanggapin. 379 00:20:56,710 --> 00:21:00,280 Ang argumento ay dapat ding specify-- generally-- 380 00:21:00,280 --> 00:21:05,010 ay dapat ding tukuyin ang uri ng data na ang mga ito, maliban kung maaari nilang i-natukoy. 381 00:21:05,010 --> 00:21:07,500 At kami na makita na ang maliit caveat sa loob lamang ng ilang sandali. 382 00:21:07,500 --> 00:21:09,920 >> Kaya sa kasong ito kami ay may isang function na tinatawag printGradeCount. 383 00:21:09,920 --> 00:21:12,840 Kami ay pagpunta sa tanggapin ang isang variable-- o sa halip na sa kasong ito, 384 00:21:12,840 --> 00:21:14,450 isang constant-- tinatawag gradebook. 385 00:21:14,450 --> 00:21:18,517 At ito ay pagpunta sa maging ng type array ng mga integer. 386 00:21:18,517 --> 00:21:20,600 Ngayon ay mayroong isang bagay na talagang mahalaga dito 387 00:21:20,600 --> 00:21:21,849 na gusto ko sa iyo upang maunawaan. 388 00:21:21,849 --> 00:21:27,560 Iyon ay na sa pamamagitan ng default, ang mga argumento na input sa function na ito ay 389 00:21:27,560 --> 00:21:34,380 tinukoy na may isang implicit let keyword, na nangangahulugan na hindi ko maaaring baguhin ito 390 00:21:34,380 --> 00:21:39,850 gradebook variable dito. 391 00:21:39,850 --> 00:21:43,360 At na uri ng mga may katuturan, dahil kayo ay dumadaan data in. 392 00:21:43,360 --> 00:21:45,860 At ikaw ay marahil hindi gusto upang maging nagbago mula sa ilalim mo. 393 00:21:45,860 --> 00:21:50,800 Ito ay posible na malinaw na banggitin na ito ay isang variable sa pamamagitan ng paglalagay 394 00:21:50,800 --> 00:21:52,070 ang var keyword dito. 395 00:21:52,070 --> 00:21:56,832 Ngunit iyon ay isang gotcha na kami Napansin tao ay tapos na sa nakaraan 396 00:21:56,832 --> 00:21:59,790 ay na ipinapalagay nila na ito ay pagpunta upang maging isang variable kapag, sa katunayan, ito 397 00:21:59,790 --> 00:22:02,640 ay isang pare-pareho. 398 00:22:02,640 --> 00:22:07,340 >> Lahat ng karapatan, kaya dito pagkatapos, sa kasong ito, kami ay hindi tumutukoy sa anumang uri return. 399 00:22:07,340 --> 00:22:09,460 Ipapakita namin sa iyo kung paano gawin na sa ilang sandali lamang. 400 00:22:09,460 --> 00:22:12,340 Ngunit mapansin na dito kami isang simpleng lamang kung ang condition. 401 00:22:12,340 --> 00:22:14,560 Kung ang gradebook ay walang laman, na sa kasong ito 402 00:22:14,560 --> 00:22:19,310 ay lamang ang mga ari-arian ng mga ito integer array, pagkatapos ay i-print namin ang isang bagay. 403 00:22:19,310 --> 00:22:23,100 Kung hindi man ang ginagawa namin sa ibang bagay. 404 00:22:23,100 --> 00:22:25,000 >> Medyo prangka sa ngayon ang tingin ko. 405 00:22:25,000 --> 00:22:27,960 Ngunit huminto sa akin kung mayroon kang anumang mga katanungan. 406 00:22:27,960 --> 00:22:33,350 >> Ngayon na ito function, average, tumatagal din ang ilang mga argumento, o sa halip ng isang argument, 407 00:22:33,350 --> 00:22:37,507 kung saan ay ang gradebook, at oras na ito ay pagpunta upang bumalik sa isang double type. 408 00:22:37,507 --> 00:22:39,340 Dahil ito ay computing ang average na at ito ay 409 00:22:39,340 --> 00:22:45,010 pagpunta sa aktwal na bumalik na computed average sa linya pagtawag. 410 00:22:45,010 --> 00:22:50,070 >> Sa kasong ito, kami tukuyin ang bumalik type pagkatapos ng isang arrow. 411 00:22:50,070 --> 00:22:53,260 At ito nga ang pakiramdam uri ng kakaiba sa unang. 412 00:22:53,260 --> 00:22:55,610 Ikaw na lumago bihasa sa pagtatakda ng mga return 413 00:22:55,610 --> 00:22:57,720 nagta-type sa harap ng mga pangalan ng function. 414 00:22:57,720 --> 00:23:00,310 Pero kung sa tingin mo ng mga ito sa mga tuntunin ng matematika, 415 00:23:00,310 --> 00:23:03,320 tulad ng kapag mayroon kang matematika na tukuyin ang isang function, 416 00:23:03,320 --> 00:23:06,807 Mayroon ka ng isang function na may ilang input, at ito ay gumagawa ng isang output. 417 00:23:06,807 --> 00:23:08,890 At na eksakto kung ano ang ito ay dapat na gayahin. 418 00:23:08,890 --> 00:23:12,460 At may isang pares ng mga iba pang mga wika na may katulad na syntax na rin, 419 00:23:12,460 --> 00:23:15,674 ngunit malamang na wala na mo na makikita sa CS50. 420 00:23:15,674 --> 00:23:17,090 Ngunit pa rin hindi malito sa pamamagitan ng mga ito. 421 00:23:17,090 --> 00:23:21,650 Arrow Ang ibig sabihin nito ay kung ano ang nangyayari na ibabalik sa kasong ito. 422 00:23:21,650 --> 00:23:23,650 OK, kaya kung paano tayo pupunta upang makalkula ang average? 423 00:23:23,650 --> 00:23:25,649 Well, kung ang gradebook Walang laman, kung sa gayon hindi namin 424 00:23:25,649 --> 00:23:30,731 pagpunta sa bumalik 0, na marahil isang makatwirang paraan upang matrato ito. 425 00:23:30,731 --> 00:23:32,980 Hindi ko alam, ay dumating ipaalam bumalik sa na sa ilang sandali. 426 00:23:32,980 --> 00:23:34,688 Ito ay maaaring hindi tunay maging isang makatwirang paraan 427 00:23:34,688 --> 00:23:38,310 mag-compute ng isang average kung kami ay may isang walang laman na markahan. 428 00:23:38,310 --> 00:23:41,260 >> Pagkatapos ay magpapadala kami lamang maisagawa ang aming kabuuan. 429 00:23:41,260 --> 00:23:43,900 Pansinin na dito kami talaga may isang kahaliling bersyon ng isang 430 00:23:43,900 --> 00:23:49,190 para sa loop, na nagpapahintulot sa amin upang umulit paglipas ng bawat isang item sa isang array 431 00:23:49,190 --> 00:23:53,630 at ilagay sa bawat elemento sa kanyang sariling variable. 432 00:23:53,630 --> 00:23:56,200 Sa pamamagitan ng pagtukoy ng grado sa gradebook, kung ano ang sinasabi ng mga kami 433 00:23:56,200 --> 00:24:00,560 ay na kami ay pagpunta sa kataon lamang lumikha ng isang bagong constant tinatawag 434 00:24:00,560 --> 00:24:05,180 grade na pagpunta sa kumakatawan bawat natatanging item sa gradebook 435 00:24:05,180 --> 00:24:06,769 sa bawat oras na ang para sa loop iterates. 436 00:24:06,769 --> 00:24:08,560 Kaya ang unang pagkakataon na ito ay tumakbo, grade ay 437 00:24:08,560 --> 00:24:09,800 ay ang unang item sa markahan. 438 00:24:09,800 --> 00:24:12,300 Ang ikalawang oras na ito ay ang ikalawang bagay, kaya sa at iba pa 439 00:24:12,300 --> 00:24:15,970 hanggang gradebook ay naubos mismo ng mga elemento. 440 00:24:15,970 --> 00:24:20,390 Pagkatapos namin ma-sum na grade sa ating kabuuan variable 441 00:24:20,390 --> 00:24:22,570 at bumalik sa aming average bilang namin nakita bago. 442 00:24:22,570 --> 00:24:25,670 443 00:24:25,670 --> 00:24:26,950 OK, anumang mga katanungan? 444 00:24:26,950 --> 00:24:27,699 Oo? 445 00:24:27,699 --> 00:24:28,990 Madla: Mayroon akong dalawang katanungan. 446 00:24:28,990 --> 00:24:33,586 Bilang isa, saka-sakali, maaari patakbuhin mo integer sa isang ito? 447 00:24:33,586 --> 00:24:35,604 Hindi kailangang maging isang double, ay ang tama? 448 00:24:35,604 --> 00:24:37,520 DAN AMRMENDARIZ: Maaari mo ulitin ang tanong na iyan? 449 00:24:37,520 --> 00:24:39,587 Madla: Maaari ko bang gawin integer bilang ang average? 450 00:24:39,587 --> 00:24:41,670 DAN AMRMENDARIZ: Maaari mo gawin integer bilang isang average? 451 00:24:41,670 --> 00:24:45,015 Kaya bumalik ang isang integer average sa halip ng isang double? 452 00:24:45,015 --> 00:24:48,204 >> Madla: Return-- mo Mayroon na ngayon sa ibaba. 453 00:24:48,204 --> 00:24:49,870 DAN AMRMENDARIZ: Kanan dito, bumalik 0.0? 454 00:24:49,870 --> 00:24:51,790 Madla: Oo, bumalik 0 lamang. 455 00:24:51,790 --> 00:24:56,590 Kaya ito ay alinman sa 80 o 85, ngunit hindi 85.2. 456 00:24:56,590 --> 00:24:59,465 >> DAN AMRMENDARIZ: Kaya sa kasong iyon, kaya may isang pares ng iba't ibang mga paraan 457 00:24:59,465 --> 00:25:00,090 upang sagutin na. 458 00:25:00,090 --> 00:25:02,760 Hayaan akong sagutin ang mga ito sa pagkakasunud-sunod. 459 00:25:02,760 --> 00:25:06,740 Kaya kapag gumawa ako lamang ang return ito 0, isang 0 ay isang integer value. 460 00:25:06,740 --> 00:25:09,730 At kaya na magiging sanhi ng isang error type para sa kasong ito 461 00:25:09,730 --> 00:25:13,210 dahil ito ay umaasa sa isang double ngunit pagkatapos ay bumabalik isang integer. 462 00:25:13,210 --> 00:25:16,770 Kung gusto ko upang bumalik sa isang integer, kaya ko. 463 00:25:16,770 --> 00:25:20,450 Maaari ko bang itakda ang uri ng return sa int, bumalik 0 dito, 464 00:25:20,450 --> 00:25:22,047 at hindi gumaganap double division. 465 00:25:22,047 --> 00:25:23,880 Ngunit pagkatapos kami ay magiging paggawa ng integer division. 466 00:25:23,880 --> 00:25:27,080 At kaya pagkatapos namin ay hindi makuha ang average na marahil namin inaasahan. 467 00:25:27,080 --> 00:25:29,210 Ngunit yes maaari naming baguhin ang mga uri sa na paraan. 468 00:25:29,210 --> 00:25:32,598 >> Madla: At pangalawa, ikaw may isa Double sa itaas. 469 00:25:32,598 --> 00:25:35,502 Ngunit pababa sa ibaba, kapag kayo gawin bumalik Double Double, 470 00:25:35,502 --> 00:25:38,280 na na awtomatikong bumabalik Double format. 471 00:25:38,280 --> 00:25:42,278 Bakit kailangan mo pa rin upang tukuyin ang mga ito sa arrow sa itaas na may isang double? 472 00:25:42,278 --> 00:25:45,010 >> DAN AMRMENDARIZ: So sa kaso, ito ay bahagi 473 00:25:45,010 --> 00:25:50,580 ng the-- kaya upang ulitin ang tanong, dahil sa ito ay implicit mula sa return 474 00:25:50,580 --> 00:25:56,030 uri dito, kung ano ang uri na ito ang tunay ay, kailangan namin upang maging malinaw sa Swift 475 00:25:56,030 --> 00:25:59,970 tungkol sa kung ano ang gusto naming bumalik sa labas ng function na ito 476 00:25:59,970 --> 00:26:02,690 kaya na kapag ito ay gumaganap type suri, maaari itong tiyakin 477 00:26:02,690 --> 00:26:05,850 na kung ano ang tunay na kami ay may nakasulat down sa ibaba ang tunay na umaayon sa mga iyon. 478 00:26:05,850 --> 00:26:10,225 Kaya ito ay uri ng tulad ng isang tseke sa iyong sarili uri ng mga sitwasyon. 479 00:26:10,225 --> 00:26:11,050 Ngunit may are-- 480 00:26:11,050 --> 00:26:12,560 >> Madla: [hindi marinig] palaso? 481 00:26:12,560 --> 00:26:19,490 >> DAN AMRMENDARIZ: May mga kaso kapag maaari naming tukuyin na namin maaari nang kataon lamang 482 00:26:19,490 --> 00:26:21,550 itakda ang uri ng return. 483 00:26:21,550 --> 00:26:23,940 Ngunit sa kasong ito, hindi ako isipin na gumana. 484 00:26:23,940 --> 00:26:26,190 May ilang iba pang mga syntax na namin makita sa ibang pagkakataon. 485 00:26:26,190 --> 00:26:30,320 486 00:26:30,320 --> 00:26:35,280 >> Lahat ng karapatan, kaya ito ang pinagmulan code ay Medyo naiiba 487 00:26:35,280 --> 00:26:41,839 dahil ito Pina-parse ng argumento mula sa ang pag-andar na kami ay pagtawag. 488 00:26:41,839 --> 00:26:44,130 Hayaan akong ipakita sa iyo kung paano ito gumagana bago namin ilipat talagang sa 489 00:26:44,130 --> 00:26:48,050 sa ilang mga kagiliw-giliw na mga bagay-bagay na nangyayari sa Swift. 490 00:26:48,050 --> 00:26:51,870 >> Kaya sa kasong ito, kung ako ay tatakbo lamang ito code, mapapansin na kung ano ang ginagawa nito 491 00:26:51,870 --> 00:26:54,900 is-- habang, ito uri ng ay nagbibigay sa akin ng isang kakaibang error. 492 00:26:54,900 --> 00:26:59,730 Kailangan ko upang pumasa ito sa isang pares ng mga integer bilang argument command line. 493 00:26:59,730 --> 00:27:06,220 Kaya tingnan natin, 150 at 80, at pindutin ang Enter upang malaman kung ano ang tunay na ito ay ginagawa. 494 00:27:06,220 --> 00:27:09,890 Ito ay tumatanggap ng bawat isa sa ang mga halagang ito bilang integer. 495 00:27:09,890 --> 00:27:12,040 Ito ay inputting ito sa isang markahan. 496 00:27:12,040 --> 00:27:14,470 At pagkatapos ay gumaganap ito na average ng pagkalkula 497 00:27:14,470 --> 00:27:16,650 at outputting na tulad ng gagawin namin inaasahan. 498 00:27:16,650 --> 00:27:19,950 >> Ngunit malinaw naman ay mayroong isang bagay na nangyayari sa may ito ang pagtanggi ng isang bagay 499 00:27:19,950 --> 00:27:23,300 isang bagay bilang isang integer. 500 00:27:23,300 --> 00:27:27,300 Bilang maaari mong isipin ang mula noong tayo ay pagharap sa mga argumento command line 501 00:27:27,300 --> 00:27:32,640 sa C at iba pang mga wika, ang unang Ika-0 item sa na argumento command line 502 00:27:32,640 --> 00:27:35,774 listahan ay ang pangalan ng utos na namin ang tunay na pinaandar. 503 00:27:35,774 --> 00:27:38,690 Kaya sa kasong ito, tingin lang ako looping higit sa lahat ng mga argumento command line. 504 00:27:38,690 --> 00:27:41,650 Ngunit hindi ako paggawa ng anumang uri ng pag-iisip suriin upang laktawan ang higit na nauna. 505 00:27:41,650 --> 00:27:45,920 Ako tahasan lamang o nang kataon lamang ako pagsuri kung alin sa mga uri 506 00:27:45,920 --> 00:27:49,900 ay integers bago ko talaga gumanap pagtutuos na ito. 507 00:27:49,900 --> 00:27:52,420 >> At iyan ay mahalagang Anong nangyayari dito. 508 00:27:52,420 --> 00:27:55,860 Para sa bawat argument in argumento sa proseso, ang 509 00:27:55,860 --> 00:27:59,210 Pupunta ako upang isagawa ang ilang check. 510 00:27:59,210 --> 00:28:01,970 At sa kasong ito, pupuntahan ko upang subukang unang convert 511 00:28:01,970 --> 00:28:07,620 na argument sa isang integer sa pamamagitan ng gumaganap ng isang tahasang pumili ng aktor, 512 00:28:07,620 --> 00:28:12,310 dahil ito ay, sa input, ang isang string at hindi sa katunayan ng isang integer. 513 00:28:12,310 --> 00:28:18,140 >> Ngunit ito ay uri ng isang kakaiba syntax, kung ipaalam grade katumbas int (argument). 514 00:28:18,140 --> 00:28:21,120 Ano ang tunay na nangyayari dito ay lubhang 515 00:28:21,120 --> 00:28:24,390 Mahalaga na ang iyong mga gamit Swift. 516 00:28:24,390 --> 00:28:27,610 Ito ay gumagamit ng kung ano ang tinatawag na isang opsyonal na uri. 517 00:28:27,610 --> 00:28:34,790 >> Kaya ito function, int (argument), nagbalik hindi lamang isang integer, ngunit nagbalik 518 00:28:34,790 --> 00:28:37,470 ano ang tinatawag na isang opsyonal na integer. 519 00:28:37,470 --> 00:28:41,200 At kaya ito ay ang uri ng mga isang uri sa tuktok ng isang uri. 520 00:28:41,200 --> 00:28:45,900 Maaari mong uri ng isipin ito tulad ng ito ay bumabalik tulad ng isang pakete. 521 00:28:45,900 --> 00:28:47,750 At kapag binuksan mo na package, ito ay alinman sa 522 00:28:47,750 --> 00:28:53,930 may isang integer, na kung saan ay ang resulta, o ito ay may ganap na walang wala sa mga ito sa lahat. 523 00:28:53,930 --> 00:28:58,140 At ito ay kapaki-pakinabang bilang isang error checking mekanismo, dahil sa kasong ito 524 00:28:58,140 --> 00:29:02,080 maaari naming malaman, ay ito matagumpay na uri ng conversion? 525 00:29:02,080 --> 00:29:05,810 Kung ito ay, pagkatapos ito ay sa katunayan pagpunta sa may isang integer sa loob. 526 00:29:05,810 --> 00:29:08,750 Kung hindi ito ay pagpunta sa may ilang mga halaga na namin ang tawag kawalan, kung saan 527 00:29:08,750 --> 00:29:10,920 ay kinatawan ng walang integer sa lahat. 528 00:29:10,920 --> 00:29:13,270 Ito ay tunay na kinatawan ng wala. 529 00:29:13,270 --> 00:29:18,130 >> At kaya ito kung construction ay nagbibigay-daan sa amin upang mabuksan package na, 530 00:29:18,130 --> 00:29:19,850 na opsyonal na umiiral. 531 00:29:19,850 --> 00:29:25,560 At kung hindi namin magagawang ng balot na package at makahanap ng isang integer sa loob, 532 00:29:25,560 --> 00:29:27,720 pagkatapos ay kung ano ang sinasabi ng mga kami dito ay na pagkatapos ay namin 533 00:29:27,720 --> 00:29:33,090 payagan halaga na na-set sa ito palagian tinatawag grade. 534 00:29:33,090 --> 00:29:36,590 At ang bahaging ito ng kung pahayag, ang itaas na bahagi ng pahayag kung 535 00:29:36,590 --> 00:29:40,390 ay tatakbo, dahil na alisan ng balot ay matagumpay. 536 00:29:40,390 --> 00:29:43,290 >> Kung nangyari kaya lang ito na nagkaroon ng error marahil 537 00:29:43,290 --> 00:29:47,040 sa ganitong tahasang uri ng conversion mula sa isang string sa isang integer, marahil 538 00:29:47,040 --> 00:29:49,160 ito ay ang halaga ng ABC halimbawa. 539 00:29:49,160 --> 00:29:52,120 At iyan ay talagang hindi pagpunta ang pag-convert sa isang integer. 540 00:29:52,120 --> 00:29:55,520 Pagkatapos ay ibalik ito kawalan, na kung saan ay hindi isang integer. 541 00:29:55,520 --> 00:29:57,570 At ito kung ang pahayag na rin pagkatapos ay mabibigo. 542 00:29:57,570 --> 00:30:01,930 hindi umiiral dahil grade ito ay walang nilalaman na integer. 543 00:30:01,930 --> 00:30:06,391 At ito ay tatakbo ito ng ibang block sa halip. 544 00:30:06,391 --> 00:30:06,890 Oo? 545 00:30:06,890 --> 00:30:09,652 >> Madla: Nil ay N-I-L? 546 00:30:09,652 --> 00:30:11,110 DAN AMRMENDARIZ: kawalan ay N-I-L, yes. 547 00:30:11,110 --> 00:30:14,970 548 00:30:14,970 --> 00:30:20,310 >> Kaya ito ay marahil ang isa sa mga hardest bagay tungkol sa Swift, 549 00:30:20,310 --> 00:30:23,690 lalo na kapag ikaw ay nasa ang mga damo sa isang iOS app 550 00:30:23,690 --> 00:30:27,442 at ang tunay na ikaw ay sinusubukan gawin ang ilang mga pag-unlad doon. 551 00:30:27,442 --> 00:30:29,400 Ito ay pagpunta sa maging sumisigaw sa iyo ang tungkol sa opsyonal. 552 00:30:29,400 --> 00:30:33,050 Ito ay pagpunta sa ay humihingi sa inyo para sa tanong marks at exclamation points. 553 00:30:33,050 --> 00:30:37,100 Ngunit sa sandaling malaman mo out-- kung ikaw maglaan ng ilang oras upang ang pag-uunawa 554 00:30:37,100 --> 00:30:41,990 kung ano ang nangyayari sa mga opsyonal na mga uri, mo i-save ang iyong sarili ng isang pulutong ng mga sakit ng ulo 555 00:30:41,990 --> 00:30:46,040 pati na iyong sinusubukan na magsulat ng isang app sa Swift. 556 00:30:46,040 --> 00:30:47,660 >> Ito ay talagang isang napakalakas na tampok. 557 00:30:47,660 --> 00:30:49,826 At makikita mo na lang kung kunin ang aking mga salita para dito sa ngayon. 558 00:30:49,826 --> 00:30:52,620 Ngunit kami ay makita ito konstruksiyon at ilang iba gusto ito 559 00:30:52,620 --> 00:30:56,740 sa ilan sa mga iba pang mga source code na ipapakita namin sa iyo sa loob lamang ng ilang sandali. 560 00:30:56,740 --> 00:31:00,440 >> Mayroon bang anumang mga paunang mga tanong dito? 561 00:31:00,440 --> 00:31:03,790 562 00:31:03,790 --> 00:31:08,690 Kaya ang mahalagang takeaway ay na ang isang opsyonal na uri ay uri ng isang metatype. 563 00:31:08,690 --> 00:31:12,500 Ito ay alinman sa isang halaga, at kung ito ay, pagkatapos ito 564 00:31:12,500 --> 00:31:18,110 ay marahil mayroon na halaga na kaugnay sa mga ito, o kung ano pa man ay walang halaga ito, 565 00:31:18,110 --> 00:31:19,620 at ito ay kinakatawan ng wala. 566 00:31:19,620 --> 00:31:24,210 567 00:31:24,210 --> 00:31:28,870 Ang natitirang bahagi ng mga ito ay marahil tulad ng iyong inaasahan. 568 00:31:28,870 --> 00:31:32,900 >> Kaya sabihin ramp up ang nahihirapan pa muli. 569 00:31:32,900 --> 00:31:37,070 At oras na ito, sabihin kumuha ng isang pagtingin sa ilan iba pang mga uri na aktwal na umiiral na data. 570 00:31:37,070 --> 00:31:41,290 Isa sa mga ito ay mga diksyunaryo, na kung saan ay halos kapareho sa Python diksyunaryo. 571 00:31:41,290 --> 00:31:48,270 Ito ay halos katulad sa isang hash table sa C. Ito ay mahalagang isang pagmamapa ng key 572 00:31:48,270 --> 00:31:49,820 kung saan ang mga pindutan ay maaaring maging string. 573 00:31:49,820 --> 00:31:52,670 At kapag hanapin mo ang mga susi, mga key ay magkakaroon ng isang halaga. 574 00:31:52,670 --> 00:31:56,020 Kaya ito ay hindi pa isang array, ngunit sa halip, mas malapit na kaugnay 575 00:31:56,020 --> 00:31:58,810 sa isang hash mapa o isang hash table. 576 00:31:58,810 --> 00:32:02,420 >> Tingnan natin kung paano ito ay dapat ipaalam sa sa trabaho bago namin talagang 577 00:32:02,420 --> 00:32:05,210 pumunta sa source code mismo. 578 00:32:05,210 --> 00:32:07,680 Kung nagpapatakbo ko lang ito, talaga ang mangyayari wala. 579 00:32:07,680 --> 00:32:12,430 Ito ay nagsasabi sa akin na ako umaasa ang ilang mga parameter ng ang mga sumusunod na uri. 580 00:32:12,430 --> 00:32:16,050 Kaya ako pagpunta upang magbigay sa ito ang ilang mga pangalan ng hanay ng problema, 581 00:32:16,050 --> 00:32:18,490 kaya pset0, siguro nakuha ko 100. 582 00:32:18,490 --> 00:32:20,790 At pset1, isang 5 ang nakuha ko. 583 00:32:20,790 --> 00:32:24,630 At pagkatapos ay sa pagsusulit, ako ay tunay mabuti at nakuha 30. 584 00:32:24,630 --> 00:32:27,180 At Oops, ako hit ng isang puwang dito. 585 00:32:27,180 --> 00:32:30,940 >> Kapag ako pindutin ang Enter, maaari mong makita ito ay gumaganap ng ilang mga pagtutuos. 586 00:32:30,940 --> 00:32:33,740 Sinasabi nito gradebook ay tatlong grado, pset1, pset0, exam. 587 00:32:33,740 --> 00:32:36,120 At ang gradebook ay ito tiyak na average. 588 00:32:36,120 --> 00:32:38,370 Kaya muli, kami ay nagtatrabaho may ideya gradebook ito, 589 00:32:38,370 --> 00:32:44,650 ngunit kami ay pagpunta upang magpatuloy iterating sa pagiging kumplikado ng aming mga function. 590 00:32:44,650 --> 00:32:47,650 >> Kaya sa pagsisimula, hindi namin lamang pagpunta upang lumikha ng isang function na 591 00:32:47,650 --> 00:32:49,390 ay responsable para sa pag-print ang paggamit. 592 00:32:49,390 --> 00:32:51,920 At may exit na ito function na kung saan ay lamang 593 00:32:51,920 --> 00:32:53,710 puwersahang isara ang application. 594 00:32:53,710 --> 00:32:56,530 Ito ay hindi isang bagay na gagamitin mo sa iOS app. 595 00:32:56,530 --> 00:32:59,750 Ito ay para lamang, sa kasong ito, may isang argument command line. 596 00:32:59,750 --> 00:33:01,990 Susunod na kami ay simulan ang paglipat patungo sa Xcode. 597 00:33:01,990 --> 00:33:07,760 Ngunit ito ay tiyak sa isang utos style program line sa Swift. 598 00:33:07,760 --> 00:33:11,490 >> Tingnan natin ang isang pagtingin sa ilan sa ang mga kagiliw-giliw na bagay dito. 599 00:33:11,490 --> 00:33:15,150 Makita, lamang ng ilang Hayaan kagiliw-giliw na mga bagay-bagay sa banggitin marahil 600 00:33:15,150 --> 00:33:19,930 ay na sa aking pag-andar ng imprenta ang bilang ng marka, 601 00:33:19,930 --> 00:33:26,090 maaari mong isipin ang na ako ay listahan na ng items-- pset1, pset0, at exam. 602 00:33:26,090 --> 00:33:29,130 Maaari mong aktwal na mabilis at madaling gawin ito 603 00:33:29,130 --> 00:33:34,490 sa pamamagitan ng pagkuha ang gradebook, na isang diksyunaryo na may susi at halaga. 604 00:33:34,490 --> 00:33:38,730 Hanapin ang lahat ng mga key ay sa pamamagitan ng ang paraan dot keys dito, 605 00:33:38,730 --> 00:33:43,180 at pagkatapos ay gamitin ito joinWithSeparator, na kung saan ay pagkatapos ay gawin ang lahat ng mga susi 606 00:33:43,180 --> 00:33:48,590 na kami ay nag-type sa, pset1-- o Paumanhin, pset0, pset1, at exam-- 607 00:33:48,590 --> 00:33:53,030 at pagdugtungin ang mga ito nang sama-sama gamit ang isang kuwit at isang puwang 608 00:33:53,030 --> 00:33:55,400 upang lumikha ng isa pang string. 609 00:33:55,400 --> 00:34:00,190 Ito sumali operasyon ay phenomenally lamang kapaki-pakinabang sa isang iba't ibang mga konteksto. 610 00:34:00,190 --> 00:34:03,450 At kaya ito ay na ito joinWithSeparator. 611 00:34:03,450 --> 00:34:06,939 >> At ito ay isang bagay na nagbago mula Swift 1 hanggang Swift 2. 612 00:34:06,939 --> 00:34:08,730 May ginamit upang maging isang Python style-- kung ikaw ay 613 00:34:08,730 --> 00:34:13,219 pamilyar sa Python-- isang sawa sumali style na paraan sa mga string. 614 00:34:13,219 --> 00:34:15,699 Ngunit iyon ay hindi na ang kaso sa Swift 2. 615 00:34:15,699 --> 00:34:19,400 Gusto mong gamitin ito kung nais mong pagdugtungin ng isang hanay ng mga bagay-bagay 616 00:34:19,400 --> 00:34:23,380 kasama ang isang string. 617 00:34:23,380 --> 00:34:27,889 >> Kaya marahil pagkatapos ay sa aming talakayan ng average ng dati, 618 00:34:27,889 --> 00:34:32,659 ito ay gumagawa ng isang maliit na piraso ng higit pang kahulugan para sa amin upang i-set ang average na function 619 00:34:32,659 --> 00:34:36,610 upang maging isang opsyonal na double sa halip pa sa isang tahasang double. 620 00:34:36,610 --> 00:34:39,239 Dahil kami ay nagkaroon na hindi pangkaraniwang kalagayan kung saan, 621 00:34:39,239 --> 00:34:41,550 paano kung gradebook talaga Wala halaga sa loob ng mga ito? 622 00:34:41,550 --> 00:34:44,280 Ano dapat ang average return? 623 00:34:44,280 --> 00:34:46,350 >> Well siguro sa C mo sana ay tapos na ang isang bagay 624 00:34:46,350 --> 00:34:50,040 tulad ng ibinigay ang halaga ng isang nagbabantay, tulad ng 0.0, o marahil ng isang negatibong bilang, 625 00:34:50,040 --> 00:34:53,690 o isang bagay na kumakatawan lamang ang katotohanan na nagkaroon ng ilang kondisyon na error 626 00:34:53,690 --> 00:34:57,910 at ikaw ay marahil hindi talaga magkaroon ng kakayahan sa compute na average. 627 00:34:57,910 --> 00:35:05,590 Well ang kagandahan ng pagtukoy ng isang opsyonal na uri ay upang gawin iyon. 628 00:35:05,590 --> 00:35:09,540 At ako ngayon sinasabi ng lahat ng mga salitang ito, ngunit ito ang tunay na hindi gumagamit optionals. 629 00:35:09,540 --> 00:35:12,970 Ngunit kami ay makita na sa loob lamang minuto kung saan maaari naming i-set average 630 00:35:12,970 --> 00:35:17,230 upang maging isang opsyonal na uri ng data upang ang kung ito aktwal na nagbabalik ng ilang data, pagkatapos ay 631 00:35:17,230 --> 00:35:18,470 kami ay babalik na data. 632 00:35:18,470 --> 00:35:20,570 Kung hindi man kami ay babalik kawalan, na nagsasabi na ito 633 00:35:20,570 --> 00:35:22,200 Wala makabuluhan pagtutuos. 634 00:35:22,200 --> 00:35:25,650 635 00:35:25,650 --> 00:35:28,570 >> Sabihin ilipat sa ibang bagay Hayaan. 636 00:35:28,570 --> 00:35:35,910 Kaya mula dito, kami ay naghahanap sa lahat ng mga halimbawang ito sa linya ng command. 637 00:35:35,910 --> 00:35:39,470 Ngunit ang tunay ano ang iyong pagpunta sa pagharap sa ay Xcode. 638 00:35:39,470 --> 00:35:43,720 At ang isa sa mga magagandang bagay tungkol sa Xcode ay, at partikular na sa Swift, 639 00:35:43,720 --> 00:35:47,450 ay mayroon kaming na ito bagay na tinatawag na isang Playground. 640 00:35:47,450 --> 00:35:51,470 At isang Playground ay hindi sa lahat ng iOS app. 641 00:35:51,470 --> 00:35:54,751 Ngunit ito ay nagbibigay-daan sa iyo upang mag-eksperimento may Swift sa isang napaka-madaling paraan. 642 00:35:54,751 --> 00:35:56,000 Maaari ninyong ilagay ang lahat ng iyong code. 643 00:35:56,000 --> 00:35:58,140 Ito ay mabuti syntax highlight dito. 644 00:35:58,140 --> 00:36:01,600 Kapag lumikha ka ng isang bagong file, ito ay hihilingin sa iyo kung nais mong lumikha ng isang Playground. 645 00:36:01,600 --> 00:36:08,720 Ngunit ang magandang bagay tungkol sa palaruan ay nasa kanan ng iyong window, 646 00:36:08,720 --> 00:36:12,020 ay ito ang tunay na ipakita sa iyo output mula sa iyong code. 647 00:36:12,020 --> 00:36:16,110 Kaya kung mag-scroll ko pababa, maaari naming makita kung ano ang ang output ng iba't-ibang linya ng code 648 00:36:16,110 --> 00:36:17,200 talagang mangyayari na. 649 00:36:17,200 --> 00:36:19,850 650 00:36:19,850 --> 00:36:26,790 >> Kaya sa kasong ito, kami ay pagpunta sa baguhin ang mga direksyon ng kaunti lamang 651 00:36:26,790 --> 00:36:30,960 at makipag-usap tungkol sa isang bagay na talagang Mahalaga na ito mataas na antas na paraan 652 00:36:30,960 --> 00:36:34,020 na Swift nagpapatakbo, at ito ay ito ideya ng pagsasara. 653 00:36:34,020 --> 00:36:36,960 At makikita mo marahil ito Medyo sa JavaScript. 654 00:36:36,960 --> 00:36:40,770 Para sa inyo na ay sa CS50, pagsasara 655 00:36:40,770 --> 00:36:47,240 ay napaka-tanyag, magaling na paraan ng paggawa mga bagay mataas na antas sa modernong wika. 656 00:36:47,240 --> 00:36:50,270 Ngunit ito ay uri ng mahirap na ring balutin ang inyong ulo sa paligid sa unang pagkakataon. 657 00:36:50,270 --> 00:36:52,269 Kaya't kung ikaw ay naghahanap sa ito unang pagkakataon, na ang OK. 658 00:36:52,269 --> 00:36:56,740 Hanapin lamang sa mga source code at tingnan kung maaari mong malaman kung ito sa bahay. 659 00:36:56,740 --> 00:37:01,050 >> Kaya sa kasong ito, sabihin natin na tayo nais na lumikha ng isang pulutong ng mga exponents 660 00:37:01,050 --> 00:37:04,134 kasama ang ilang mga nakapirming halaga. 661 00:37:04,134 --> 00:37:05,800 Kaya sa kasong ito ang maaari kong lumikha ng isang function. 662 00:37:05,800 --> 00:37:09,270 Pupunta ako sa mga tawag na ito ng kapangyarihan ng 2 na ang tanging layunin sa buhay 663 00:37:09,270 --> 00:37:15,770 ay tumagal ng ilang mga input at double ito, at ibalik ang halaga. 664 00:37:15,770 --> 00:37:21,210 Pansinin na dito ako pagtanggap sa isang uri ng data. 665 00:37:21,210 --> 00:37:23,137 Ito ay pagpunta sa maging isang variable na tinatawag na x. 666 00:37:23,137 --> 00:37:23,970 Ito ay ganitong uri Double. 667 00:37:23,970 --> 00:37:26,190 At ako pagpunta upang bumalik sa isang Double dito. 668 00:37:26,190 --> 00:37:29,100 At lamang ako ng pagpunta sa gawin isang napaka, lantaran, pretty 669 00:37:29,100 --> 00:37:32,650 walang muwang na paraan ng pagdodoble ang halaga na ito. 670 00:37:32,650 --> 00:37:35,600 At ipapakita ko sa iyo kung bakit ito ay kapaki-pakinabang sa isang segundo lang. 671 00:37:35,600 --> 00:37:40,418 >> Pansinin na dito kami hanay na ito muli. para sa isang bagay sa 1, tuldok 672 00:37:40,418 --> 00:37:44,130 tuldok tuldok, 2, na nangangahulugan na ang loop na ito ay tatakbo nang dalawang beses. 673 00:37:44,130 --> 00:37:46,480 Ngunit ito ay kumakatawan sa isang dummy variable. 674 00:37:46,480 --> 00:37:49,650 Ito ay nangangahulugan na hindi ako tunay na pagpunta sa ay gumagamit ng variable na kahit saan 675 00:37:49,650 --> 00:37:51,070 sa loob ng loop na ito. 676 00:37:51,070 --> 00:37:55,380 Gusto ko lang ang linyang ito ng code na tumakbo nang dalawang beses, 677 00:37:55,380 --> 00:37:58,980 hindi nangangailangan na alam ang halaga ng mga saklaw na iyon. 678 00:37:58,980 --> 00:38:02,570 >> Kaya sa kasong ito ako nagpapatakbo resulta ulit x dalawang beses, na mahalagang 679 00:38:02,570 --> 00:38:06,560 ay nangangahulugan na ako ng squaring ang halagang ito. 680 00:38:06,560 --> 00:38:10,230 At ito ang mangyayari sa mga gumana tulad ng gagawin namin inaasahan. 681 00:38:10,230 --> 00:38:16,410 Power of 2, pagpasa ng isang halaga ng 2.0 ay nagbibigay sa amin ng isang output ng 4. 682 00:38:16,410 --> 00:38:18,810 3.2 gawa para sa 10.24. 683 00:38:18,810 --> 00:38:22,660 >> Ngayon ay maaari naming gawin ng isang katulad bagay para sa kapangyarihan ng 3. 684 00:38:22,660 --> 00:38:25,330 Ngunit ngayon lamang baguhin range ang. 685 00:38:25,330 --> 00:38:28,840 Para dummy variable in 1 sa pamamagitan ng 3, i-multiply ng 3 beses, 686 00:38:28,840 --> 00:38:29,830 at gawin ang parehong bagay. 687 00:38:29,830 --> 00:38:32,240 >> Kaya ito ay maaaring makaramdam ng kaunti contrived. 688 00:38:32,240 --> 00:38:34,270 Subalit mayroong isang mahalagang bagay dito na 689 00:38:34,270 --> 00:38:37,770 na ang pagtingin sa mga dalawang pag-andar, may 690 00:38:37,770 --> 00:38:43,600 lamang ng isang bagay na naiiba, na kung saan ay ang halaga na ito sa saklaw. 691 00:38:43,600 --> 00:38:46,910 Lahat ng iba pa tungkol sa mga dalawang function, kapangyarihan ng 3 at kapangyarihan ng 2, 692 00:38:46,910 --> 00:38:50,440 ay, sa katunayan, magkapareho dahil gumagana ang mga ito sa parehong paraan. 693 00:38:50,440 --> 00:38:53,460 >> Kaya sa puntong ito, ang isang maliit alarma kampanilya ay dapat na pagpunta off. 694 00:38:53,460 --> 00:38:56,200 Sana kung ano ang iyong sinasabi, alam mo, ito nararamdaman ng isang maliit na piraso 695 00:38:56,200 --> 00:38:59,250 tulad ng pagkopya ng mga pagsisikap. 696 00:38:59,250 --> 00:39:02,950 Marahil mayroong isang paraan na gusto ko ma-encapsulate ang lahat ng ito 697 00:39:02,950 --> 00:39:06,630 at magbigay ng isang function o lumikha ng isang function na 698 00:39:06,630 --> 00:39:11,550 ay kung ano mismo ang gusto ko nang walang nangangailangan na i-type ito sa labas tahasang. 699 00:39:11,550 --> 00:39:15,732 At ito ay kung ano ang kapangyarihan ng isang pagsasara ay nagbibigay-daan sa amin upang gawin. 700 00:39:15,732 --> 00:39:16,940 Kaya sabihin kumuha ng isang pagtingin sa ito. 701 00:39:16,940 --> 00:39:18,700 At kukunin ko na gumastos ng ilang mga minuto na ito, dahil ito 702 00:39:18,700 --> 00:39:20,310 ay medyo mahalaga para sa Swift. 703 00:39:20,310 --> 00:39:22,900 Nakita namin ito sa lahat ng oras. 704 00:39:22,900 --> 00:39:24,550 Kami ay pagpunta upang tukuyin ang isang function. 705 00:39:24,550 --> 00:39:26,380 Ito ay pagpunta sa ay tinatawag na powerOf. 706 00:39:26,380 --> 00:39:29,470 Ito ay pagpunta upang tanggapin ang isang parameter na tinatawag na y ng uri int. 707 00:39:29,470 --> 00:39:32,220 Ngunit ang isang tumingin sa ang uri ng return. 708 00:39:32,220 --> 00:39:38,730 Ang uri ng return ay, sa panaklong, Double palaso Double. 709 00:39:38,730 --> 00:39:43,370 Na nangangahulugan na ang function na ito, mga function na ito powerOf, 710 00:39:43,370 --> 00:39:46,550 ay nagbabalik ng isang function. 711 00:39:46,550 --> 00:39:50,845 Iyon ay ang pagtanggap ng isang Double at pagbabalik ng isang Double. 712 00:39:50,845 --> 00:39:53,720 Kaya na maaaring tunog uri ng mga loko, ngunit ni-scroll pababa ng kaunti ipaalam 713 00:39:53,720 --> 00:39:55,060 at tumingin upang makita kung ano ang mangyayari. 714 00:39:55,060 --> 00:39:57,910 Humihingi kami sa loob ng function na ito powerOf. 715 00:39:57,910 --> 00:40:00,760 Kami ay ang paglikha ng isang bagong function tinatawag exponentiator, 716 00:40:00,760 --> 00:40:02,900 ngunit ito ay hindi mahalaga kung ano ito. 717 00:40:02,900 --> 00:40:06,410 >> Paunawa na ito ay may isang input na halaga ng x. 718 00:40:06,410 --> 00:40:09,910 At ito ay ang pagkuha sa isang Double at pagbabalik ng isang Double. 719 00:40:09,910 --> 00:40:16,320 At ito ay ang parehong code na aming Nakita sa itaas, maliban na ang mga halaga ng 2 720 00:40:16,320 --> 00:40:20,060 o ang halaga ng 3, na itaas na nakatali sa hanay na iyon, 721 00:40:20,060 --> 00:40:23,210 ay pinalitan ng ang halaga na ito ng y, na 722 00:40:23,210 --> 00:40:27,230 ay ang unang parameter ng ating powerOf function. 723 00:40:27,230 --> 00:40:31,700 At sa puntong ito, kami bumalik exponentiator. 724 00:40:31,700 --> 00:40:33,345 Kami ay bumabalik na ang function. 725 00:40:33,345 --> 00:40:36,300 726 00:40:36,300 --> 00:40:39,550 >> Ito ay uri ng tulad ng isang maliit na isip pamumulaklak. 727 00:40:39,550 --> 00:40:44,360 Ngunit ni isipin kung ano ang mangyayari ipaalam kapag tumawag ako ang function na ito powerOf 728 00:40:44,360 --> 00:40:47,610 at pumasa sa mga ito sa ilang mga halaga tulad ng 2. 729 00:40:47,610 --> 00:40:50,020 Ano ang ibig sabihin nito ay na Ngayon ko ang halaga 730 00:40:50,020 --> 00:40:55,130 2 para sa y, na nangangahulugan na ang halaga na ito y sa exponentiator function na 731 00:40:55,130 --> 00:40:56,410 ay magiging na halaga 2. 732 00:40:56,410 --> 00:41:01,290 Ngunit ako bumabalik na ito exponentiator function. 733 00:41:01,290 --> 00:41:05,900 >> Kaya mapansin ko kung ano Swift sabi may ginawa sa kasong ito. 734 00:41:05,900 --> 00:41:10,550 hayaan square ay isang kahulugan, ito ay isang function na tumatanggap ng isang Double 735 00:41:10,550 --> 00:41:12,610 at nagbalik ng isang Double. 736 00:41:12,610 --> 00:41:16,590 Ako ay may ginawa ng isang function na mga parisukat ng isang bagay 737 00:41:16,590 --> 00:41:19,782 gamit ang mekanismo na ito dito mismo. 738 00:41:19,782 --> 00:41:22,490 At talagang kung ano ang nangyayari ay na ito ay bumabalik ang function na ito 739 00:41:22,490 --> 00:41:26,390 exponentiator, ngunit ang halaga na ito y ay nakabalot sa loob ng mga ito. 740 00:41:26,390 --> 00:41:31,080 At sa bawat oras kaya ngayon ito ang ginagamit ko variable o tapat na ito ng tinatawag na 741 00:41:31,080 --> 00:41:35,180 square, ito ito ay pagpunta upang kumilos bilang isang function. 742 00:41:35,180 --> 00:41:39,960 At kaya ko maaaring pagkatapos ay tumawag sa variable na tulad Gusto kong tumawag sa isang function, 743 00:41:39,960 --> 00:41:43,830 at pumasa sa mga ito ng isang numero, tulad ng sa kasong ito 3. 744 00:41:43,830 --> 00:41:45,910 At ako ay pagkatapos ay parisukat ang halagang ito. 745 00:41:45,910 --> 00:41:53,340 Kaya 3 nakalapat ay pagkatapos maging 9, bilang maaari naming makita dito. 746 00:41:53,340 --> 00:41:56,530 >> Talagang mabaliw, ngunit ito ngayon ay nagbibigay-daan sa akin ng pagkakataon 747 00:41:56,530 --> 00:41:59,040 upang lumikha ng iba pang mga function powerOf. 748 00:41:59,040 --> 00:42:03,680 Tulad ng maaari kong sabihin, OK, na rin ngayon ay nais ko upang lumikha ng isang bagong pag-andar, powerOf (3), 749 00:42:03,680 --> 00:42:06,290 at mag-store na iyon sa isang pare-pareho na tinatawag na kubo. 750 00:42:06,290 --> 00:42:10,220 At ngayon kubo ay magiging isang hiwalay na function na ay pagkatapos 751 00:42:10,220 --> 00:42:14,800 tumagal ng ilang mga halaga ng input at kubo na halaga na maaari naming makita sa ilalim na linya 752 00:42:14,800 --> 00:42:16,420 dito. 753 00:42:16,420 --> 00:42:18,590 kubo ng 2 ay pagpunta sa resulta sa 8. 754 00:42:18,590 --> 00:42:21,330 755 00:42:21,330 --> 00:42:22,680 >> Sana medyo kapong baka bagay-bagay. 756 00:42:22,680 --> 00:42:25,920 Hindi ka pa nakakakita nito bago. 757 00:42:25,920 --> 00:42:29,990 Hinihikayat ko kayo na tumingin sa mga pagsasara at siyasatin ito nang kaunti pa. 758 00:42:29,990 --> 00:42:33,570 Talaga ang malakas na mga bagay-bagay ito nakita namin ang isang pulutong sa JavaScript at ilang iba pang mga wika. 759 00:42:33,570 --> 00:42:37,160 Ito ay talagang mahalaga sa pag-unawa sa mga API pati 760 00:42:37,160 --> 00:42:38,620 na kami ay kumuha sa isang segundo lang. 761 00:42:38,620 --> 00:42:39,456 Oo? 762 00:42:39,456 --> 00:42:43,740 >> Madla: Kapag ginawa mo powerOf (2), panaklong, at pagkatapos ay 763 00:42:43,740 --> 00:42:48,764 isa pang parenthesis, isa pang input-- karaniwang kayo ay pinapalitan ang square. 764 00:42:48,764 --> 00:42:50,930 DAN AMRMENDARIZ: Kaya tingnan sa pinakadulo huling linya dito. 765 00:42:50,930 --> 00:42:55,930 Ito ay talagang lubos na posible na gawin na pagdudugtong bilang iminungkahing sa iyo. 766 00:42:55,930 --> 00:43:00,990 Kaya powerOf (5) ay nangangahulugan na kami ay pagpunta na magkaroon ng isang exponentiator 5 up dito. 767 00:43:00,990 --> 00:43:04,160 Kaya ito ay mahalagang pagpunta sa maging ang parehong bagay tulad ng 4 hanggang ikalimang kapangyarihan, 768 00:43:04,160 --> 00:43:07,200 dahil lumikha kami ng isang exponentiating gumana sa ikalimang kapangyarihan, 769 00:43:07,200 --> 00:43:09,920 at kami ay pagpasa sa na function ng halaga 4. 770 00:43:09,920 --> 00:43:12,619 At kami makakuha ng halaga na na inaasahan namin, 1024. 771 00:43:12,619 --> 00:43:14,785 Madla: At ito ay hindi isang pangalan, kaya ito ay mas madali 772 00:43:14,785 --> 00:43:16,570 basahin, ang mga parisukat na kahit na ano. 773 00:43:16,570 --> 00:43:17,903 >> DAN AMRMENDARIZ: Kanan, eksakto. 774 00:43:17,903 --> 00:43:21,120 Kaya bago ko bang ilagay ito lamang sa isang pare-pareho dito kaya 775 00:43:21,120 --> 00:43:23,808 na ito na ginawa ito madaling gamitin na pangalan. 776 00:43:23,808 --> 00:43:24,308 Oo? 777 00:43:24,308 --> 00:43:26,942 >> Madla: Sa kontekstong ito powerOf, ito ay bahagi 778 00:43:26,942 --> 00:43:30,774 ng mga programming language bilang laban sa mga paraan kung paano ka 779 00:43:30,774 --> 00:43:33,952 tingin ng powerOf sa [hindi marinig]? 780 00:43:33,952 --> 00:43:35,660 DAN AMRMENDARIZ: So sa kasong ito, powerOf 781 00:43:35,660 --> 00:43:39,280 ay para lang sa pangalan ng function na akong tinukoy up dito. 782 00:43:39,280 --> 00:43:41,801 Kaya ito ay hindi likas sa ang wika mismo, 783 00:43:41,801 --> 00:43:43,550 ngunit sa halip, ito lamang isang function na ay may 784 00:43:43,550 --> 00:43:45,628 na pangalan dahil ako bigyan ito ng pangalan na. 785 00:43:45,628 --> 00:43:48,770 786 00:43:48,770 --> 00:43:51,920 Anumang iba pang mga katanungan? 787 00:43:51,920 --> 00:43:52,800 Lahat tama. 788 00:43:52,800 --> 00:43:54,750 >> Ngayon na ito ay malaki. 789 00:43:54,750 --> 00:43:58,170 Ngunit hindi ka pagpunta upang makita ang isang pulutong ng pagsasara function na 790 00:43:58,170 --> 00:44:03,440 ay tulad na ito kung saan mo tukuyin, sa loob ng isang function, ang isa pang pag-andar. 791 00:44:03,440 --> 00:44:04,320 At maaari mong gawin ito. 792 00:44:04,320 --> 00:44:06,430 Ngunit ito ay uri ng hindi talagang kinakailangan, right? 793 00:44:06,430 --> 00:44:09,189 Tulad ng kung bakit ko tukuyin ang mga ito function na tinatawag exponentiator 794 00:44:09,189 --> 00:44:10,480 at pagkatapos ay agad na bumalik ito. 795 00:44:10,480 --> 00:44:15,220 Bakit hindi na lang ako agad bumalik sa function na ito? 796 00:44:15,220 --> 00:44:18,890 >> At sa katunayan, ito ay tiyak ang ideya sa likod ng isang konsepto na tinatawag na 797 00:44:18,890 --> 00:44:22,410 anonymous pag-andar, kung saan hindi kilalang function ay hindi tunay 798 00:44:22,410 --> 00:44:25,270 magkaroon ng isang pangalan dahil sila hindi na kailangan upang magkaroon ng isa. 799 00:44:25,270 --> 00:44:28,700 At kaya sa kasong ito, sa 7B, maaari naming mahanap ang tiyak na. 800 00:44:28,700 --> 00:44:31,470 Lahat ng ito ay ang parehong code, gumagana nang eksakto ang parehong bagay, 801 00:44:31,470 --> 00:44:35,570 ngunit ngayon binago namin ito nang bahagya kaya na ito powerOf function na agad 802 00:44:35,570 --> 00:44:37,750 nagbabalik ng isang function. 803 00:44:37,750 --> 00:44:44,150 Pansinin na pagkatapos ng pagbabalik, may isang bukas na curly bracket. 804 00:44:44,150 --> 00:44:46,410 Ito ay umaasa na ito input Double. 805 00:44:46,410 --> 00:44:48,560 Ito ay umaasa na ang output Double. 806 00:44:48,560 --> 00:44:52,175 At pagkatapos ay ang sa keyword naghihiwalay sa code mismo. 807 00:44:52,175 --> 00:44:53,550 Kaya ito ay isang hindi nakikilalang function. 808 00:44:53,550 --> 00:44:57,030 Ito ay hindi tunay na magkaroon ng isang pangalan, kung saan ang bago ito ay tinatawag exponentiator. 809 00:44:57,030 --> 00:45:00,229 Ngunit tulad ng nakita natin, talagang lamang ay hindi sumangguni sa exponentiator 810 00:45:00,229 --> 00:45:01,270 sa labas ng na function. 811 00:45:01,270 --> 00:45:02,470 Kaya hindi ito mahalaga. 812 00:45:02,470 --> 00:45:06,300 Kaya hindi kilalang function na ito ay tinatawag na ito sapagkat ito ay walang pangalan, 813 00:45:06,300 --> 00:45:09,107 ngunit ito ay ginagamit pa rin sa konteksto ng code na ito. 814 00:45:09,107 --> 00:45:13,690 815 00:45:13,690 --> 00:45:16,079 >> Ang susunod na ilang mga Ako pagpunta sa patuloy sana 816 00:45:16,079 --> 00:45:17,370 pamumulaklak ng iyong isip nang kaunti. 817 00:45:17,370 --> 00:45:20,410 Maaari naming gawing simple ito ng mas maraming. 818 00:45:20,410 --> 00:45:24,490 Dahil bilang ay astutely tulis mas maaga, 819 00:45:24,490 --> 00:45:29,100 marahil aktwal na namin alam, sa pamamagitan ng inferring ito mula sa code, kung ano 820 00:45:29,100 --> 00:45:31,750 ang output ng code na ito ay magiging. 821 00:45:31,750 --> 00:45:38,180 At sa katunayan, sa hindi kilalang function na ito, maaaring sa katunayan naming ipahiwatig ang mga uri ng data. 822 00:45:38,180 --> 00:45:41,650 >> Kaya sa isang ito, walang kami na kailangang tahasang tukuyin 823 00:45:41,650 --> 00:45:44,850 ang uri ng data na pagiging input at output mula sa function na ito 824 00:45:44,850 --> 00:45:45,890 para sa isang pares ng mga dahilan. 825 00:45:45,890 --> 00:45:51,390 Ang isa ay na iyong tinukoy namin, hanggang sa prototype ng nasasakupang function, 826 00:45:51,390 --> 00:45:55,770 ano ang uri ng data na ito anonymous function na ay dapat na input at output. 827 00:45:55,770 --> 00:45:57,900 At mula sa iba pang, kami ay maaaring magpahiwatig mula sa code 828 00:45:57,900 --> 00:46:01,930 down na dito na kami ay tumatanggap ng mga input na ng uri Double 829 00:46:01,930 --> 00:46:03,670 at pagbabalik ng isang Double. 830 00:46:03,670 --> 00:46:07,890 >> Pansinin na dito kami hindi malinaw tinukoy ang mga pangalan ng mga argumento 831 00:46:07,890 --> 00:46:11,220 na ang function na ito ay tumatanggap. 832 00:46:11,220 --> 00:46:16,180 At kaya namin makita ang maaari naming sumangguni sa mga parameter gamit $ 0, $ 1, 833 00:46:16,180 --> 00:46:20,140 kaya sa at iba pa, depende sa ang bilang ng mga na parameter na ginamit 834 00:46:20,140 --> 00:46:20,850 sa function na ito. 835 00:46:20,850 --> 00:46:23,370 836 00:46:23,370 --> 00:46:29,740 >> Ito ay isang bagay na ikaw ay pagpunta upang makita ang marami ay ito open curly bracket 837 00:46:29,740 --> 00:46:32,797 definition na sinusundan ng isang $ 0, at pagkatapos ng ilang operasyon, 838 00:46:32,797 --> 00:46:34,130 at pagkatapos ng isang closed kulot bracket. 839 00:46:34,130 --> 00:46:38,630 Iyon ay isang hindi nakikilalang function na gumaganap ng operation na ito. 840 00:46:38,630 --> 00:46:42,940 Ito ay may parameter na ito kung saan ito ay ang uri ay natukoy. 841 00:46:42,940 --> 00:46:44,860 Na unang parameter ay $ 0. 842 00:46:44,860 --> 00:46:49,010 At ilang operasyon ay nangyayari sa na $ 0. 843 00:46:49,010 --> 00:46:52,100 >> Madla: Kaya ang dollar sign nangangahulugan parameter talaga, 844 00:46:52,100 --> 00:46:53,429 at 0 ay nangangahulugan na ang unang isa? 845 00:46:53,429 --> 00:46:54,720 DAN Armendariz: Iyan ay tama. 846 00:46:54,720 --> 00:46:59,100 Kaya karaniwang ay nangangahulugan na ang dollar sign parameter, at 0 ay nangangahulugan na ang unang isa. 847 00:46:59,100 --> 00:47:02,760 Ngunit ito partikular na gumagana sa kasong ito kung saan hindi ako pinangalanan 848 00:47:02,760 --> 00:47:07,940 ang mga argumento sa aking mga function anonymous. 849 00:47:07,940 --> 00:47:11,119 >> Madla: Perl o isang bagay na mayroon ba ito dollar sign, dollar 0 in doon? 850 00:47:11,119 --> 00:47:12,702 DAN Armendariz: ba na, Sorry? 851 00:47:12,702 --> 00:47:15,360 Madla: Mayroon Perl ba ito dollar 0, dollar 1-- 852 00:47:15,360 --> 00:47:17,318 DAN Armendariz: Hindi ako masyadong pamilyar sa Perl, 853 00:47:17,318 --> 00:47:21,340 ngunit PHP kung ano ang tumutukoy na mga variable batay sa mga palatandaan dollar. 854 00:47:21,340 --> 00:47:26,120 At maaaring may ilang mga wika na magkaroon ng mga tampok tulad nito. 855 00:47:26,120 --> 00:47:28,240 Sa katunayan, Swift borrows isang pulutong ng mga tampok tulad ng isang ito 856 00:47:28,240 --> 00:47:29,489 mula sa isang pulutong ng iba pang mga wika. 857 00:47:29,489 --> 00:47:32,380 Nakakakita kami ng mga pahiwatig ng Python sa loob nito. 858 00:47:32,380 --> 00:47:35,800 Ito kahulugan ng uri parang nanggaling mula OCaml. 859 00:47:35,800 --> 00:47:38,932 At kami ay may lamang ng isang buong grupo ng mga mga bagay-bagay mula sa maraming iba't-ibang mga wika. 860 00:47:38,932 --> 00:47:40,640 Iyon ang isa sa mga magaling mga bagay-bagay tungkol sa Swift 861 00:47:40,640 --> 00:47:43,390 na ito ay tumatagal ng isang pulutong ng mga pinakamahusay na mga ideya mula sa isang grupo ng mga wika 862 00:47:43,390 --> 00:47:47,229 at shoehorns mga ito ang lahat ng sama-sama sa isa super wika. 863 00:47:47,229 --> 00:47:49,520 Sa katunayan, kung papayagan mo ako sa patuloy pamumulaklak ng iyong isip, 864 00:47:49,520 --> 00:47:51,000 kaya kami ay ginagawa ang lahat ng ito. 865 00:47:51,000 --> 00:47:56,690 Maaari naming marahil gawing simple ito ng isang maliit na unti realizing na, siyempre, 866 00:47:56,690 --> 00:48:02,120 Swift ay may isang exponentiating function na built in. 867 00:48:02,120 --> 00:48:04,660 Kung import ko Darwin, kung saan ay lamang ang library na 868 00:48:04,660 --> 00:48:09,680 Nagtatampok ang function na tinatawag na pow, ngayon Maaari ko bang gawing simple ang aking kapangyarihan ng pag-andar 869 00:48:09,680 --> 00:48:11,830 na ang mga sumusunod. 870 00:48:11,830 --> 00:48:15,860 Ito ay pagpunta sa ay bumabalik anonymous function na ito. 871 00:48:15,860 --> 00:48:17,950 >> Ngunit tumingin sa kung paano simple ito ay ngayon. 872 00:48:17,950 --> 00:48:22,780 Ito ay isang hindi kilalang function na ay tumatanggap ng ilang mga uri ng data, 873 00:48:22,780 --> 00:48:26,600 at ito ay magiging isa argument na partikular, 874 00:48:26,600 --> 00:48:29,320 isinangguni sa $ 0 na ng uri Double. 875 00:48:29,320 --> 00:48:32,680 Ito ay pagpunta upang bumalik sa isang uri Double. 876 00:48:32,680 --> 00:48:35,760 Ngunit ang return statement ay implicit ngayon. 877 00:48:35,760 --> 00:48:39,990 >> At ito ay ang eksaktong estilo na ay tunay, tunay na laganap sa Swift, 878 00:48:39,990 --> 00:48:40,790 lahat ng dako ng lugar. 879 00:48:40,790 --> 00:48:43,190 Kami ay pagpunta upang makita ito lahat ng oras sa Swift. 880 00:48:43,190 --> 00:48:46,150 Kaya ako na nagpapakita ng lahat ng mga ito sa iyo dahil sa ang syntax na ito. 881 00:48:46,150 --> 00:48:49,070 Ito ay napaka-pangkaraniwan upang makita, na nangangahulugan na ito 882 00:48:49,070 --> 00:48:51,420 ay isang hindi kilalang function na gumaganap 883 00:48:51,420 --> 00:48:54,640 ang ilang mga operasyon sa mga argumento. 884 00:48:54,640 --> 00:48:56,940 At doon ay isang implicit return. 885 00:48:56,940 --> 00:49:01,850 Kaya ito ay ganap na ang parehong bagay para sa amin upang sabihin na ito, dito mismo. 886 00:49:01,850 --> 00:49:05,730 887 00:49:05,730 --> 00:49:08,150 >> Dahil ito kulot bracket ay isang function, 888 00:49:08,150 --> 00:49:10,480 hindi namin maisagawa ang operasyon sa unang argumento. 889 00:49:10,480 --> 00:49:12,170 Kami ay pagpunta sa bumalik na. 890 00:49:12,170 --> 00:49:14,815 Ngunit ito outer return ay bumabalik na ang buong pag-andar, 891 00:49:14,815 --> 00:49:19,855 na ang buong pag-andar anonymous na lamang na nilikha namin. 892 00:49:19,855 --> 00:49:21,689 Anumang iba pang mga katanungan? 893 00:49:21,689 --> 00:49:23,980 Sige, hindi ko alam kung ka guys ay handa na para sa mga ito, 894 00:49:23,980 --> 00:49:27,455 ngunit kami ay maaaring pumunta kahit crazier sa Swift. 895 00:49:27,455 --> 00:49:28,560 Handa ka na? 896 00:49:28,560 --> 00:49:29,930 OK, ito ay mahusay. 897 00:49:29,930 --> 00:49:35,310 >> Ngayon ang tunay na kami ay may kakayahan upang, sa Swift, dahil sa kung paano modular 898 00:49:35,310 --> 00:49:39,650 at kung paano batay protocol na ito ay, sa tukuyin ang aming sariling freaking operator. 899 00:49:39,650 --> 00:49:44,060 Tulad ng sa kasong ito, kami ay walang operator para exponentiation-- rin, 900 00:49:44,060 --> 00:49:47,990 para sa pagganap ng kapangyarihan ng isang bagay. 901 00:49:47,990 --> 00:49:53,632 Ngunit maaari ko, sa Swift, tukuyin ang isang bagong operator na ang tiyak na. 902 00:49:53,632 --> 00:49:55,590 Kaya sa kasong ito ay mayroong ng grupo ng mga syntax dito. 903 00:49:55,590 --> 00:49:59,980 At kukunin ko na magbibigay-daan sa iyo upang tingnan ang mga ito sa bahay kapag tiningnan mo ito. 904 00:49:59,980 --> 00:50:06,890 Ngunit kami ay pagtukoy ito itanim operator, **, na pagkatapos ay magbibigay-daan sa amin, 905 00:50:06,890 --> 00:50:09,840 sa pamamagitan ng pagtukoy kung ano na ang function na ** talaga 906 00:50:09,840 --> 00:50:15,010 ay, upang tanggapin ang isang kaliwang kamay panig at isang kanang bahagi, 907 00:50:15,010 --> 00:50:21,190 at pagkatapos ay ibalik ang exponent ng na kaliwang bahagi sa kanang bahagi. 908 00:50:21,190 --> 00:50:24,850 >> At kaya ngayon lahat ng isang biglaang ko ay lumikha ng isang bagong tagabilang. 909 00:50:24,850 --> 00:50:29,490 Kaya 2 ** 3 nangangahulugan 2 sa ikatlong kapangyarihan. 910 00:50:29,490 --> 00:50:34,420 [Isip Pagbugso ng tunog] na ito sa pamamagitan dapat mismo gumawa ka na tulad ng, 911 00:50:34,420 --> 00:50:37,960 OK, tornilyo C. Pupunta ako Swift lahat ng mga paraan. 912 00:50:37,960 --> 00:50:38,740 Ito ay kahanga-hanga. 913 00:50:38,740 --> 00:50:40,140 Ito ay medyo hindi kapani-paniwala. 914 00:50:40,140 --> 00:50:42,240 >> Kahit na ito ay isang magandang halimbawa. 915 00:50:42,240 --> 00:50:45,570 Ngunit mayroon akong hindi kailanman isang beses sa labas ng halimbawa na ito ang tunay na 916 00:50:45,570 --> 00:50:46,800 tinukoy ang aking sariling mga operator. 917 00:50:46,800 --> 00:50:49,710 Ngunit pa rin, ito ay nagpapakita ng isang pulutong ng kapangyarihan ng Swift 918 00:50:49,710 --> 00:50:54,050 at kung bakit ito ay talagang talagang napaka-cool. 919 00:50:54,050 --> 00:50:55,832 OK, yes? 920 00:50:55,832 --> 00:50:57,790 Madla: Kung ikaw ay pagtukoy ng iyong sariling operator, 921 00:50:57,790 --> 00:51:02,940 kung paano ang kilala mo kung hindi mo sinasadyang subukan at lumikha ng isang operator na 922 00:51:02,940 --> 00:51:06,040 sa tabi-tabi sa C, tulad ng nakatago sa isang lugar sa Swift, 923 00:51:06,040 --> 00:51:12,210 tulad ng isang isa ikukubli na kayo Maaaring hindi nakita bago. 924 00:51:12,210 --> 00:51:15,050 >> DAN Armendariz: Kaya kung sinusubukan upang tukuyin ang iyong sariling mga operator, 925 00:51:15,050 --> 00:51:20,970 diyan ay ang panganib ng pagtukoy isa sa paglipas ng isang umiiral na operator. 926 00:51:20,970 --> 00:51:24,870 Iyon ay pumunta sa isang antas ng detalye na Hindi sa tingin ko kami ay may oras upang pumunta sa ibabaw. 927 00:51:24,870 --> 00:51:27,620 Ngunit iyon ay isang panganib. 928 00:51:27,620 --> 00:51:31,320 At iyon ay sa katunayan ang tunay na dahilan kung bakit Hindi ko gamitin ang simbolo caret, na 929 00:51:31,320 --> 00:51:36,210 kapag kami ay pag-type ang kapangyarihan, kami ay karaniwang gamitin ang 4 maliit caret 5 o isang bagay 930 00:51:36,210 --> 00:51:40,560 tulad na, lamang kapag kami ay Gchatting buddies o anuman. 931 00:51:40,560 --> 00:51:43,660 Ngunit sa kasong iyon, na talagang ay may dulot ng isang banggaan. 932 00:51:43,660 --> 00:51:46,450 At kaya ako iwasan ito dahil lang Nangyari kong malaman na sa kasong ito 933 00:51:46,450 --> 00:51:50,430 na na magiging dahilan na banggaan. 934 00:51:50,430 --> 00:51:52,270 >> Lahat tama. 935 00:51:52,270 --> 00:51:55,080 Ngayon sa kasamaang-palad, para sa sa huling pitong minuto, 936 00:51:55,080 --> 00:51:57,410 Kailangan ko bang panatilihin ang pamumulaklak inyong mga isipan nang kaunti. 937 00:51:57,410 --> 00:52:00,230 Kaya payagan ako upang ipakita sa iyo ilang iba pang mga bagay-bagay pati na rin. 938 00:52:00,230 --> 00:52:03,710 >> Kami ay ipinapakita ang ideya na ito ng sa iyo pagkakaroon ng mga anonymous na function, 939 00:52:03,710 --> 00:52:07,040 mga closures na magpapahintulot sa inyo na uri ng pumasa function sa paligid. 940 00:52:07,040 --> 00:52:08,100 Maaari mong ibalik ang mga ito. 941 00:52:08,100 --> 00:52:09,490 Maaari mong manipulahin ang mga ito. 942 00:52:09,490 --> 00:52:11,790 Maaari mong gawin ang lahat ng mga uri ng mga nakatutuwang bagay-bagay. 943 00:52:11,790 --> 00:52:14,850 >> Ngunit ang isa pang bagay na ang mangyayari sa maging kapaki-pakinabang 944 00:52:14,850 --> 00:52:19,740 ay ang kakayahang, bilang kabaligtaran sa pagbabalik ng mga function 945 00:52:19,740 --> 00:52:25,146 sa isang function, upang pumasa sa isang function bilang isang parameter sa ibang gamit. 946 00:52:25,146 --> 00:52:30,430 Maaaring nag-iisip na rin kung bakit sa Earth Gusto ko nais na gawin ang isang bagay tulad na? 947 00:52:30,430 --> 00:52:33,660 >> Well, sabihin natin na gusto ko kunin ang operator na ako 948 00:52:33,660 --> 00:52:40,260 nagtrabaho nang husto upang lumikha at mag-aplay ito sa isang grupo ng mga iba't ibang mga numero 949 00:52:40,260 --> 00:52:41,770 sa isang array. 950 00:52:41,770 --> 00:52:46,700 Kaya sa kasong ito Mayroon akong isang hanay ng mga integers-- 1, 4, 7, 2, 5, 10, 56. 951 00:52:46,700 --> 00:52:48,080 At gusto ko upang i-double ito lahat. 952 00:52:48,080 --> 00:52:50,430 Ang paraan na gusto namin karaniwang gawin ito ay upang magsulat lamang 953 00:52:50,430 --> 00:52:53,440 isang simpleng para sa loop na iterates higit sa lahat ng mga ito 954 00:52:53,440 --> 00:52:57,140 at magsagawa ng mga ilang uri ng mga square operasyon sa loob ng mga ito, 955 00:52:57,140 --> 00:53:02,700 inputting mga bagong halaga sa isang bagong variable, o sa halip, ang isang bagong array dito. 956 00:53:02,700 --> 00:53:07,370 At ang halaga ng output ng pagkatapos resulta ay ang lahat ng mga array, 957 00:53:07,370 --> 00:53:10,200 o sa halip ng lahat ng mga elemento ngayon nakalapat. 958 00:53:10,200 --> 00:53:12,680 >> At maaari naming gawin ang parehong bagay para sa cubing ito, 959 00:53:12,680 --> 00:53:15,360 ngunit ang isang maliit na kampanilya alarma dapat maging pagpunta off 960 00:53:15,360 --> 00:53:17,360 sinasabi na baka may ang ilang mga paraan na gusto namin 961 00:53:17,360 --> 00:53:19,860 maaaring gawing simple na ito nang kaunti. 962 00:53:19,860 --> 00:53:21,130 At sa katunayan ay may. 963 00:53:21,130 --> 00:53:25,320 Paano kung maaari naming lumikha isang function na nagpapahintulot sa amin 964 00:53:25,320 --> 00:53:28,350 upang tanggapin, bilang isang mandaragit, isang function? 965 00:53:28,350 --> 00:53:30,350 Kaya sa kasong ito, kumuha ng isang tingnan ang mga argumento. 966 00:53:30,350 --> 00:53:33,220 Kami ay pagpunta sa tanggapin ang isang listahan ng mga doubles. 967 00:53:33,220 --> 00:53:35,030 At pagkatapos kami ay pagpunta upang tanggapin ang isang function 968 00:53:35,030 --> 00:53:40,990 sa isang variable na tinatawag na f na pagpunta upang kumuha ng Double at ibalik ang isang Double. 969 00:53:40,990 --> 00:53:43,320 At ang buong output ng buong pag-andar 970 00:53:43,320 --> 00:53:47,310 tinatawag mapper ay pagpunta sa bumalik sa isang array na tinatawag na double. 971 00:53:47,310 --> 00:53:52,380 >> Ano ang gusto ito at pagkatapos ay payagan ako sa gawin ay upang umulit sa listahan na 972 00:53:52,380 --> 00:53:56,350 at gawin ang parehong bagay, ngunit ngayon mag-apply na function sa bawat 973 00:53:56,350 --> 00:53:58,970 ng mga indibidwal na mga halaga sa listahang iyon. 974 00:53:58,970 --> 00:54:00,750 Kaya hindi ko talaga alam kung ano ang f ay. 975 00:54:00,750 --> 00:54:02,010 Hindi mahalaga sa akin. 976 00:54:02,010 --> 00:54:06,530 Subalit kaya hangga't ito ay tumatagal sa isang Double, ang pagganap ng ilang mga operasyon sa mga ito, 977 00:54:06,530 --> 00:54:08,640 at pagkatapos ay nagbabalik ng isang Double, pagkatapos Gusto ko ay 978 00:54:08,640 --> 00:54:13,415 able sa mapa na function sa kabuuan bawat solong elemento sa listahan. 979 00:54:13,415 --> 00:54:16,270 980 00:54:16,270 --> 00:54:20,930 >> At sa ganitong uri ng programa ay tinatawag na mas mataas na pag-andar order, 981 00:54:20,930 --> 00:54:24,440 kung saan kami ay pagpasa function sa paligid ng bilang ng mga parameter 982 00:54:24,440 --> 00:54:26,430 at paggawa ng mga bagay na may pag-andar. 983 00:54:26,430 --> 00:54:29,640 Ito ay uri ng tulad ng pagkuha ng lahat ng mga mga ideya na iyong natutunan namin sa CS50 984 00:54:29,640 --> 00:54:31,390 at pagkuha ng mga ito-uri-uriin ng sa susunod na antas. 985 00:54:31,390 --> 00:54:34,140 At ito ay ang lahat ng mga bagay-bagay style CS51. 986 00:54:34,140 --> 00:54:37,080 At kaya kami ay pumunta sa malalim higit pa sa klase na tulad ng. 987 00:54:37,080 --> 00:54:38,930 >> Ngunit ito ay din mahalaga dito dahil tayo 988 00:54:38,930 --> 00:54:42,010 makita ang marami ng mga pag-andar na ginagamit sa Swift 989 00:54:42,010 --> 00:54:45,590 na mahalagang ginagawa na ito, kung saan mayroon kaming 990 00:54:45,590 --> 00:54:48,300 ang ilang mga numero, ang ilang mga hanay ng mga numero. 991 00:54:48,300 --> 00:54:50,850 Kami ay pagpunta sa pumasa na array sa aming mapper. 992 00:54:50,850 --> 00:54:55,770 At kami ay din ng pagpunta sa pumasa ang ilang mga function, kung saan 993 00:54:55,770 --> 00:54:57,950 na tinukoy namin ang up dito. 994 00:54:57,950 --> 00:54:59,690 Ito ay pagpunta sa maging square. 995 00:54:59,690 --> 00:55:02,220 At kami ay pagpunta sa pagkatapos ay parisukat ang lahat ng mga numero 996 00:55:02,220 --> 00:55:04,710 at mag-store na ito sa mga resulta dito. 997 00:55:04,710 --> 00:55:07,280 998 00:55:07,280 --> 00:55:11,000 >> Kaya kasong ito na tinukoy namin ang aming sariling function na tinatawag na mapper. 999 00:55:11,000 --> 00:55:15,370 Ngunit ito eksaktong bagay ay, sa katunayan, na binuo sa Swift. 1000 00:55:15,370 --> 00:55:18,960 May mga iba't-ibang mga tinatawag na function na mapa. 1001 00:55:18,960 --> 00:55:21,520 May isang function na mapa, mayroong isang mabawasan function, 1002 00:55:21,520 --> 00:55:25,630 at mayroong isang filter na function, na mahalagang ilapat function 1003 00:55:25,630 --> 00:55:30,782 sa bawat solong elemento sa isang ilista na baguhin ang mga ito sa ilang mga paraan. 1004 00:55:30,782 --> 00:55:34,510 >> Madla: Kaya dahil ikaw ay pagbabago ang data sa ibang format 1005 00:55:34,510 --> 00:55:36,134 sa pamamagitan ng isang function 1006 00:55:36,134 --> 00:55:37,050 DAN Armendariz: Kanan. 1007 00:55:37,050 --> 00:55:39,420 Oo, kaya ang pag-andar na kami ay tumatanggap ng mga 1008 00:55:39,420 --> 00:55:41,790 ay pagbabago sa data sa ilang mga paraan. 1009 00:55:41,790 --> 00:55:44,700 Sa kasong ito, kami ay mag squaring ito, o kami ay cubing ito, 1010 00:55:44,700 --> 00:55:50,060 o talagang, maaari naming magsagawa ng walang operasyon sa mga ito sa lahat. 1011 00:55:50,060 --> 00:55:54,150 >> Ngunit hayaan mo akong ipakita sa iyo pagkatapos ay kung paano ito ay pagpunta sa tumingin sa pagsasanay. 1012 00:55:54,150 --> 00:55:56,681 At muli, ako nagpapatakbo ng isang piraso ng oras. kaya hindi ako 1013 00:55:56,681 --> 00:55:59,430 pagpunta sa magagawang upang pumunta sa lahat ng source code dito sa detalye. 1014 00:55:59,430 --> 00:56:00,721 Ngunit Hinihikayat ko kayo na gawin iyon. 1015 00:56:00,721 --> 00:56:03,850 Magpo-post kami ng ito sa lalong madaling panahon pagkatapos na ito talk. 1016 00:56:03,850 --> 00:56:07,610 >> Ngunit kung ikaw ay kumuha ng isang pagtingin sa mga ito, ipagpalagay na kami ay may isang listahan ng mga numero, 1017 00:56:07,610 --> 00:56:10,260 isang hanay ng mga numero sa mga ito variable na tinatawag na numero. 1018 00:56:10,260 --> 00:56:16,670 At gusto namin upang maisagawa ito filter na operasyon sa mga numero. 1019 00:56:16,670 --> 00:56:19,730 Kaya filter ay isang mas mataas order function na 1020 00:56:19,730 --> 00:56:24,660 tumatanggap ng isang array at isang function din. 1021 00:56:24,660 --> 00:56:28,760 At sa bawat sangkap sa mga array, ito ay gumaganap na function. 1022 00:56:28,760 --> 00:56:31,990 >> Kung na function ay nagbabalik totoo, iniingatan nito ang item na iyon. 1023 00:56:31,990 --> 00:56:36,100 Kung na function ay nagbabalik ng hindi totoo, ito ay nagtatapon ng item na iyon. 1024 00:56:36,100 --> 00:56:40,480 At pagkatapos ay nagbabalik ng isang listahan na pagkatapos ay binubuo ng lahat 1025 00:56:40,480 --> 00:56:44,360 sa mga bagay na na-filter. 1026 00:56:44,360 --> 00:56:47,150 >> Kaya sa ibang salita, ito ay ang parehong ideya, markahan. 1027 00:56:47,150 --> 00:56:50,800 Maaari naming magkaroon ng isang iba't ibang mga marka sa halaga na ito na tinatawag na numero. 1028 00:56:50,800 --> 00:56:55,590 Puwede na 100, at 70, at 40, para sa at iba pa. 1029 00:56:55,590 --> 00:56:59,110 Ano ang filter na ito ay ay notice na ito ay na ang sintaktik asukal 1030 00:56:59,110 --> 00:57:01,310 para sa isang hindi nakikilalang function. 1031 00:57:01,310 --> 00:57:05,980 Ito ay isang hindi kilalang function na sinasabi na ang mga parameter na ako tumatanggap ng mga 1032 00:57:05,980 --> 00:57:09,690 ay magiging, kung ito ay mas malaki kaysa sa 70, 1033 00:57:09,690 --> 00:57:15,837 pagkatapos na ito ay nagbabalik ng tunay, ibig sabihin na na item ay dapat manatili sa filter na ito. 1034 00:57:15,837 --> 00:57:17,920 Kaya maging ang isang maliit na bit ipaalam mas kongkreto tungkol dito. 1035 00:57:17,920 --> 00:57:25,760 Kung may ganito akong array ng mga numero at ito ay binubuo ng 100, 70, at 40, 1036 00:57:25,760 --> 00:57:29,730 Gawin ko ang filter na ito operasyon sa bawat isa sa mga iyon. 1037 00:57:29,730 --> 00:57:33,270 Kaya na una ay ang halaga na ito ng 100. 1038 00:57:33,270 --> 00:57:36,770 100 mas mataas o katumbas hanggang 70 ay totoo, na 1039 00:57:36,770 --> 00:57:41,950 ay nangangahulugan na ang 100 ay nag-iingat sa ito ng mga bagong kopya ng array. 1040 00:57:41,950 --> 00:57:44,290 70 din pumasa. 1041 00:57:44,290 --> 00:57:46,020 Ngunit 40 ay hindi. 1042 00:57:46,020 --> 00:57:54,290 Kaya kung ano ay ibinalik sa passingCount ay ang dami ng mga elemento ng 100 at 70-- 1043 00:57:54,290 --> 00:57:57,410 100, kuwit, 70. 1044 00:57:57,410 --> 00:57:59,870 Yaong ay ang dalawang lamang mga item na nag-iingat. 1045 00:57:59,870 --> 00:58:03,740 At upang ang mga dahilan ko mabilis nagpunta sa pamamagitan ng isang pulutong ng mga uri ng mga mataas na order 1046 00:58:03,740 --> 00:58:08,680 bagay na ito ay dahil ito ay na karaniwang bagay na makikita mo sa Swift pretty 1047 00:58:08,680 --> 00:58:16,810 madalas, ay gumagawa ng ilang mga operasyon gamit na ito anonymous syntax function. 1048 00:58:16,810 --> 00:58:18,450 >> May ilang mga cool na bagay. 1049 00:58:18,450 --> 00:58:24,730 Lilipat ay tunay na makapangyarihan sa Swift, Ibig sabihin ko tulad ng mabaliw, mabaliw makapangyarihan. 1050 00:58:24,730 --> 00:58:28,250 Maaari mong gamitin ang switch, at Maaari mong aktwal na mag-aplay ang mga ito 1051 00:58:28,250 --> 00:58:33,160 na mga saklaw, na kung saan ay uri ng mabaliw, at gawin magarbong bagay-bagay na tulad ng. 1052 00:58:33,160 --> 00:58:37,540 >> Ngunit sa huling ilang mga minuto, Gusto ko na maunang lumaktaw Medyo malayo 1053 00:58:37,540 --> 00:58:46,940 at magpapakita sa iyo ng isang tiyak na halimbawa ng kung paano maaari naming lumikha sa iOS app gamit Swift. 1054 00:58:46,940 --> 00:58:49,040 Kaya kapag ikaw ay gumagawa ng na ito, magkakaroon ka upang kumuha ng 1055 00:58:49,040 --> 00:58:51,990 isang tumingin at-- sa Apple dokumentasyon, sila 1056 00:58:51,990 --> 00:58:56,084 magkaroon ng maraming talagang magandang mga tutorial para sa paglikha ng iyong unang application. 1057 00:58:56,084 --> 00:58:58,250 At hinihikayat ka kong gawin na dahil sila magdadala sa iyo 1058 00:58:58,250 --> 00:59:04,110 sa pamamagitan ng lahat ng mga hakbang ng kung ano ang eksaktong sa mag-click sa upang lumikha ng isang iOS application. 1059 00:59:04,110 --> 00:59:07,290 >> Ngunit dito kami ay may ito iOS app. 1060 00:59:07,290 --> 00:59:10,960 At ito ay isang medyo simple app talaga. 1061 00:59:10,960 --> 00:59:13,840 Kung nagpapatakbo ko ito, sabihin sa akin sa iyo kung ano ang mukhang. 1062 00:59:13,840 --> 00:59:19,480 Lahat ng ito ay mahalagang ay ito kinukuha mula sa internet sa isang JSON file 1063 00:59:19,480 --> 00:59:22,300 na ako ay may naka-imbak sa isang server. 1064 00:59:22,300 --> 00:59:26,310 At na JSON file Tinutukoy ng mga imahe na payagan 1065 00:59:26,310 --> 00:59:31,680 sa akin na pagkatapos cycle sa pamamagitan ng, sa aking app, imahe mula sa aking web server. 1066 00:59:31,680 --> 00:59:32,880 >> Kaya ko dito getNextImage. 1067 00:59:32,880 --> 00:59:37,100 Naglo-load Ito ang isang imahe mula sa internet, at pagkatapos ay ipinapakita ang mga ito sa screen. 1068 00:59:37,100 --> 00:59:38,200 >> Kaya ito ay medyo simple. 1069 00:59:38,200 --> 00:59:41,550 Ngunit ang layunin dito ay upang ipakita ang sa iyo kung paano maaari naming pagsamahin ang mga bagay 1070 00:59:41,550 --> 00:59:47,820 mula sa ilang huling linggo ng CS50 sa isang aktwal na iOS application. 1071 00:59:47,820 --> 00:59:53,140 Sa ibang salita, marahil ang isa sa mga mga bagay na gusto mong gawin 1072 00:59:53,140 --> 00:59:56,340 ay ang pagkakaroon ng iOS application na maaaring hilahin ang data mula sa internet 1073 00:59:56,340 --> 00:59:59,070 at ipakita ng user ang ilang impormasyon. 1074 00:59:59,070 --> 01:00:03,130 Iyon ay ganap na punto ng source code dito. 1075 01:00:03,130 --> 01:00:07,890 >> Kaya mayroong isang pulutong na sinabi tungkol sa kung paano gawin ang mga aktwal na iOS-unlad. 1076 01:00:07,890 --> 01:00:12,860 May ay isang pulutong ng mga loko syntax na hindi masyadong pa namin nakikita 1077 01:00:12,860 --> 01:00:15,580 tulad ng isang klase, kung ano ang isang klase ay talagang. 1078 01:00:15,580 --> 01:00:19,470 Maaaring higit sa lahat naming huwag pansinin na para sa pansamantala. 1079 01:00:19,470 --> 01:00:23,250 >> Ngunit mapansin na may nakapaloob namin sa loob ito ng iba't-ibang mga bagay-bagay 1080 01:00:23,250 --> 01:00:27,720 na kami ay nakita ko na tulad ng mga function na may tiyak na pangalan. 1081 01:00:27,720 --> 01:00:32,650 At kapag binigyan kami ng mga mga function na ang tamang mga pangalan 1082 01:00:32,650 --> 01:00:36,530 na inaasahan sa pamamagitan ng iOS, sa katunayan ito nararamdaman ng isang maliit na piraso nakapagtataka. 1083 01:00:36,530 --> 01:00:40,300 Ngunit kapag lumikha ka ng isang iOS application, may 1084 01:00:40,300 --> 01:00:47,590 mga tiyak na mga pangalan ng function na tinatawag sa pamamagitan ng telepono mismo 1085 01:00:47,590 --> 01:00:52,440 bilang ang application ay naglo-load na subukan upang lumikha ng mga proseso na aktwal 1086 01:00:52,440 --> 01:00:54,787 tumatakbo ang iyong application. 1087 01:00:54,787 --> 01:00:58,120 Kaya muli, may isang pulutong ng mga bagay na ako kung pagtakpan dito sa order para sa amin 1088 01:00:58,120 --> 01:01:00,570 upang makipag-usap tungkol sa mga partikular na ito. 1089 01:01:00,570 --> 01:01:06,050 Ngunit Hinihikayat ko kayo na tingnan marahil ang iba pang iOS seminar, kundi pati na rin ang ilang mga 1090 01:01:06,050 --> 01:01:09,290 ng tutorial online na gawin isang mas mas mahusay na trabaho ng naglalarawan 1091 01:01:09,290 --> 01:01:11,030 ang tiyak na impormasyon. 1092 01:01:11,030 --> 01:01:15,760 >> Ngunit maaari naming makita ang isang pares ng mga bagay na mga kagiliw-giliw na mula sa mga code dito. 1093 01:01:15,760 --> 01:01:17,950 Pansinin na kami kung ang mga pahayag. 1094 01:01:17,950 --> 01:01:20,400 Sa pamamagitan ng paraan, ang isang mahalagang bagay tungkol sa kung ang mga pahayag 1095 01:01:20,400 --> 01:01:24,860 ay na ang mga panaklong sa paligid ng Boolean expression ay opsyonal. 1096 01:01:24,860 --> 01:01:30,800 Ngunit ang curly braces ay hindi opsyonal, kahit gaano kaunti o maraming mga linya ng code 1097 01:01:30,800 --> 01:01:32,360 mayroon ka sa isang pahayag kung. 1098 01:01:32,360 --> 01:01:38,670 Hindi ka maaaring magkaroon ng isang kung pahayag walang curly braces sa Swift. 1099 01:01:38,670 --> 01:01:41,000 >> At ito ay, well, uri ng mga uto. 1100 01:01:41,000 --> 01:01:43,910 Ngunit mayroong mga makasaysayang dahilan para sa na. 1101 01:01:43,910 --> 01:01:46,180 Ito ay dapat na i-save mo mula sa iyong sarili. 1102 01:01:46,180 --> 01:01:49,899 Tulad nito, halimbawa, hindi mo maaaring maalis ang curly braces sa paligid na 1103 01:01:49,899 --> 01:01:50,440 kung pahayag. 1104 01:01:50,440 --> 01:01:52,730 Yaong ay sa katunayan kinakailangan. 1105 01:01:52,730 --> 01:01:54,480 Kaya Hinihikayat ko kayo na tingnan ang mga ito. 1106 01:01:54,480 --> 01:01:56,230 Ngunit may isa pang tayuan na gusto ko 1107 01:01:56,230 --> 01:02:02,640 upang ipakita sa iyo ang tungkol sa Swift na ay bago sa Swift 2.0 kung ihahambing 1108 01:02:02,640 --> 01:02:08,460 sa mga mas lumang mga bersyon ng Swift, na kung saan ay ang mga sumusunod. 1109 01:02:08,460 --> 01:02:11,620 Sabihin makita kung saan ito ilalagay ko dito? 1110 01:02:11,620 --> 01:02:16,630 >> Kaya sa function na tinatawag na fetchJSON, function na ito 1111 01:02:16,630 --> 01:02:23,450 ay responsable para sa paghila na JSON maghain mula sa isang URL, na lang kaya ang mangyayari 1112 01:02:23,450 --> 01:02:26,310 na tumatakbo sa aking CS50 IDE. 1113 01:02:26,310 --> 01:02:28,580 Ko lamang na nagsimula Apache, ilagay ang aking JSON file doon, 1114 01:02:28,580 --> 01:02:32,110 at ako makapag-pagkatapos ay hilahin na data mula sa internet gamit 1115 01:02:32,110 --> 01:02:36,430 mga function na ito at ang URL na ito, na kung saan ay ibinigay sa pamamagitan ng telepono. 1116 01:02:36,430 --> 01:02:40,490 Ito ay ibinigay sa pamamagitan ng isang library na gamitin mo kapag 1117 01:02:40,490 --> 01:02:43,140 ikaw ay gumagawa ng ilang mga pag-unlad iOS app. 1118 01:02:43,140 --> 01:02:49,690 >> Pansinin dito na ito sa hindi pangkaraniwang syntactical tayuan tinatawag bantay. 1119 01:02:49,690 --> 01:02:53,530 At talagang lahat ng ito ay nasa Swift ay isang paraan ng pag-verify 1120 01:02:53,530 --> 01:02:56,870 na ang ilang mga bagay na kailangan ito ay natutugunan bago ka 1121 01:02:56,870 --> 01:03:00,000 magpatuloy sa ang magpahinga ng ang function. 1122 01:03:00,000 --> 01:03:04,260 Kaya ako ay maaaring magkaroon, gamit ang opsyonal na uri, 1123 01:03:04,260 --> 01:03:10,530 Maaari ko nakita ang mga URL sa pamamagitan ng tumatakbo na ito NSURL function na 1124 01:03:10,530 --> 01:03:16,640 at pagtatago na sa isang URL pare-pareho, at pagkatapos ay suri 1125 01:03:16,640 --> 01:03:20,820 upang makita kung ang URL ay wala, dahil ito ay pagpunta upang bumalik ang isang opsyonal na uri. 1126 01:03:20,820 --> 01:03:25,660 At kung ito ay wala, pagkatapos ay gagawin ko i-print out ng isang error at pagkatapos ay bumalik. 1127 01:03:25,660 --> 01:03:29,970 >> Ngunit sa halip, kung ano ang nagbibigay-daan sa guard amin gawin ay tunay na bagay, 1128 01:03:29,970 --> 01:03:34,550 ngunit tiyakin na ito ay tunay na ang kaso na ang url 1129 01:03:34,550 --> 01:03:38,020 ito ay maayos na naka-set sa pamamagitan NSURL. 1130 01:03:38,020 --> 01:03:41,810 At kung ito ay, pagkatapos ito skips higit na ito, at ito 1131 01:03:41,810 --> 01:03:46,110 ay magpapahintulot sa inyo na magpatuloy sa url pagiging maayos na tinukoy. 1132 01:03:46,110 --> 01:03:48,830 Ngunit kung ito ay ang kaso na ang url ay hindi maayos na tinukoy, 1133 01:03:48,830 --> 01:03:52,550 kung ang function ay nagbabalik ng isang error o ilang iba pang hindi inaasahang bagay 1134 01:03:52,550 --> 01:03:58,030 tunay na nangyayari, ang guard tayuan ay nagbibigay-daan sa amin upang pagkatapos ay output na error 1135 01:03:58,030 --> 01:04:00,390 at bumalik agad. 1136 01:04:00,390 --> 01:04:00,890 Oo? 1137 01:04:00,890 --> 01:04:04,839 >> Madla: Kaya ito ay uri ng mga tulad ng isang kung pagkatapos ng iba pa? 1138 01:04:04,839 --> 01:04:07,130 DAN Armendariz: Ito ay uri ng tulad ng isang kung pagkatapos ng ibang tao, oo, 1139 01:04:07,130 --> 01:04:14,200 maliban na ang url na ito ay pagkatapos tinukoy para sa lahat ng bagay na ito sa ibaba. 1140 01:04:14,200 --> 01:04:20,420 Kung ito pumasa sa guard na ito, at pagkatapos na ito ay tunay na puno ng data 1141 01:04:20,420 --> 01:04:29,500 at kapaki-pakinabang sa mga natitirang source code sa iyong function. 1142 01:04:29,500 --> 01:04:33,790 Kaya ako maghinala na ikaw ay pagpunta sa simulan na makita ang guard na ito pati na rin. 1143 01:04:33,790 --> 01:04:36,670 At alintanahin na. 1144 01:04:36,670 --> 01:04:46,270 >> Kaya lamang ng pagtingin sa isang pares ng mga iba pang bagay na ito, ang karapatan na ito dito ay kung ano ang, 1145 01:04:46,270 --> 01:04:53,377 sa tingin ninyo, batay lamang sa kung ano ang bago namin ay pakikipag-usap tungkol sa? 1146 01:04:53,377 --> 01:04:56,650 >> Madla: Mag-isip ito ay tumakbo sa listahan? 1147 01:04:56,650 --> 01:04:59,100 >> DAN Armendariz: Kaya na close. 1148 01:04:59,100 --> 01:05:02,360 Ito ay isang function na tayo ay pagtukoy. 1149 01:05:02,360 --> 01:05:07,240 At kami ay inputting na function bilang isang argument sa function na ito dito. 1150 01:05:07,240 --> 01:05:09,120 >> Madla: [hindi marinig] kung hindi wala. 1151 01:05:09,120 --> 01:05:11,470 Kaya ito ay sa listahan, i-right? 1152 01:05:11,470 --> 01:05:15,450 >> DAN Armendariz: Kung error ay hindi kawalan, upang ang is-- kaya ko bang mag-scroll. 1153 01:05:15,450 --> 01:05:18,060 Well, tingnan natin, hindi talaga ko mag-scroll sa kanan dito. 1154 01:05:18,060 --> 01:05:23,161 error ay isang argument na ang pagiging lumipas na hindi kilalang function na ito. 1155 01:05:23,161 --> 01:05:24,410 Ito ay isang hindi nakikilalang function. 1156 01:05:24,410 --> 01:05:25,480 Ito ay walang pangalan. 1157 01:05:25,480 --> 01:05:29,850 Ngunit kami ay tumatanggap ng mga tatlong arguments, data, tugon, at error. 1158 01:05:29,850 --> 01:05:33,590 At ito ay pagpunta sa bumalik walang bisa, kaya hindi ito ay pagpunta upang bumalik sa anumang bagay. 1159 01:05:33,590 --> 01:05:37,910 At ito ay ang mga nilalaman ng na function. 1160 01:05:37,910 --> 01:05:41,961 At pagkatapos kami ay may access sa loob na function na sa bawat isa sa mga argumento. 1161 01:05:41,961 --> 01:05:45,650 1162 01:05:45,650 --> 01:05:48,679 >> Kaya ito ay isang whirlwind tour ng wika. 1163 01:05:48,679 --> 01:05:50,470 Ngunit Umaasa ako sa mga ito, sana habang kinukuha mo 1164 01:05:50,470 --> 01:05:54,490 tingnan ang ilan sa mga tutorial tiyak sa iOS-unlad sa Swift, 1165 01:05:54,490 --> 01:05:57,481 lalo na kung ikaw ay pupunta sa Web page-- developer Apple 1166 01:05:57,481 --> 01:05:59,980 sila ay may isang pulutong ng mga tunay mabuti tutorial upang makapagsimula ka. 1167 01:05:59,980 --> 01:06:05,010 Ngunit sana lang sa oras na ito ng pakikipag-usap tungkol sa syntax mismo ay nagbigay sa 1168 01:06:05,010 --> 01:06:08,760 ikaw ay sapat na upang makapagsimula na. 1169 01:06:08,760 --> 01:06:12,950 >> Magpo-post kami ng lahat ng mga ito ang pinagmulan code sa seminar website 1170 01:06:12,950 --> 01:06:17,800 sa lalong madaling panahon, at din ang mga slide kaya mayroon kang isang reference para sa lahat ng mga iyon. 1171 01:06:17,800 --> 01:06:20,530 Ngunit good luck sa iyong proyekto. 1172 01:06:20,530 --> 01:06:23,640 At salamat sa iyo ang lahat ng napaka para sa pagdating. 1173 01:06:23,640 --> 01:06:26,990 >> [Palakpakan] 1174 01:06:26,990 --> 01:06:28,026