1 00:00:00,000 --> 00:00:11,270 2 00:00:11,270 --> 00:00:14,340 >> DANIEL Armendáriz: Ola, todos, Benvido ao IOS desenvolvemento de aplicacións 3 00:00:14,340 --> 00:00:15,020 con rápida. 4 00:00:15,020 --> 00:00:15,870 Eu son Dan Armendáriz. 5 00:00:15,870 --> 00:00:18,920 Estou precepter de ordenador ciencia aquí na Escola 6 00:00:18,920 --> 00:00:21,200 de Enxeñaría e Ciencias Aplicadas. 7 00:00:21,200 --> 00:00:24,310 E rápida é realmente tipo dunha linguaxe realmente puro. 8 00:00:24,310 --> 00:00:27,190 E eu teño algúns plans para hoxe. 9 00:00:27,190 --> 00:00:31,430 Así, durante a hora seguinte ou entón imos mirar para si iOS desenvolvemento app 10 00:00:31,430 --> 00:00:36,640 usando o Xcode e realmente crear algún , Aplicacións moi sinxelo, moi básicas. 11 00:00:36,640 --> 00:00:40,070 E ollando para a forma que realmente tomar esas aplicacións, 12 00:00:40,070 --> 00:00:42,887 e constrúe-los, e, de feito, poñer-los nun dispositivo IOS. 13 00:00:42,887 --> 00:00:44,970 Algunhas das cousas que nós non imos ollar para 14 00:00:44,970 --> 00:00:47,540 ha incluír cousas como realmente tomando unha aplicación 15 00:00:47,540 --> 00:00:48,940 e poñelas na App Store. 16 00:00:48,940 --> 00:00:52,930 Hai unha morea de tutoriais en liña que vai axudar con este aspecto. 17 00:00:52,930 --> 00:00:56,230 Pero tamén porque canto parte CS50, comeza 18 00:00:56,230 --> 00:00:59,780 para participar do desenvolvemento de Apple equipo, equipo de desenvolvemento do app do CS50. 19 00:00:59,780 --> 00:01:02,790 Se vostede non fixo iso aínda, e é socio CS50, 20 00:01:02,790 --> 00:01:04,810 Eu recomendo que facelo, porque iso 21 00:01:04,810 --> 00:01:08,820 É así que é capaz de crear algúns programas no Xcode, 22 00:01:08,820 --> 00:01:11,890 constrúe-los, e realmente poñer Los nalgúns dos seus dispositivos iOS 23 00:01:11,890 --> 00:01:14,087 se realmente ten un dispositivo físico IOS. 24 00:01:14,087 --> 00:01:16,670 Se non ten un IOS física dispositivo que é máis que ben. 25 00:01:16,670 --> 00:01:19,810 Pode realmente desenvolver para iOS. 26 00:01:19,810 --> 00:01:22,390 E ten unha Xcode simulador que permite a vostede 27 00:01:22,390 --> 00:01:26,570 para ver a súa aplicación en acción no seu ordenador. 28 00:01:26,570 --> 00:01:30,440 Pero que tipo de é unha cousa pura para realmente xogar e interactuar 29 00:01:30,440 --> 00:01:34,235 coa súa candidatura nun dispositivo real. 30 00:01:34,235 --> 00:01:37,360 Polo tanto, hai un par de requisitos para realmente facer todo isto de desenvolvemento. 31 00:01:37,360 --> 00:01:39,151 Unha delas é que ten que ter un Mac. 32 00:01:39,151 --> 00:01:44,770 Ten que estar en execución 10.9.4 ou posterior a fin de facer o desenvolvemento con rápida. 33 00:01:44,770 --> 00:01:47,770 >> Pode usar unha versión anterior versión para desenvolver 34 00:01:47,770 --> 00:01:50,810 con Objective C para iOS e Mac. 35 00:01:50,810 --> 00:01:53,990 Pero eu recomendo, e unha gran parte do exemplos que veremos hoxe, 36 00:01:53,990 --> 00:01:55,700 usar 10,10 Yosemite. 37 00:01:55,700 --> 00:02:00,910 Entón, se aínda non ten actualizado, é unha boa escusa para facelo. 38 00:02:00,910 --> 00:02:05,480 Agora Xcode 6.1 é a versión máis recente do o contorno de desenvolvemento integrado 39 00:02:05,480 --> 00:02:08,979 que Apple prevé a libre que podes descargar fóra da App Store. 40 00:02:08,979 --> 00:02:11,220 E eu recomendo que tamén realizar a última versión. 41 00:02:11,220 --> 00:02:14,700 >> Se ocorrer de estar a executar unha versión anterior versión, Xcode 5 e abaixo só 42 00:02:14,700 --> 00:02:16,741 simplemente non soportan rápida que sexa. 43 00:02:16,741 --> 00:02:19,490 E as versións beta de seis, que foron liberados durante o verán, 44 00:02:19,490 --> 00:02:21,770 soportan rápida, pero non hai Houbo un número enorme 45 00:02:21,770 --> 00:02:25,220 de cambios na lingua, o suficiente de xeito que o código que está 46 00:02:25,220 --> 00:02:28,320 indo ollar e que pode atopar en internet 47 00:02:28,320 --> 00:02:33,294 realmente non vai compilar correctamente nestas versións anteriores do Xcode. 48 00:02:33,294 --> 00:02:35,460 Entón, de novo, se aínda non ten unha conta de creador, 49 00:02:35,460 --> 00:02:38,560 Eu recomendo que vaia developer.apple.com. 50 00:02:38,560 --> 00:02:42,240 Rexístrese se, cree unha conta de creador, e faga parte do equipo de desenvolvemento CS50 app. 51 00:02:42,240 --> 00:02:45,530 Isto pode fornecer-lle unha oportunidade compilar as súas aplicacións 52 00:02:45,530 --> 00:02:47,840 e poñer-los no seu dispositivo. 53 00:02:47,840 --> 00:02:49,222 OK, entón imos comezar. 54 00:02:49,222 --> 00:02:50,930 O primeiro nós imos facer é 55 00:02:50,930 --> 00:02:55,140 para realmente crear un moi proxecto sinxelo no Xcode 56 00:02:55,140 --> 00:02:59,530 que lle permitirá facer un pedido. 57 00:02:59,530 --> 00:03:03,170 >> Entón, se aínda non ten Xcode aberto, dalle abrilo 58 00:03:03,170 --> 00:03:04,270 e crear un novo proxecto. 59 00:03:04,270 --> 00:03:06,570 A pantalla especial respingo abrirá e pode darlle 60 00:03:06,570 --> 00:03:08,800 algunhas opcións sobre o que que é o que quere facer. 61 00:03:08,800 --> 00:03:12,170 Tan só dicir que quere crear un novo proxecto, unha nova aplicación. 62 00:03:12,170 --> 00:03:15,650 Este diálogo aparecerá, supoñendo que está a usar o Xcode 6.1. 63 00:03:15,650 --> 00:03:17,650 Neste momento, e para o duración do seminario, 64 00:03:17,650 --> 00:03:19,990 estaremos usando aplicacións de visión única e só 65 00:03:19,990 --> 00:03:22,590 unha especie de solicitude de base para obter os seus pés húmidos. 66 00:03:22,590 --> 00:03:25,200 E pode ramifican-se no seu propio país a partir de aí. 67 00:03:25,200 --> 00:03:27,660 >> Prema Seguinte neste momento. 68 00:03:27,660 --> 00:03:30,796 Agora, aquí hai un par de cousas que pode querer entrar. 69 00:03:30,796 --> 00:03:32,670 O nome do produto é o nome do seu proxecto. 70 00:03:32,670 --> 00:03:34,859 Neste caso, eu son só vai chamalo Seminar1 71 00:03:34,859 --> 00:03:36,150 porque é o noso primeiro exemplo. 72 00:03:36,150 --> 00:03:38,290 Nome da organización, en este caso é só o meu nome. 73 00:03:38,290 --> 00:03:41,760 Pode, por suposto, cambia-lo para o seu propio nome, ou para CS50. 74 00:03:41,760 --> 00:03:46,160 Identificador da organización, se pasar de ter un sitio web pode ter 75 00:03:46,160 --> 00:03:49,940 o nome de dominio en inversa, com.yourname. 76 00:03:49,940 --> 00:03:54,200 e, a continuación, o nome do produto debe aparecer automaticamente 77 00:03:54,200 --> 00:03:55,820 tras o que, como o identificador de conxunto. 78 00:03:55,820 --> 00:03:59,200 >> Obviamente, a linguaxe que estamos vai estar usando para hoxe é rápida. 79 00:03:59,200 --> 00:04:02,590 Pode, por suposto, usar Obxectivo C para iso, pero hoxe será rápida. 80 00:04:02,590 --> 00:04:04,920 E nós imos para agora dicir dispositivos universais, de xeito 81 00:04:04,920 --> 00:04:06,900 que funciona tanto en iPad e iPhone. 82 00:04:06,900 --> 00:04:10,040 E imos deixar núcleo datos non verificados para manter 83 00:04:10,040 --> 00:04:12,830 o proxecto relativamente simple para o momento. 84 00:04:12,830 --> 00:04:14,430 Entón, imos adiante e prema Seguinte. 85 00:04:14,430 --> 00:04:16,471 E el me vai preguntar onde quero salvalo. 86 00:04:16,471 --> 00:04:19,250 Eu só vou gardalo para o meu escritorio para agora. 87 00:04:19,250 --> 00:04:22,267 >> Todo ben, entón agora é o que vai pasar cando realmente aberto Xcode. 88 00:04:22,267 --> 00:04:24,100 E teña en conta que o primeiro que ve 89 00:04:24,100 --> 00:04:28,770 É este punto de exclamación que di que non hai identidade sinatura atopado. 90 00:04:28,770 --> 00:04:31,520 Eu fixen este intencionalmente no meu ordenador e eu son 91 00:04:31,520 --> 00:04:34,220 esperando que eu vou ser capaz de realmente resolve-lo, 92 00:04:34,220 --> 00:04:37,860 porque quero que vexa como iso vai realmente traballar na súa propia máquina. 93 00:04:37,860 --> 00:04:40,400 >> Dalle prema Corrixir problema. 94 00:04:40,400 --> 00:04:45,400 Vai preguntar se ten un conta de creador mazá existente. 95 00:04:45,400 --> 00:04:48,330 Este é o lugar onde a adhesión á CS50 equipo de desenvolvemento do app 96 00:04:48,330 --> 00:04:51,240 é importante para que non só teño unha conta app, 97 00:04:51,240 --> 00:04:53,690 pero tamén ten a capacidade para asinar as aplicacións 98 00:04:53,690 --> 00:04:56,420 e poñer-los no seu dispositivo iOS. 99 00:04:56,420 --> 00:04:58,957 Este é premendo não-- fix cuestión non é necesario 100 00:04:58,957 --> 00:05:01,040 se está indo só para construír e desenvolver localmente, 101 00:05:01,040 --> 00:05:03,520 enteiramente dentro do simulador iOS. 102 00:05:03,520 --> 00:05:05,820 >> Pero, por agora eu vou para desenvolver e poñer-los 103 00:05:05,820 --> 00:05:08,160 no meu iPad, que será capaz de transmitir tamén. 104 00:05:08,160 --> 00:05:10,770 Entón, quero realmente engadir este. 105 00:05:10,770 --> 00:05:13,670 E vai pedir me para o meu ID de Apple. 106 00:05:13,670 --> 00:05:15,700 Por iso, vai ser iso. 107 00:05:15,700 --> 00:05:18,940 E eu teño que buscar o meu contrasinal, que é por aquí. 108 00:05:18,940 --> 00:05:27,760 Entón me dea un segundo para descubrir que, e copia ese, e pegalo para acá. 109 00:05:27,760 --> 00:05:28,580 >> Prema en Engadir. 110 00:05:28,580 --> 00:05:31,095 Me vai preguntar cal equipo quero participar. 111 00:05:31,095 --> 00:05:33,240 Vou facer a escola de enxeñería. 112 00:05:33,240 --> 00:05:35,680 Prema en Ingresar. 113 00:05:35,680 --> 00:05:37,780 Oops, que é a persoa errada. 114 00:05:37,780 --> 00:05:40,730 Imos facer este. 115 00:05:40,730 --> 00:05:42,060 Esperemos que un vai funcionar. 116 00:05:42,060 --> 00:05:44,220 Aquel que aínda non funciona. 117 00:05:44,220 --> 00:05:46,610 Estamos a quedar sen bos aquí. 118 00:05:46,610 --> 00:05:48,260 OK, iso se debe traballar. 119 00:05:48,260 --> 00:05:50,816 Agora pecha iso. 120 00:05:50,816 --> 00:05:54,450 Agora imos facer á escola de enxeñaría, prema en Seleccionar. 121 00:05:54,450 --> 00:06:00,190 >> E agora espero que despois dun par de segundos can-- OK, 122 00:06:00,190 --> 00:06:02,550 Vou revogar e solicitude. 123 00:06:02,550 --> 00:06:05,410 Oh home, iso vai non funciona. 124 00:06:05,410 --> 00:06:08,890 OK, vou probar un diferente. 125 00:06:08,890 --> 00:06:11,167 Imos facer este aquí. 126 00:06:11,167 --> 00:06:17,020 127 00:06:17,020 --> 00:06:19,310 Demostracións en directo están me fallando. 128 00:06:19,310 --> 00:06:22,540 Podemos ter de reverter a só construción enteiramente localmente, 129 00:06:22,540 --> 00:06:25,050 pero iso sería OK neste caso. 130 00:06:25,050 --> 00:06:28,560 >> Entón, aquí, mentres iso é verdade de traballo, o que imos facer é só 131 00:06:28,560 --> 00:06:31,190 crear unha forma moi simple Ola aplicación Mundial. 132 00:06:31,190 --> 00:06:32,340 Polo tanto, este é o Xcode. 133 00:06:32,340 --> 00:06:37,300 E se non viu aínda, que pode ser un pouco intimidante no inicio. 134 00:06:37,300 --> 00:06:41,430 Hai unha morea de paneis, hai un chea de bugigangas en diversas áreas. 135 00:06:41,430 --> 00:06:44,300 Pero só entender que hai realmente varios compoñentes principais 136 00:06:44,300 --> 00:06:46,580 a este ambiente de desenvolvemento. 137 00:06:46,580 --> 00:06:51,090 Á esquerda están lonxe de todos os ficheiros que son aplicables ao seu programa 138 00:06:51,090 --> 00:06:52,997 ou para o seu proxecto particular. 139 00:06:52,997 --> 00:06:55,080 Nós imos estar facendo clic en torno nalgúns deles e nós imos 140 00:06:55,080 --> 00:06:57,660 apuntar a máis máis importantes ao longo do tempo. 141 00:06:57,660 --> 00:06:59,650 Na extrema dereita, que ten un conxunto de atributos. 142 00:06:59,650 --> 00:07:02,920 E todos eses atributos, non son varios paneis para os atributos. 143 00:07:02,920 --> 00:07:06,770 Os paneis vai cambiar, dependendo o contexto do contido principal, que 144 00:07:06,770 --> 00:07:08,290 pasa a estar no medio. 145 00:07:08,290 --> 00:07:11,740 Agora, a media pode realmente mostrar vostede unha variedade de cousas, por exemplo 146 00:07:11,740 --> 00:07:13,290 o seu propio código. 147 00:07:13,290 --> 00:07:17,070 Ou pode realmente have-- cando fai clic no storyboard que 148 00:07:17,070 --> 00:07:21,270 é, de feito, só unha gráfica representación do seu usuario 149 00:07:21,270 --> 00:07:25,350 interface para o seu application-- panel entón os atributos 150 00:07:25,350 --> 00:07:27,334 no moi lonxe á dereita cambiará realmente. 151 00:07:27,334 --> 00:07:29,750 Agora hai un par de outro cousas que quero apuntar. 152 00:07:29,750 --> 00:07:33,360 Pode clasificar de explotar ao redor no ámbito no seu propio país. 153 00:07:33,360 --> 00:07:35,730 Pero unha das cousas que foi moi útil 154 00:07:35,730 --> 00:07:38,470 é este botón aquí, o superior dereita da xanela. 155 00:07:38,470 --> 00:07:41,230 Hai ese botón que Parece que na extrema 156 00:07:41,230 --> 00:07:46,090 deixou ten un parágrafo seguido por dous círculos e de ordenación 157 00:07:46,090 --> 00:07:49,540 de dúas frechas apuntando afastados un do outro. 158 00:07:49,540 --> 00:07:52,640 Se cambiar entre a editor estándar, que 159 00:07:52,640 --> 00:07:55,560 é o extremo esquerda, o un que é seleccionada por defecto, 160 00:07:55,560 --> 00:08:01,040 e os dous círculos sobrepostos o outro, o que é realmente 161 00:08:01,040 --> 00:08:02,210 son unha vista de panel dobre. 162 00:08:02,210 --> 00:08:04,240 >> E este é, en realidade, vai ser útil para nós 163 00:08:04,240 --> 00:08:07,330 cando necesitamos vincular elementos na interface de usuario para o código. 164 00:08:07,330 --> 00:08:09,330 E imos falar máis sobre que en só un momento. 165 00:08:09,330 --> 00:08:12,050 Pero entenda que se comezar aínda máis paneis como este, 166 00:08:12,050 --> 00:08:15,830 pode simplificar a súa vista só un pouco premendo volta 167 00:08:15,830 --> 00:08:20,680 no seu editor de solteiro. 168 00:08:20,680 --> 00:08:21,580 De momento, todo ben. 169 00:08:21,580 --> 00:08:24,560 Entón, basicamente, temos o código en á esquerda, á dereita atributos, 170 00:08:24,560 --> 00:08:28,260 e todo o que é que estamos a traballar aquí no centro. 171 00:08:28,260 --> 00:08:30,390 >> Entón aquí eu premendo no storyboard principal. 172 00:08:30,390 --> 00:08:33,350 E o storyboard, de novo, é unha forma en Xcode 173 00:08:33,350 --> 00:08:38,110 que realmente pode crear o seu usuario interface usando só arrastrar e soltar 174 00:08:38,110 --> 00:08:39,130 técnicas. 175 00:08:39,130 --> 00:08:41,190 E así, para a nosa propia primeira aplicación deste 176 00:08:41,190 --> 00:08:42,720 É precisamente o que imos facer. 177 00:08:42,720 --> 00:08:45,950 Estamos indo para ir ata o moi lonxe parte inferior dereita 178 00:08:45,950 --> 00:08:49,900 da pantalla, que contén unha variedade de elementos de usuarios 179 00:08:49,900 --> 00:08:53,270 que pode, a continuación, fai clic e arrastra para crear a súa interface de usuario. 180 00:08:53,270 --> 00:08:55,550 >> Agora todo isto elementos son chamados de puntos de vista 181 00:08:55,550 --> 00:08:57,370 porque proporcionan algún tipo de vista. 182 00:08:57,370 --> 00:09:00,190 Hai unha visualización de imaxe, para exemplo, para realmente amosar 183 00:09:00,190 --> 00:09:01,740 unha imaxe na interface de usuario. 184 00:09:01,740 --> 00:09:04,310 Hai unha exhibición de táboa para realmente mostran unha mesa. 185 00:09:04,310 --> 00:09:05,190 Así por diante e así por diante. 186 00:09:05,190 --> 00:09:08,250 Hai unha gran variedade de puntos de vista que pode seleccionar aquí. 187 00:09:08,250 --> 00:09:11,100 Entón, só para agora imos para buscar unha etiqueta. 188 00:09:11,100 --> 00:09:13,550 Pode só percorrer todas as listas que está aí. 189 00:09:13,550 --> 00:09:15,460 Pero hai a busca barra na parte inferior 190 00:09:15,460 --> 00:09:19,460 que fai que sexa máis fácil identificar Vistas específicas que realmente 191 00:09:19,460 --> 00:09:22,020 quere arrastrar na súa interface co usuario. 192 00:09:22,020 --> 00:09:23,560 >> Atopar o meu gravadora. 193 00:09:23,560 --> 00:09:28,430 Vou arrastralo lo aquí, directamente no meu aplicación de mostra. 194 00:09:28,430 --> 00:09:30,130 Ben alí, no medio parece ser bo. 195 00:09:30,130 --> 00:09:33,180 E eu vou escribir "Ola Mundo!" 196 00:09:33,180 --> 00:09:33,810 Prema Intro. 197 00:09:33,810 --> 00:09:34,877 Agora eu teño unha etiqueta. 198 00:09:34,877 --> 00:09:36,960 Non mira como é centrado moi apropiadamente. 199 00:09:36,960 --> 00:09:38,500 Entón, podo tentar re centro-lo. 200 00:09:38,500 --> 00:09:42,100 Afortunadamente, el ofrece a estes orienta para facer as cousas moito máis fácil. 201 00:09:42,100 --> 00:09:44,130 Vou tentar compilalo. 202 00:09:44,130 --> 00:09:46,570 Esperemos que vai realmente traballar aquí. 203 00:09:46,570 --> 00:09:52,870 E se iso non acontecer, en só un momento ha de feito aparece no meu iPad. 204 00:09:52,870 --> 00:09:54,360 É aquí mesmo. 205 00:09:54,360 --> 00:09:55,060 Non é. 206 00:09:55,060 --> 00:09:56,590 >> OK, entón é iso. 207 00:09:56,590 --> 00:09:57,160 Somos feitos. 208 00:09:57,160 --> 00:09:58,868 Creamos a nosa propia primeira aplicación. 209 00:09:58,868 --> 00:10:01,330 Agora, obviamente, iso non fai nada. 210 00:10:01,330 --> 00:10:02,280 É só unha etiqueta. 211 00:10:02,280 --> 00:10:07,350 Non hai ningunha conexión entre a interface do usuario e do código. 212 00:10:07,350 --> 00:10:10,130 Entón, se nós realmente queriamos para crear este respecto, 213 00:10:10,130 --> 00:10:14,790 se realmente quería ter algún tipo de comunicación entre os elementos 214 00:10:14,790 --> 00:10:17,540 que existen no pantalla e que o código 215 00:10:17,540 --> 00:10:19,810 permítenos controlar eses elementos, a continuación 216 00:10:19,810 --> 00:10:23,570 nós realmente precisa mirar para o propio código. 217 00:10:23,570 --> 00:10:27,000 >> Entón, iso é o que se chama ViewController.swift. 218 00:10:27,000 --> 00:10:30,080 E por, sobre todo para seus primeiros programas, 219 00:10:30,080 --> 00:10:33,120 esta será unha especie de maior parte do código que enter-- 220 00:10:33,120 --> 00:10:35,980 será neste documento aquí. 221 00:10:35,980 --> 00:10:38,390 Hai unha morea de cousas que está aquí ata agora, non? 222 00:10:38,390 --> 00:10:42,660 Hai clase kit UI importación, substituír, [? funk ,?] todas esas varias cousas. 223 00:10:42,660 --> 00:10:45,820 E non é moi claro o que é que todo isto significa. 224 00:10:45,820 --> 00:10:48,570 Entón, imos dar un paso atrás para lonxe do Xcode para algo 225 00:10:48,570 --> 00:10:52,420 e ollar para a propia linguaxe, rápido. 226 00:10:52,420 --> 00:10:56,370 >> Así, con rápida, foi en deseño e desenvolvemento 227 00:10:56,370 --> 00:10:58,645 en Apple por preto de catro anos para o meu entendemento. 228 00:10:58,645 --> 00:11:01,270 E hai un par de características sobre iso que son realmente puro. 229 00:11:01,270 --> 00:11:03,910 Primeiro de todo, el é compilado lingua, así como C. 230 00:11:03,910 --> 00:11:06,120 Entón, primeiro ten que recompila-lo e executa-lo 231 00:11:06,120 --> 00:11:09,580 antes de que poida realmente executar o código resultante. 232 00:11:09,580 --> 00:11:14,250 Pero hai, ao contrario de C, un interactivo solicitará que realmente pode funcionar 233 00:11:14,250 --> 00:11:16,680 e escribir comandos arbitrarios en. 234 00:11:16,680 --> 00:11:20,280 E moi parecido unha consola JavaScript, que pode estar familiarizado co agora, 235 00:11:20,280 --> 00:11:24,506 realmente pode avaliar os comandos e proporcionar-lle a saída. 236 00:11:24,506 --> 00:11:26,380 E aínda tomadas que para o seguinte nivel 237 00:11:26,380 --> 00:11:29,100 e crearon algo chamados playgrounds en Xcode 238 00:11:29,100 --> 00:11:31,720 que permiten que visualmente traballar con código. 239 00:11:31,720 --> 00:11:34,910 E nós imos realmente ver algúns exemplos de que, en só un pouquiño. 240 00:11:34,910 --> 00:11:41,680 Baséase en subxace C. C Lo, porque todos os compiladores 241 00:11:41,680 --> 00:11:46,820 crear un código de C e crear o código obxecto da mesma. 242 00:11:46,820 --> 00:11:49,240 Pero realmente accións relativamente pouco sintaxe. 243 00:11:49,240 --> 00:11:50,721 Que vai mirar moi diferente. 244 00:11:50,721 --> 00:11:51,970 Haberá algunhas semellanzas. 245 00:11:51,970 --> 00:11:54,140 Pero non vai ser algunhas diferenzas 246 00:11:54,140 --> 00:11:57,200 comparación, por exemplo, JavaScript ou PHP. 247 00:11:57,200 --> 00:11:59,070 E nós imos apuntar estes en só un momento. 248 00:11:59,070 --> 00:12:01,420 >> Agora, unha das maiores cousas sobre swift iso é bo 249 00:12:01,420 --> 00:12:05,650 é que, sobre todo se se compara a C, que está destinado a ser seguro. 250 00:12:05,650 --> 00:12:08,100 Todo en que se pretende ser moi fortemente tecleada. 251 00:12:08,100 --> 00:12:10,780 En realidade, é case irritante en principio, cando 252 00:12:10,780 --> 00:12:15,610 comezar a traballar con rápido, quão tanto el impón tipo en todas as partes. 253 00:12:15,610 --> 00:12:17,860 Todo o que é unha cadea ten de seguir sendo unha cadea. 254 00:12:17,860 --> 00:12:22,100 É moi difícil de clasificar de converso Lo ou forza-lo en algunha outra forma. 255 00:12:22,100 --> 00:12:23,800 >> E unha vez máis, imos amosar exemplos diso. 256 00:12:23,800 --> 00:12:26,830 Pero finalmente entender que esta é para protexe-lo, 257 00:12:26,830 --> 00:12:32,010 e por ti eu quero dicir o seu código, a partir de fallando en algunha maneira horrible cando 258 00:12:32,010 --> 00:12:34,330 Ten algún tipo de tipo incompatibles. 259 00:12:34,330 --> 00:12:36,040 E, de novo, traballar con el. 260 00:12:36,040 --> 00:12:40,210 Porque vai ser frustrante no inicio como tentar descubrir por que exactamente 261 00:12:40,210 --> 00:12:43,070 está a recibir esta inusual erro xestionar tipo. 262 00:12:43,070 --> 00:12:45,350 Pero vai valer a pena a finais. 263 00:12:45,350 --> 00:12:47,267 >> El trata sobre automático xestión de memoria, 264 00:12:47,267 --> 00:12:49,100 así, non máis que teñen que xestione as cousas 265 00:12:49,100 --> 00:12:51,400 como malloc e libre, e todo destes tipos de cousas. 266 00:12:51,400 --> 00:12:53,066 E tamén está deseñado para xeneralidades. 267 00:12:53,066 --> 00:12:58,360 Entón, mentres nós pode usar un Xcode para crear aplicacións IOS e aplicacións do Mac, 268 00:12:58,360 --> 00:13:00,380 nós tamén podemos usalo só como unha linguaxe de script. 269 00:13:00,380 --> 00:13:03,660 E para que poidamos usalo especie en vez de ou en vez de PHP 270 00:13:03,660 --> 00:13:07,800 de Python para realmente rapidamente analizar e procesar 271 00:13:07,800 --> 00:13:09,800 algúns datos que temos no noso ordenador. 272 00:13:09,800 --> 00:13:13,290 >> Ela ten unha ampla variedade de moderno recursos, opcionais, mutabilidade, 273 00:13:13,290 --> 00:13:17,900 xenéricos, peches, e unha morea de presente cousas que pode ou non pode recoñecer. 274 00:13:17,900 --> 00:13:22,810 E é só unha especie de un desgraciado parte da linguaxe que algúns destes 275 00:13:22,810 --> 00:13:26,700 tipo de elementos futuristas e modernos que están contidos os elementos son 276 00:13:26,700 --> 00:13:34,520 tan arraigada que realmente vai ter que te ensinar CS50.5 algo. 277 00:13:34,520 --> 00:13:37,305 >> Temos que aprender un pouco máis sobre algunhas das características, a fin 278 00:13:37,305 --> 00:13:40,180 para realmente entender o que está a suceder por diante e así que podes ollar para o código 279 00:13:40,180 --> 00:13:42,450 e non sentirse totalmente perdido. 280 00:13:42,450 --> 00:13:44,820 E vai ver o que quero dicir por que en só un minuto. 281 00:13:44,820 --> 00:13:47,830 OK, entón let's-- bastante deste tipo de cousas teórica. 282 00:13:47,830 --> 00:13:52,450 Imos realmente ollar para o noso primeiro programa rápida. 283 00:13:52,450 --> 00:13:53,590 É unha liña de código. 284 00:13:53,590 --> 00:13:57,690 Liña 14 aquí, el di impresión l n Ola CS50. 285 00:13:57,690 --> 00:14:01,160 >> Polo tanto, hai un par de cousas que é moi diferente sobre esta comparación 286 00:14:01,160 --> 00:14:04,140 para as cousas que se pode utilizado para a partir de C, por exemplo. 287 00:14:04,140 --> 00:14:08,390 Un deles é que non hai ningunha intmain, non hai como incluír sección, 288 00:14:08,390 --> 00:14:10,790 non hai nada diso extra. 289 00:14:10,790 --> 00:14:13,790 A inclúen, por defecto I / O, como as bibliotecas 290 00:14:13,790 --> 00:14:16,580 que fornecen o características estándar da lingua, 291 00:14:16,580 --> 00:14:19,180 aparecen incluídos como parte da biblioteca estándar do swift 292 00:14:19,180 --> 00:14:20,680 e que son importados automaticamente. 293 00:14:20,680 --> 00:14:23,740 Non ten que facer que a importación manualmente. 294 00:14:23,740 --> 00:14:27,360 >> Non Intmain non existe porque o principal punto de entrada ao código 295 00:14:27,360 --> 00:14:29,470 é, en realidade, o inicio do código. 296 00:14:29,470 --> 00:14:32,000 Así, calquera código que ten desde o inicio 297 00:14:32,000 --> 00:14:34,940 será realmente executada no inicio. 298 00:14:34,940 --> 00:14:36,520 Entón, iso realmente simplifica enormemente. 299 00:14:36,520 --> 00:14:38,470 Teña en conta, que non hai ningún punto e coma. 300 00:14:38,470 --> 00:14:41,040 Non hai ningún punto e coma nesta lingua. 301 00:14:41,040 --> 00:14:43,261 Vostede pon unha declaración nunha liña individual 302 00:14:43,261 --> 00:14:45,510 e, a continuación, a seguinte liña representa outro comunicado. 303 00:14:45,510 --> 00:14:47,420 Se queres poñer mulitiple declaracións en liña, 304 00:14:47,420 --> 00:14:49,086 entón ten que separar por punto evírgula. 305 00:14:49,086 --> 00:14:50,940 Pero, na maior parte, para un bo estilo, estamos 306 00:14:50,940 --> 00:14:56,530 nunca vai ver punto e coma para os fins de demostracións de separación 307 00:14:56,530 --> 00:14:58,420 en rápido. 308 00:14:58,420 --> 00:14:59,820 Entón, como iso realmente funciona? 309 00:14:59,820 --> 00:15:04,080 Ben moi ben como nós C realmente ten que compilar este. 310 00:15:04,080 --> 00:15:10,640 E, para que poidamos facelo empregando c rápida e, a continuación, 1.swift. 311 00:15:10,640 --> 00:15:13,850 E, despois de unha parella minutos que vai compilar 312 00:15:13,850 --> 00:15:16,340 e entón eu podo executar un elemento. 313 00:15:16,340 --> 00:15:19,691 E do que vai só dicir "Ola CS50." 314 00:15:19,691 --> 00:15:20,690 Awesome, polo que non imos. 315 00:15:20,690 --> 00:15:22,273 Alí está o noso primeiro programa Ola Mundo. 316 00:15:22,273 --> 00:15:24,790 Imos pasar ao número dous. 317 00:15:24,790 --> 00:15:30,450 >> Agora en isto-- isto cambiou un pouco, porque, mentres normalmente 318 00:15:30,450 --> 00:15:34,720 fazer-- en realidade sempre que ten a compilar unha aplicación rápida antes de lle 319 00:15:34,720 --> 00:15:37,180 realmente realizar un ele-- das grandes características 320 00:15:37,180 --> 00:15:40,230 que me referín antes foi que swift realmente pode ser usado en especie 321 00:15:40,230 --> 00:15:43,390 dun modo pseudo-interpretativa, hai é, de feito, como un intérprete. 322 00:15:43,390 --> 00:15:46,690 Pero o que isto vai facer é alí é, en realidade, unha aplicación rápida 323 00:15:46,690 --> 00:15:47,520 que pode realizar. 324 00:15:47,520 --> 00:15:51,050 >> Por exemplo, se insire só rápida aquí, o que vai pasar 325 00:15:51,050 --> 00:15:52,330 é que vai obter un prompt. 326 00:15:52,330 --> 00:15:59,040 E podes escribir a súa rápida código, imprimir Ola, e executalo. 327 00:15:59,040 --> 00:16:01,867 E vai realmente print-- Ben, non foi impreso neste caso 328 00:16:01,867 --> 00:16:04,450 porque impreso para centrado a fóra, o que non é aquí visible. 329 00:16:04,450 --> 00:16:06,660 Pero é realmente capaz de funcionar. 330 00:16:06,660 --> 00:16:09,580 E así, neste caso, eu son só vai usar isto como un guión. 331 00:16:09,580 --> 00:16:11,259 E eu realmente pode realizar este código alí. 332 00:16:11,259 --> 00:16:13,800 Así, a forma que eu realmente executada será lixeiramente diferente, 333 00:16:13,800 --> 00:16:15,710 pero vai ver que en só un momento. 334 00:16:15,710 --> 00:16:18,890 Agora, neste caso, o que imos que facer é primeiro establecer unha variable. 335 00:16:18,890 --> 00:16:22,160 Entón é así que definimos unha variable en rápido, 336 00:16:22,160 --> 00:16:25,900 é que usan a palabra chave let, seguido polo nome da variable, 337 00:16:25,900 --> 00:16:29,280 e, a continuación, nos fornecen algúns arrincar datos opcionalmente. 338 00:16:29,280 --> 00:16:34,660 Entón, neste caso, estamos definindo unha constante chamada nome, 339 00:16:34,660 --> 00:16:37,775 e imos usar isto en a saída da nosa liña de impresión 340 00:16:37,775 --> 00:16:39,590 no, Ola nome moi inferior. 341 00:16:39,590 --> 00:16:43,260 >> Agora, teña en conta que en vez de usar% s, que pode encapsular o nome desta 342 00:16:43,260 --> 00:16:49,960 variable en / () e ser capaz de concatenar nos contidos deste 343 00:16:49,960 --> 00:16:51,790 cadea para esta cadea. 344 00:16:51,790 --> 00:16:56,510 Agora, ao contrario C, corda é un tipo real real en swift. 345 00:16:56,510 --> 00:16:59,240 E así se senta ao lado ints e xunto 346 00:16:59,240 --> 00:17:02,220 duplica moi facilmente e, por suposto, en comparación 347 00:17:02,220 --> 00:17:05,450 para algunhas das outras linguaxes que vimos. 348 00:17:05,450 --> 00:17:07,980 Entón, iso realmente funciona exactamente como esperaría. 349 00:17:07,980 --> 00:17:10,540 >> Eu podo correr 2.swift. 350 00:17:10,540 --> 00:17:14,390 E vemos que o meu nome é realmente unidas "Ola Dan." 351 00:17:14,390 --> 00:17:16,050 OK, impresionante. 352 00:17:16,050 --> 00:17:17,485 Pasando ao número tres. 353 00:17:17,485 --> 00:17:19,359 Agora era un pouco dunha mentira que eu 354 00:17:19,359 --> 00:17:23,369 dixo que a forma que declaramos variables foi usar a palabra chave let. 355 00:17:23,369 --> 00:17:27,640 Como tantas veces como posiblemente pode facer quere usar deixar, porque o que fai 356 00:17:27,640 --> 00:17:29,280 é que define unha constante. 357 00:17:29,280 --> 00:17:33,010 E iso di rápida que pode optimizar a velocidade da súa aplicación 358 00:17:33,010 --> 00:17:36,230 porque sabe que esta variable non vai cambiar. 359 00:17:36,230 --> 00:17:38,760 >> Así, avaliar con coidado cando está indo a usar 360 00:17:38,760 --> 00:17:41,382 unha variable para o efectos de mudala. 361 00:17:41,382 --> 00:17:43,340 E cando vai crear unha variable só 362 00:17:43,340 --> 00:17:47,010 para manter algúns datos e que é en realidade non vai cambiar. 363 00:17:47,010 --> 00:17:50,150 Polo tanto, este concepto de imutabilidade, non está realmente indo para cambiar, 364 00:17:50,150 --> 00:17:53,740 é importante incluso como tanto para abaixo como a definición de variables. 365 00:17:53,740 --> 00:17:56,870 Entón aquí definimos un nome, deixar nome, e neste caso 366 00:17:56,870 --> 00:18:02,120 é unha constante, que é do tipo corda, e é igual a Dan. 367 00:18:02,120 --> 00:18:05,580 >> Así, mentres que no anterior versión, el infers-- e por "iso" 368 00:18:05,580 --> 00:18:08,220 Quero dicir rápida swift-- infere o tipo de datos 369 00:18:08,220 --> 00:18:10,850 que entramos á variable. 370 00:18:10,850 --> 00:18:12,930 Neste caso, podemos estar explícito. 371 00:18:12,930 --> 00:18:17,590 Entón, imos entón o nome deste variable é o nome, a continuación, dous puntos. 372 00:18:17,590 --> 00:18:21,350 E despois dos dous puntos que nos especificar o tipo de datos. 373 00:18:21,350 --> 00:18:24,694 Entón xa non é int nome ou nome de cadea ou algo parecido. 374 00:18:24,694 --> 00:18:26,860 Pero, en vez deixar etiqueta, estamos establecer se se trata 375 00:18:26,860 --> 00:18:29,090 é constante ou variable, seguido do nome, 376 00:18:29,090 --> 00:18:31,870 seguido polo tipo opcionalmente. 377 00:18:31,870 --> 00:18:34,730 >> Polo tanto, neste caso estamos definindo este nome é unha cadea. 378 00:18:34,730 --> 00:18:35,790 Estamos dicindo é Dan. 379 00:18:35,790 --> 00:18:39,270 E agora eu teño outra variable, neste caso chámase etiqueta. 380 00:18:39,270 --> 00:18:42,090 Pero teña en conta que é prefixado coa palabra clave var. 381 00:18:42,090 --> 00:18:44,430 Os medios var contrasinal que esta variable pode 382 00:18:44,430 --> 00:18:48,720 ser cambiado nun punto máis tarde no tempo, nalgún lugar baixo o código 383 00:18:48,720 --> 00:18:52,480 podemos realmente cambiar-lo e el non nos dará ningún erro particular. 384 00:18:52,480 --> 00:18:56,760 >> Podemos facer concatenación estándar operador aquí, usando o símbolo máis 385 00:18:56,760 --> 00:19:00,130 para realmente engadir o noso nome para esta cadea. 386 00:19:00,130 --> 00:19:02,921 E entón podemos imprimir como vimos hai pouco. 387 00:19:02,921 --> 00:19:04,920 Agora imos dicir que quero crear unha variable 388 00:19:04,920 --> 00:19:06,586 pero non quere arrincar aínda. 389 00:19:06,586 --> 00:19:08,590 Aínda non quere poñer todos os datos dentro del. 390 00:19:08,590 --> 00:19:11,760 Ben, ten que dicir rápido que o tipo de datos 391 00:19:11,760 --> 00:19:16,430 será antes de poder realmente define-lo correctamente. 392 00:19:16,430 --> 00:19:20,360 >> Polo tanto, neste caso, cando definimos unha variable chamada grao debemos ser 393 00:19:20,360 --> 00:19:24,450 explícita sobre o seu tipo, porque non se pode inferir só mirando 394 00:19:24,450 --> 00:19:27,300 na datos inicializados que fornecer a el. 395 00:19:27,300 --> 00:19:30,050 Isto daranos un erro se só tipo var grao, por exemplo, 396 00:19:30,050 --> 00:19:31,830 porque non ten ningún tipo, polo tanto. 397 00:19:31,830 --> 00:19:33,353 Así grao = 100. 398 00:19:33,353 --> 00:19:35,790 Así que 100 é un número enteiro, encaixa moi ben para iso. 399 00:19:35,790 --> 00:19:36,998 Vai seguir funcionando. 400 00:19:36,998 --> 00:19:40,350 401 00:19:40,350 --> 00:19:43,022 Podemos ver como, despois, pode concatenar isto. 402 00:19:43,022 --> 00:19:44,730 Agora podes ser tentados, se realmente 403 00:19:44,730 --> 00:19:48,610 quería concatenar o grao noutra cadea de texto, 404 00:19:48,610 --> 00:19:52,560 noutra corda, que faría só usar ese mesmo operador concatenación. 405 00:19:52,560 --> 00:19:54,630 E que, normalmente, sería verdade. 406 00:19:54,630 --> 00:20:00,540 Pero swift non vai permitir que implicitamente cambiar o tipo de datos. 407 00:20:00,540 --> 00:20:03,440 Polo tanto, neste caso, este liña, 25, ha falla 408 00:20:03,440 --> 00:20:06,650 porque grao é unha enteiro e non unha cadea. 409 00:20:06,650 --> 00:20:08,760 E por iso hai unha incompatibilidade conxunto de tipos. 410 00:20:08,760 --> 00:20:11,780 Entón ten que ser explícito cando que desexa cambiar estes datos, 411 00:20:11,780 --> 00:20:14,080 cando quere coagir esta datos para un tipo 412 00:20:14,080 --> 00:20:17,250 e dicir: OK, quero tomar esta clase, que é un enteiro, 413 00:20:17,250 --> 00:20:19,050 e convertelo en unha cadea. 414 00:20:19,050 --> 00:20:23,970 >> Entón eu levo un capital s Corda toda tipo, vai notar, son capitalizados, 415 00:20:23,970 --> 00:20:26,280 Int, Double, cadea, así por diante e así por diante. 416 00:20:26,280 --> 00:20:28,930 Todos eles son capitalizados só para facer as cousas máis fáciles. 417 00:20:28,930 --> 00:20:32,240 E nós imos dicir capitalizar Cadea pasar el grao. 418 00:20:32,240 --> 00:20:35,020 E el ha crear un secuencia de fóra dese enteiro. 419 00:20:35,020 --> 00:20:37,970 E entón podemos concatenar os dous moi ben. 420 00:20:37,970 --> 00:20:40,500 Calquera dúbida sobre este material tan lonxe? 421 00:20:40,500 --> 00:20:43,770 Todo ben, imos arar mediante número catro. 422 00:20:43,770 --> 00:20:47,870 >> Agora imos falar sobre algúns máis avanzado estruturas, como arrays e loops. 423 00:20:47,870 --> 00:20:54,920 E ao contrario de C, matrices en rápida non son representados por punteiros. 424 00:20:54,920 --> 00:20:58,730 Punteiros en rápido, aínda que existen, chamada 425 00:20:58,730 --> 00:21:02,840 como punteiros inseguras ou algún tipo similar como este, 426 00:21:02,840 --> 00:21:04,950 eles non están expostos a vostede normalmente. 427 00:21:04,950 --> 00:21:07,300 Así tórnase moi difícil para que manipule 428 00:21:07,300 --> 00:21:10,020 a memoria directamente do seu ordenador. 429 00:21:10,020 --> 00:21:11,670 >> Así, as matrices son só un tipo de datos. 430 00:21:11,670 --> 00:21:16,830 E eles están referenciadas usando este tipo notación de agora estándar paréntese 431 00:21:16,830 --> 00:21:18,280 que xa viu antes. 432 00:21:18,280 --> 00:21:21,130 Pero cando realmente quere definir un tipo dunha variable 433 00:21:21,130 --> 00:21:24,330 como unha matriz de algúns tipo particular, entón 434 00:21:24,330 --> 00:21:27,150 poñer este tipo entre corchetes. 435 00:21:27,150 --> 00:21:30,260 Entón o que eu estou dicindo aquí é que Estou creando unha variable chamada 436 00:21:30,260 --> 00:21:33,930 series de tipo int matriz. 437 00:21:33,930 --> 00:21:37,380 E eu estou definindo que igual a algún inicializados datos, que neste caso 438 00:21:37,380 --> 00:21:42,960 é de 100, 0, 90, 85, que é só unha colección de series arbitrarias aquí. 439 00:21:42,960 --> 00:21:46,480 Agora, neste caso eu puidese, Teña en conta que, eliminar o tipo, 440 00:21:46,480 --> 00:21:49,580 e sería capaz de inferir que con base nos datos inicializados. 441 00:21:49,580 --> 00:21:51,990 Pero se eu tirei este e Eu precisaba para define-la máis tarde, 442 00:21:51,990 --> 00:21:56,840 entón eu tería que estar seguro que eu teño o tipo de alí. 443 00:21:56,840 --> 00:21:58,750 Todo ben, imos seguir adiante. 444 00:21:58,750 --> 00:22:03,010 Entón, nós can-- matrices nos ofrece unha variedade 445 00:22:03,010 --> 00:22:07,130 de métodos a través de que a notación de punto en probablemente está familiarizado co agora. 446 00:22:07,130 --> 00:22:10,360 Así grades.count, por exemplo, dinos precisamente o número 447 00:22:10,360 --> 00:22:13,680 de elementos que fan contidos nesa matriz. 448 00:22:13,680 --> 00:22:17,260 >> Se eu queira engadir additional-- agora conta que esta é unha var 449 00:22:17,260 --> 00:22:20,140 não-- e esta é unha variable e non unha constante, a cal 450 00:22:20,140 --> 00:22:24,410 significa que podo cambiar o contido desa matriz, podo engadir obxectos a el. 451 00:22:24,410 --> 00:22:28,870 Pero eu non podo só dicir graos e logo, entre corchetes 452 00:22:28,870 --> 00:22:33,280 catro, porque iso vai ser un erro de falta de límites neste caso. 453 00:22:33,280 --> 00:22:36,190 Se eu queira realmente cambiar o tamaño desta matriz, 454 00:22:36,190 --> 00:22:41,140 Eu teño que usar o método de aumento de punto para engadir algo ao fin do mesmo. 455 00:22:41,140 --> 00:22:46,900 Podo, con todo, o cambio índices individuais. 456 00:22:46,900 --> 00:22:48,920 >> Entón eu podería usar notas e soportes logo cadrados 457 00:22:48,920 --> 00:22:52,480 cero a manexar este primeiro índice e etc., como podería esperar. 458 00:22:52,480 --> 00:22:56,530 E podo facer o mesmo para realmente recibir os datos de que, como ben. 459 00:22:56,530 --> 00:23:00,420 Agora hai tamén unha especie de método de fantasía de facelo, ademais de notas iguais 460 00:23:00,420 --> 00:23:02,525 e, a continuación, outro índice, que append-- 461 00:23:02,525 --> 00:23:04,400 ou non outro index-- pero outra lista que 462 00:23:04,400 --> 00:23:07,340 pode engadir nesa lista para a parte de atrás de graos. 463 00:23:07,340 --> 00:23:09,780 E as notas van entón conter todo isto. 464 00:23:09,780 --> 00:23:13,850 Pero iso é unha especie de unha cousa extra que eu estou só mostrándolle para divertirse. 465 00:23:13,850 --> 00:23:14,910 >> Agora hai un loop for. 466 00:23:14,910 --> 00:23:18,970 E este é o inicio de onde as cousas comezan a cambiar un pouco. 467 00:23:18,970 --> 00:23:22,920 Observe como este para o lazo é diferente de loops en C. 468 00:23:22,920 --> 00:23:26,470 Agora vou notar que loops na Swift pode 469 00:23:26,470 --> 00:23:30,650 pode facer para ollar como loops en C, pero hai unha morea de construcións máis útiles 470 00:23:30,650 --> 00:23:37,840 que elimina esencialmente a necesidade ter para var i é igual a 0 punto e coma i 471 00:23:37,840 --> 00:23:40,340 é inferior a algúns lonxitude, así por diante e así por diante, non? 472 00:23:40,340 --> 00:23:42,940 E esta construción é só un deles. 473 00:23:42,940 --> 00:23:49,030 >> Para o índice, o índice é novo variable, neste caso, o período. 474 00:23:49,030 --> 00:23:52,730 E o que eu digo é que non hai un intervalo de 0 todo o camiño ata 475 00:23:52,730 --> 00:23:55,870 pero non incluíndo grades.count. 476 00:23:55,870 --> 00:23:58,470 Polo tanto, este punto punto menos do signo representa 477 00:23:58,470 --> 00:24:05,040 unha gama de valores a partir de cero todo o camiño ata grades.count menos 1. 478 00:24:05,040 --> 00:24:07,070 Hai unha separada operador que existe, 479 00:24:07,070 --> 00:24:13,320 que é dot dot dot, o que significa que quero que o rango de cero, 480 00:24:13,320 --> 00:24:16,310 aos graos contar ata. 481 00:24:16,310 --> 00:24:19,130 >> Pero, neste caso, porque estes matrices son índice cero, nós naturalmente 482 00:24:19,130 --> 00:24:23,290 Non quero ir ao o número máximo de tipo. 483 00:24:23,290 --> 00:24:26,390 Podo resumir as notas, como pode esperar, e saída de todas estas cousas. 484 00:24:26,390 --> 00:24:29,620 OK, seguindo adiante. 485 00:24:29,620 --> 00:24:32,270 Agora imos falar sobre as funcións. 486 00:24:32,270 --> 00:24:35,465 Co fin de establecer unha función usa a palabra chave funk. 487 00:24:35,465 --> 00:24:38,090 E, de novo, na Swift ten que ter moito coidado cos tipos. 488 00:24:38,090 --> 00:24:41,530 Vostede ofrece a el Parámetros por definición, por exemplo, 489 00:24:41,530 --> 00:24:45,440 o nome do parámetro e logo Colin, o tipo de datos 490 00:24:45,440 --> 00:24:47,690 que espera que parámetro para aceptar. 491 00:24:47,690 --> 00:24:50,700 >> Polo tanto, neste caso, temos unha función chamada de conta de impresión serie. 492 00:24:50,700 --> 00:24:54,630 El acepta unha variable chamada libro de notas, ou mellor, un parámetro chamado gradebook. 493 00:24:54,630 --> 00:24:59,267 E nós estamos esperando que gradebook para ser unha matriz de números enteiros. 494 00:24:59,267 --> 00:25:01,350 Se isto gradebook está baleiro, imos imprimir unha cousa. 495 00:25:01,350 --> 00:25:06,090 Se non, imos imprimir o número de graos que este ten na realidade. 496 00:25:06,090 --> 00:25:09,470 >> Agora, se queremos volver algún valor, entón o camiño 497 00:25:09,470 --> 00:25:14,595 que modificar esa definición é realmente usar esta palabra clave de frecha, 498 00:25:14,595 --> 00:25:16,870 ou para utilizar este significante frecha. 499 00:25:16,870 --> 00:25:19,440 Entón, aquí imos definir unha función chamada media. 500 00:25:19,440 --> 00:25:21,940 Estamos indo para aceptar unha lista de números. 501 00:25:21,940 --> 00:25:25,430 E nós estamos indo a volver dobre, que esperamos 502 00:25:25,430 --> 00:25:31,270 ser a media deste array. 503 00:25:31,270 --> 00:25:34,570 E, a fin de facelo, a fin para realmente calcular esa media, 504 00:25:34,570 --> 00:25:38,651 imos dar un suma e imos de Claro resumir todos os obxectos 505 00:25:38,651 --> 00:25:39,400 dentro desa matriz. 506 00:25:39,400 --> 00:25:41,480 >> Teña en conta que hai unha nova estilo de loop aquí. 507 00:25:41,480 --> 00:25:45,450 Non debemos ser explícito sobre iteración sobre cada elemento, 508 00:25:45,450 --> 00:25:48,280 pero podemos dicir que, no canto de grao e gradebook, significado 509 00:25:48,280 --> 00:25:50,930 que, para cada elemento que temos nesta, 510 00:25:50,930 --> 00:25:53,482 prever que o artigo nesta chamado de grao variable. 511 00:25:53,482 --> 00:25:54,940 E quero facer algo con el. 512 00:25:54,940 --> 00:26:00,350 Entón, eu vou resumir todos estes datos e realmente volver a dobre división. 513 00:26:00,350 --> 00:26:04,436 >> Agora, observe novo aquí hai a concepto de división enteira no Swift. 514 00:26:04,436 --> 00:26:06,810 Se quere dobrar división porque quere decimais, 515 00:26:06,810 --> 00:26:09,460 entón ten que ser explícito, non só sobre un dos lados, 516 00:26:09,460 --> 00:26:14,030 porque non vai permitir que para coagir datos en ambos os dous lados desta, 517 00:26:14,030 --> 00:26:17,030 ten que realmente curso ambos os dous lados en dobres 518 00:26:17,030 --> 00:26:19,440 de xeito que é moi explícita sobre asegurarse de 519 00:26:19,440 --> 00:26:23,370 que está facendo dobre división. 520 00:26:23,370 --> 00:26:26,150 >> Imos seguir adiante. 521 00:26:26,150 --> 00:26:31,150 Entón, se eu realmente quero accept-- polo tanto, neste exemplo concreto, 522 00:26:31,150 --> 00:26:34,260 este aínda é un comando aplicación baseada liña. 523 00:26:34,260 --> 00:26:37,920 E estamos empezando a ver algúns dos as limitacións da nova linguaxe 524 00:26:37,920 --> 00:26:41,850 en que, aínda que o que pudermos acceder os argumentos usando 525 00:26:41,850 --> 00:26:44,940 esta process.arguments, é Aínda que non necesariamente o máis limpo 526 00:26:44,940 --> 00:26:46,200 cousa que eu xa vin. 527 00:26:46,200 --> 00:26:49,142 Pero, basicamente, animou-vos a sorte de mirar para este código 528 00:26:49,142 --> 00:26:51,100 e intentar descubrir o que exactamente está a suceder. 529 00:26:51,100 --> 00:26:55,030 >> Esencialmente, o que está pasando é que Estamos facendo unha lista de argumentos 530 00:26:55,030 --> 00:26:57,610 e foron forzalos a enteiros, e entón nós estamos 531 00:26:57,610 --> 00:27:03,620 vai usar isto como unha forma de imprimir a media de todas as nosas calidades. 532 00:27:03,620 --> 00:27:06,150 533 00:27:06,150 --> 00:27:07,350 Seguindo adiante. 534 00:27:07,350 --> 00:27:11,190 Agora hai outro tipo de data-- outro tipo de datos, en vez de matrices 535 00:27:11,190 --> 00:27:14,940 chamados de dicionarios, que son moi semellante para hash táboas ou mapas hash 536 00:27:14,940 --> 00:27:18,560 e son tamén similares ás Arrays asociativos de PHP. 537 00:27:18,560 --> 00:27:20,770 Entón eles teñen a noción de claves e valores. 538 00:27:20,770 --> 00:27:23,780 >> E eles están definidas tamén con esta notación paréntese, 539 00:27:23,780 --> 00:27:26,750 pero a diferenza é que os dicionarios teñen 540 00:27:26,750 --> 00:27:29,370 dentro do corchete, dous puntos. 541 00:27:29,370 --> 00:27:33,850 E o colonos separa os datos tipo que é a clave e o valor. 542 00:27:33,850 --> 00:27:38,540 Polo tanto, neste caso, eu estou indo a crear un dicionario para aceptar algunhas notas. 543 00:27:38,540 --> 00:27:44,200 E iso vai ser do tipo string: int, 544 00:27:44,200 --> 00:27:46,940 o que significa que todo o claves van ser cordas, 545 00:27:46,940 --> 00:27:53,080 e todos os valores dos claves van ser enteiros. 546 00:27:53,080 --> 00:27:55,780 >> O que isto significa que podo a continuación, facer referencia a datos concretos 547 00:27:55,780 --> 00:28:00,490 que quero usar esas claves no canto non por índices numéricos como eu 548 00:28:00,490 --> 00:28:04,350 tería a unha matriz de patrón. 549 00:28:04,350 --> 00:28:06,470 Agora imos ver, non hai unha cousa importante 550 00:28:06,470 --> 00:28:10,790 que eu tamén quero falar esta secuencia de código específico. 551 00:28:10,790 --> 00:28:12,910 E iso é que non hai outro tipo de datos, 552 00:28:12,910 --> 00:28:15,580 ou mellor, non hai esa idea de datos que é 553 00:28:15,580 --> 00:28:18,340 contidos Swift chamado opcionais. 554 00:28:18,340 --> 00:28:21,270 >> E o que significa é opcional que recoñece o feito de 555 00:28:21,270 --> 00:28:27,500 que ás veces non vai obter os datos que realmente espera. 556 00:28:27,500 --> 00:28:31,400 E entón o que quero dicir con isto é-- imos Bótalle un ollo nesta secuencia de código 557 00:28:31,400 --> 00:28:38,910 que itera sobre toda a argumentos que foron pasados ​​a este código 558 00:28:38,910 --> 00:28:43,460 e tenta convertela los, intentos para subdividido nunha serie de cordas, 559 00:28:43,460 --> 00:28:47,310 porque acepta unha moi determinado tipo de argumento. 560 00:28:47,310 --> 00:28:51,530 E entón el vai coagir as cordas que representan números 561 00:28:51,530 --> 00:28:55,460 en enteiros que son notas, que eu poida, logo calcular. 562 00:28:55,460 --> 00:28:58,230 >> Entón, basicamente, eu vou usar a función de división que 563 00:28:58,230 --> 00:29:00,080 existe dentro do Biblioteca estándar Swift. 564 00:29:00,080 --> 00:29:03,720 Vou pasar el o cadea que quero dividir. 565 00:29:03,720 --> 00:29:06,980 E entón en usar este tipo de sintaxe funky, que 566 00:29:06,980 --> 00:29:09,670 Eu non sei se imos chegar, pero quizais, nós 567 00:29:09,670 --> 00:29:14,320 vai realmente precisa especificar o personaxe que queremos dividir a. 568 00:29:14,320 --> 00:29:16,030 Entón, o que iso realmente se parece? 569 00:29:16,030 --> 00:29:18,740 Imos dar un ollo realmente realizar este código. 570 00:29:18,740 --> 00:29:22,000 >> Así, por exemplo, digamos que eu teño un quiz e eu teño 50 sobre iso. 571 00:29:22,000 --> 00:29:23,960 E eu teño unha Serie de exercicios e Teño un centenar sobre iso. 572 00:29:23,960 --> 00:29:29,180 E eu got-- hai outra quiz e eu teño a 40 sobre iso. 573 00:29:29,180 --> 00:29:33,520 I prema Intro e, finalmente, o que vai ocorrer é que o que está facendo 574 00:29:33,520 --> 00:29:37,730 está tomando estes parámetros, dividindo as cordas neses dous puntos, 575 00:29:37,730 --> 00:29:41,390 recoñecendo que hai dous elementos en cada unha, 576 00:29:41,390 --> 00:29:43,700 e é esencialmente manter o control de cada un. 577 00:29:43,700 --> 00:29:49,226 >> Entón, eu teño no meu dicionario dun quiz, cuxa valor está representado polo número 50, 578 00:29:49,226 --> 00:29:54,290 Eu teño un PSET que ten valor de 100, e un quiz un que ten un valor de 40. 579 00:29:54,290 --> 00:29:57,400 Despois, máis tarde no código I en realidade, en media, todos estes valores 580 00:29:57,400 --> 00:30:01,160 e enumerar todas as claves de que dicionario particular. 581 00:30:01,160 --> 00:30:03,217 Pero iso é importante de modo que pode notar 582 00:30:03,217 --> 00:30:06,050 o que está a suceder, é que o que nós quero facer é tomar esta cadea 583 00:30:06,050 --> 00:30:11,450 e división lo sobre este personaxe, que podemos facer de novo con esa división 584 00:30:11,450 --> 00:30:15,690 función usando este tipo de sintaxe interesante que existe aquí. 585 00:30:15,690 --> 00:30:17,880 >> Só por agora asumir que iso é OK. 586 00:30:17,880 --> 00:30:19,980 Imos ollar máis para esta en pouco tempo. 587 00:30:19,980 --> 00:30:23,230 Pero agora hai un interesante aspecto que, en realidade, 588 00:30:23,230 --> 00:30:27,250 quero tentar converter este cadea nun enteiro. 589 00:30:27,250 --> 00:30:29,720 Pero noutros idiomas o que pode ocorrer é 590 00:30:29,720 --> 00:30:33,440 que probablemente intentaría para facelo e quere volver 591 00:30:33,440 --> 00:30:36,185 unha especie de sentinela valor como un negativo 592 00:30:36,185 --> 00:30:39,420 ou quizais un nulo ou algo parecido. 593 00:30:39,420 --> 00:30:41,070 Ou quizais fose só causou un erro. 594 00:30:41,070 --> 00:30:42,820 E teríamos de a continuación, pegar este erro 595 00:30:42,820 --> 00:30:44,820 e, a continuación, tentar facer algo baseado no feito 596 00:30:44,820 --> 00:30:48,280 que esta conversión para un número enteiro fallou. 597 00:30:48,280 --> 00:30:50,460 É aí que esta idea de opcionais entra. 598 00:30:50,460 --> 00:30:56,120 Pode realmente crear un tipo de datos que é un int punto de interrogación, por exemplo. 599 00:30:56,120 --> 00:30:59,140 600 00:30:59,140 --> 00:31:01,910 Isto significa que este número enteiro é, de feito, opcional. 601 00:31:01,910 --> 00:31:05,980 E o que vai pasar é que pode conter un número enteiro, ou quizais non. 602 00:31:05,980 --> 00:31:10,650 Pode, de feito, ser estoutro idea, enteiramente chamado Nill. 603 00:31:10,650 --> 00:31:14,900 En que isto significa que non hai calquera valor neste. 604 00:31:14,900 --> 00:31:16,810 Non o é cero, simplemente non hai valor. 605 00:31:16,810 --> 00:31:18,790 Non hai absolutamente ningún valor representado. 606 00:31:18,790 --> 00:31:21,650 >> E iso é o que esta liña 71 está facendo. 607 00:31:21,650 --> 00:31:25,990 É que está dicindo que eu quero tentar establecer un valor, 608 00:31:25,990 --> 00:31:31,790 un grao variable chamada, igual ao conversión desta secuencia nun int. 609 00:31:31,790 --> 00:31:34,010 Entón eu tomei esta cadea, esta primeiros compoñentes, 610 00:31:34,010 --> 00:31:37,680 ou mellor, a segunda compoñentes, porque esta 611 00:31:37,680 --> 00:31:40,770 é cero, indexada, do presente cadea que eu dividir. 612 00:31:40,770 --> 00:31:42,930 E quero converter que, a un número enteiro. 613 00:31:42,930 --> 00:31:46,730 Pero non sempre pode proceder normalmente, porque imaxinar 614 00:31:46,730 --> 00:31:50,710 o que acontecería se, no canto de tipo un número, eu tipo de curso como asdf. 615 00:31:50,710 --> 00:31:51,534 >> Vai fallar. 616 00:31:51,534 --> 00:31:54,200 Non é, en realidade, será capaz de converter que para un número enteiro 617 00:31:54,200 --> 00:31:55,510 como sería de esperar. 618 00:31:55,510 --> 00:31:58,660 Entón en vez de chutar fóra algún tipo de erro, 619 00:31:58,660 --> 00:32:01,210 temos esta idea dun opcional. 620 00:32:01,210 --> 00:32:04,240 E isto significa que o uso de este punto de interrogación que podo dicir, 621 00:32:04,240 --> 00:32:09,100 OK, é posible que podo tomar iso, converteuse o nun int, 622 00:32:09,100 --> 00:32:12,630 e poñelas nunha variable, que tamén será un int. 623 00:32:12,630 --> 00:32:15,420 Se é así, entón iso significa que que este foi exitosa 624 00:32:15,420 --> 00:32:18,720 e esta primeira porción de o bloque pode continuar. 625 00:32:18,720 --> 00:32:21,040 >> Se non, el fallou. 626 00:32:21,040 --> 00:32:25,840 Non hai valor en grade-- ou si non hai valor en vigor, 627 00:32:25,840 --> 00:32:30,220 e eu realmente teño que tentar xestionar esa condición de erro. 628 00:32:30,220 --> 00:32:33,340 Vai ver isto punto de interrogação o tempo 629 00:32:33,340 --> 00:32:35,990 en Swift e no exemplo de código Swift. 630 00:32:35,990 --> 00:32:40,980 E, de feito, o operador Nill, este tipo de punto de interrogación, a parte opcionais, 631 00:32:40,980 --> 00:32:45,057 será probablemente un das cousas máis difíciles 632 00:32:45,057 --> 00:32:47,640 a especie de quentar a cabeza con como realmente traballar con el. 633 00:32:47,640 --> 00:32:48,490 >> Pode ter sentido agora. 634 00:32:48,490 --> 00:32:50,760 E, de feito, cando eu era escribindo código de exemplo para iso, 635 00:32:50,760 --> 00:32:52,780 seguramente eu entendía o que estaba acontecendo, 636 00:32:52,780 --> 00:32:55,570 pero aínda me pego por sorpresa de cando en vez 637 00:32:55,570 --> 00:32:58,370 cando eu tería que atopar algúns datos foi realmente 638 00:32:58,370 --> 00:33:04,024 unha versión nula, unha versión opcional dos datos que eu estaba esperando. 639 00:33:04,024 --> 00:33:06,190 Entón, só tes que entender que, se ter unha versión opcional 640 00:33:06,190 --> 00:33:09,360 ten que descomprimir que datos desta caixa. 641 00:33:09,360 --> 00:33:15,870 >> Entón, é máis ou menos como I-- imaxine se ter unha caixa e contén algo. 642 00:33:15,870 --> 00:33:18,490 E o que ten que facer é facer a pregunta, 643 00:33:18,490 --> 00:33:22,800 é posible que esta caixa, en realidade, contén os datos que eu estou buscando? 644 00:33:22,800 --> 00:33:28,180 Se é así, a continuación, puxe que fóra de datos e poñelas esta variable existente. 645 00:33:28,180 --> 00:33:32,080 Se non, entón eu só teño que ignorar o contido dese cadro 646 00:33:32,080 --> 00:33:34,310 completamente porque literalmente non contén nada. 647 00:33:34,310 --> 00:33:36,880 648 00:33:36,880 --> 00:33:40,400 >> Calquera dúbida sobre este asunto? 649 00:33:40,400 --> 00:33:44,430 OK, imos pasar lonxe deste tipo de cousas de liña de comandos na base 650 00:33:44,430 --> 00:33:47,610 e comezar a ollar para algunha da tecnoloxía 651 00:33:47,610 --> 00:33:53,060 Xcode que ofrece para nós baixo a forma de playgrounds. 652 00:33:53,060 --> 00:33:56,669 Polo tanto, hai unha morea de capacidade aquí con Swift. 653 00:33:56,669 --> 00:33:59,210 E se abrir o Xcode e pregunta o que quere facer, 654 00:33:59,210 --> 00:34:01,340 pode abrir o playground e só xogar 655 00:34:01,340 --> 00:34:06,200 con unha gran cantidade de estruturas diferentes e aspectos da lingua 656 00:34:06,200 --> 00:34:11,800 antes de comezar a tocar o IOS SDK ou Mac SDK. 657 00:34:11,800 --> 00:34:15,670 >> Entón, neste caso, digamos que eu have-- Eu teño un exemplo relativamente artificial 658 00:34:15,670 --> 00:34:18,460 aquí, pero pense comigo como nós tipo de traballar con este exemplo. 659 00:34:18,460 --> 00:34:22,639 Imos dicir que temos que facer unha chea dos expoñentes cun valor fixo, 660 00:34:22,639 --> 00:34:26,397 como sabemos que imos ter facer unha chea de poderes cadrados, por exemplo. 661 00:34:26,397 --> 00:34:28,980 Entón, nós imos levar algún valor x, nós imos facer a quadratura-lo, 662 00:34:28,980 --> 00:34:30,540 imos levar algún valor y e imos facer a quadratura-lo. 663 00:34:30,540 --> 00:34:31,780 Así por diante e así por diante. 664 00:34:31,780 --> 00:34:35,549 >> Agora nós realmente pode só crear un poder de función 2 para iso, non? 665 00:34:35,549 --> 00:34:37,090 Entón nós crear un poder de función 2. 666 00:34:37,090 --> 00:34:38,600 Imos aceptar unha parella. 667 00:34:38,600 --> 00:34:41,489 Imos output-- ou nós imos volver un tipo de matrimonio. 668 00:34:41,489 --> 00:34:46,159 Nós imos levar este resultado e, a continuación, para o dobre 669 00:34:46,159 --> 00:34:52,040 o que realmente levar os resultados, que foi inicializar co valor de un, 670 00:34:52,040 --> 00:34:53,090 e multiplicalo por x. 671 00:34:53,090 --> 00:34:56,540 Entón, en esencia, temos x veces x aquí. 672 00:34:56,540 --> 00:35:01,860 >> E entón eu podo entón, como poderiamos esperar, tome isto, poder correr de 2, 673 00:35:01,860 --> 00:35:03,680 proporcionan a el algúns datos, eu gusto 2.0. 674 00:35:03,680 --> 00:35:05,756 E nós comezamos a ver os resultados aquí 4.0. 675 00:35:05,756 --> 00:35:09,200 Realice potencia de 2 en 3,2 e nós comeza a ver o noso resultado, 10,24. 676 00:35:09,200 --> 00:35:10,840 Ata aí todo ben, non? 677 00:35:10,840 --> 00:35:12,070 Agora estamos a pensar, así, OK. 678 00:35:12,070 --> 00:35:15,530 Agora eu realmente precisa facer unha chea de poderes de 3. 679 00:35:15,530 --> 00:35:19,180 Entón, eu vou copiar e pegar todo este código, cambiar o nome da función de 680 00:35:19,180 --> 00:35:24,440 alimentación de potencia de 2 a 3, e todo será o mesmo, excepto para este valor 681 00:35:24,440 --> 00:35:26,740 aquí, neste intervalo, 1 ... 2. 682 00:35:26,740 --> 00:35:29,590 >> Entón, en vez de repetir este ciclo dúas veces, 683 00:35:29,590 --> 00:35:31,880 Quero repetir este ciclo tres veces. 684 00:35:31,880 --> 00:35:36,330 Entón, eu só cambiar o valor de 1 a 3-- ou en vez de 2 a 3. 685 00:35:36,330 --> 00:35:39,230 Entón, de novo, do mesmo código, esa é a única cambio. 686 00:35:39,230 --> 00:35:40,080 Agora iso tamén funciona. 687 00:35:40,080 --> 00:35:43,860 Poder de 3 subministrada en algún valor de 2. 688 00:35:43,860 --> 00:35:44,420 Estivemos con 8. 689 00:35:44,420 --> 00:35:45,370 Entón 2 cubos. 690 00:35:45,370 --> 00:35:48,060 E 3.2 en cubos é de 32,768. 691 00:35:48,060 --> 00:35:50,597 E ata aí todo ben, non? 692 00:35:50,597 --> 00:35:52,930 Pero espero que isto é un pouco bit dunha bandeira vermella para ti 693 00:35:52,930 --> 00:35:55,530 en que agora temos algúns duplicación de código 694 00:35:55,530 --> 00:35:58,800 con excepción dalgúns moito menor cambiar dunha a outra. 695 00:35:58,800 --> 00:36:02,170 Entón, hai algunha maneira que poderiamos ser capaces de simplificar 696 00:36:02,170 --> 00:36:06,080 este problema, onde podemos realmente, en tempo de execución, descubrir algúns, 697 00:36:06,080 --> 00:36:11,320 nos fornecer algunha función que ten precisamente o poder do que queremos. 698 00:36:11,320 --> 00:36:13,960 >> E hai esa idea de clausura, o que é moi, moi 699 00:36:13,960 --> 00:36:18,180 importante, no contexto da Swift, e en moitas outras linguas tamén. 700 00:36:18,180 --> 00:36:21,580 Pero, probablemente, vai ver el é utilizado máis no Swift 701 00:36:21,580 --> 00:36:23,650 porque está incorporado dentro da linguaxe 702 00:36:23,650 --> 00:36:28,280 que vai noutra tamén linguas modernas. 703 00:36:28,280 --> 00:36:31,140 Así, a idea dun peche é este, que é 704 00:36:31,140 --> 00:36:35,430 pode ter unha función que desexa ser unha función xenérica, un poder xenérico 705 00:36:35,430 --> 00:36:36,860 da función. 706 00:36:36,860 --> 00:36:41,010 >> E esa función aceptará este expoñente que realmente 707 00:36:41,010 --> 00:36:42,990 quere crear. 708 00:36:42,990 --> 00:36:46,550 Así, por exemplo, o primeiro exemplo, queriamos unha potencia de 2. 709 00:36:46,550 --> 00:36:50,050 Por iso, sería proporcionar enerxía de e, a continuación, en parénteses 2. 710 00:36:50,050 --> 00:36:52,490 E agora o que este, en realidade, retorna. 711 00:36:52,490 --> 00:36:57,680 Este recibe unha entrada dun iniciador chamado y que é un número enteiro, 712 00:36:57,680 --> 00:37:03,090 e el retorna este tolo buscando cousa en parénteses parentheses-- 713 00:37:03,090 --> 00:37:06,230 matrimonio e, a continuación, frecha dobre. 714 00:37:06,230 --> 00:37:10,270 >> O que isto significa que eu son vai voltar unha función. 715 00:37:10,270 --> 00:37:13,510 Eu non estou volvendo outro tipo de datos, eu son 716 00:37:13,510 --> 00:37:16,350 en realidade retornando dunha función que ten este parámetro, que 717 00:37:16,350 --> 00:37:22,680 acepta un dúo como entrada e xera unha dobre como un valor de retorno. 718 00:37:22,680 --> 00:37:29,750 E, como resultado, porque agora eu chamei poder, pasando nalgún valor para y, 719 00:37:29,750 --> 00:37:32,280 e eu estou creando esoutro aviso function-- que hai 720 00:37:32,280 --> 00:37:35,980 outra función que está a ser creado dentro isto-- o que eu estou facendo 721 00:37:35,980 --> 00:37:37,830 é entón podo cambiar este valor, que un 722 00:37:37,830 --> 00:37:41,010 valor que cambiara 2-3, agora estou a facelo y. 723 00:37:41,010 --> 00:37:42,500 >> E iso persiste. 724 00:37:42,500 --> 00:37:48,530 Entón, cada vez que eu chamo de poder de, esencialmente, o que pasa 725 00:37:48,530 --> 00:37:51,030 é que eu teño de retorno dunha función. 726 00:37:51,030 --> 00:37:54,310 Lembre que aquí me define unha nova variable chamada praza. 727 00:37:54,310 --> 00:37:59,340 Eu define-lo mesmo que o poder de, sempre que este valor 2 ao poder de. 728 00:37:59,340 --> 00:38:02,030 E o que iso retorno é a función. 729 00:38:02,030 --> 00:38:05,970 Entón praza, a variable cadrado, agora é do tipo de función 730 00:38:05,970 --> 00:38:11,390 que ten isto-- oops, desprácese arriba un pouco bit-- que ten esa sinatura, 731 00:38:11,390 --> 00:38:15,560 aceptar unha parella e saída dunha parella. 732 00:38:15,560 --> 00:38:17,330 >> Entón agora o que eu fixen Eu teño é esencialmente 733 00:38:17,330 --> 00:38:22,890 creou unha función chamada praza que acepta calquera valor e será cadrado-lo. 734 00:38:22,890 --> 00:38:24,960 Podemos ver que pasa aquí. 735 00:38:24,960 --> 00:38:29,960 Praza 3, por exemplo, significa que eu vou para aproveitar o valor 3 e cadrado-lo. 736 00:38:29,960 --> 00:38:32,010 Entón, como exactamente funciona isto? 737 00:38:32,010 --> 00:38:37,800 Cando pasar o poder de 2-- cando pasar 2 a este poder de función, 738 00:38:37,800 --> 00:38:44,430 esta variable y é Explique o valor 2. 739 00:38:44,430 --> 00:38:46,340 E iso é unha especie de retido na memoria. 740 00:38:46,340 --> 00:38:49,430 Isto é unha especie de como realizar en estado algures no ordenador, 741 00:38:49,430 --> 00:38:51,980 nós realmente non me importa o quão ou en que, neste punto. 742 00:38:51,980 --> 00:38:54,692 >> Pero eu volver esta función chamado exponentiate. 743 00:38:54,692 --> 00:38:57,400 E, de novo, iso realmente non importa o que esta función é chamada, 744 00:38:57,400 --> 00:39:01,730 nós realmente podemos chamalo de calquera cousa, que acepta un double e retorna unha parella, 745 00:39:01,730 --> 00:39:05,640 pero usa ese valor y dentro del. 746 00:39:05,640 --> 00:39:09,290 Entón, aínda que sexa esta función, esta función exponentiater que é 747 00:39:09,290 --> 00:39:13,600 foi devolto á miña variable que eu chamei cadrado, 748 00:39:13,600 --> 00:39:17,980 que ten nela contido esa noción de que era y. 749 00:39:17,980 --> 00:39:19,070 E recorda que. 750 00:39:19,070 --> 00:39:24,810 >> Entón, cada vez que eu chamar esa función que agora se chama cadrado, usa isto. 751 00:39:24,810 --> 00:39:27,990 Pero iso tamén significa que podo crear outra variable utilizando 752 00:39:27,990 --> 00:39:29,120 un poder diferente de. 753 00:39:29,120 --> 00:39:33,240 Entón, podo crear unha variable de cubo, para exemplo facilitar a el o poder de tres. 754 00:39:33,240 --> 00:39:37,230 Agora cubo vai realmente levar moito valor e cubo que e devolve-lo. 755 00:39:37,230 --> 00:39:39,570 Así, podemos ver que eu recibín un valor de 8 a partir diso. 756 00:39:39,570 --> 00:39:42,720 >> Pero ese valor y non ten cambiou, porque son 757 00:39:42,720 --> 00:39:44,980 realizada en especie de variables independentes. 758 00:39:44,980 --> 00:39:47,480 Son unha especie de lugar en espazos independentes na memoria. 759 00:39:47,480 --> 00:39:51,290 Entón cubo terá sempre x para o poder do 3. 760 00:39:51,290 --> 00:39:55,380 E cadrado terá sempre x para a potencia de 2, que 761 00:39:55,380 --> 00:39:58,470 significa que cadrado será sempre números cadrados, como eu esperaba. 762 00:39:58,470 --> 00:40:01,794 E cubo sempre en cubos números, como eu esperaba. 763 00:40:01,794 --> 00:40:04,960 Isto tamén significa que ás veces pode obter algún tipo de sintaxe vista funky 764 00:40:04,960 --> 00:40:09,030 onde ten o poder de ben no parte inferior da pantalla aquí, o poder de 5. 765 00:40:09,030 --> 00:40:11,410 E pasar ao resultado. 766 00:40:11,410 --> 00:40:14,670 Vostede chama iso de función que é Atopouse co número 4. 767 00:40:14,670 --> 00:40:17,440 E entón o que, esencialmente, este é de 4 a quinta potencia, 768 00:40:17,440 --> 00:40:20,830 podemos ver os resultados alí. 769 00:40:20,830 --> 00:40:23,690 Con min ata agora? 770 00:40:23,690 --> 00:40:26,620 >> Entón, esa idea chámase peche, porque o que estamos facendo, basicamente, 771 00:40:26,620 --> 00:40:30,610 é que estamos encapsulado algúns datos into-- especie 772 00:40:30,610 --> 00:40:33,050 de englobar estes datos nunha función e estamos 773 00:40:33,050 --> 00:40:36,240 poder reutilizar esta función. 774 00:40:36,240 --> 00:40:41,480 Agora esta sintaxe aínda pode realmente ser simplificados dunha gran cantidade. 775 00:40:41,480 --> 00:40:45,005 E hai moita posibilidade en Swift para esta simplificación. 776 00:40:45,005 --> 00:40:47,780 E iso é o tipo do as posteriores realmente ollar. 777 00:40:47,780 --> 00:40:51,400 Así, en 7b por exemplo, nós levar este mesmo código exacto. 778 00:40:51,400 --> 00:40:54,360 >> Pero agora, en vez de realmente definir unha función 779 00:40:54,360 --> 00:40:57,910 dentro deste poder de funcionar e darlle un nome, 780 00:40:57,910 --> 00:41:00,150 e, a continuación, voltar o nome desa función, o que 781 00:41:00,150 --> 00:41:02,357 logo se usa como parte este peche, no canto estamos 782 00:41:02,357 --> 00:41:03,440 indo só para simplifica-lo. 783 00:41:03,440 --> 00:41:06,580 Non necesitamos esta función non ser identificado. 784 00:41:06,580 --> 00:41:09,760 Polo tanto, este é o concepto dun función anónima onde podemos, a continuación, 785 00:41:09,760 --> 00:41:15,180 aceptar como entrada, entre parénteses aquí, a variable x que é do tipo double. 786 00:41:15,180 --> 00:41:17,250 >> Estamos indo para voltar o tipo de matrimonio. 787 00:41:17,250 --> 00:41:19,830 E, a continuación, o seu contrasinal, n, é o inicio desta función. 788 00:41:19,830 --> 00:41:22,180 Entón, teña en conta que todo isto é dentro de claves 789 00:41:22,180 --> 00:41:25,310 e estamos definindo un anónima funcionar aquí. 790 00:41:25,310 --> 00:41:29,910 Só unha forma máis simple de definir exactamente o mesmo. 791 00:41:29,910 --> 00:41:30,810 OK? 792 00:41:30,810 --> 00:41:36,740 Pero espera, Swift realmente nos permite para ir máis lonxe e simplificar aínda máis, 793 00:41:36,740 --> 00:41:40,180 porque realmente non importa que este parámetro é 794 00:41:40,180 --> 00:41:41,700 chamado algo particular. 795 00:41:41,700 --> 00:41:48,090 É realmente ser chamado algo e aínda podemos usar este primeiro parámetro. 796 00:41:48,090 --> 00:41:53,800 >> Entón, en realidade, non é este especial tipo de datos en funcións anónimas, 797 00:41:53,800 --> 00:41:57,710 hai este nome especial de variables en funcións anónimas 798 00:41:57,710 --> 00:42:00,280 que comezan coa cifrão e representan 799 00:42:00,280 --> 00:42:03,785 os números de parámetro, o cero indexados, para esta función. 800 00:42:03,785 --> 00:42:05,410 Polo tanto, hai un par de cousas a suceder. 801 00:42:05,410 --> 00:42:08,550 Aquí eu vou volver, e logo un chaveta representando unha función, 802 00:42:08,550 --> 00:42:09,050 non? 803 00:42:09,050 --> 00:42:13,920 >> Repare que eu non teña definido o tipos de parámetro ou o tipo de retorno. 804 00:42:13,920 --> 00:42:16,460 De feito, pódese inferir por mor da sinatura 805 00:42:16,460 --> 00:42:18,360 desta función orixinal. 806 00:42:18,360 --> 00:42:20,500 Así, podemos eliminar que como unha posibilidade. 807 00:42:20,500 --> 00:42:25,120 Pero tamén podo usar o sinal de dólar cero a representa ese primeiro parámetro que é 808 00:42:25,120 --> 00:42:28,200 pasou a esta función anónima. 809 00:42:28,200 --> 00:42:31,630 Entón, simplificando-o aínda máis. 810 00:42:31,630 --> 00:42:32,750 OK? 811 00:42:32,750 --> 00:42:33,820 De momento, todo ben? 812 00:42:33,820 --> 00:42:36,980 >> Agora é este type-- vostede Teña en conta que este sinal de dólar de cero 813 00:42:36,980 --> 00:42:40,130 que vimos neste chaveta que vimos só un pouco 814 00:42:40,130 --> 00:42:43,870 atrás neste seis exemplo Swift? 815 00:42:43,870 --> 00:42:46,560 Foi aquí mesmo. 816 00:42:46,560 --> 00:42:48,430 Nótese que é exactamente o que estamos mirando, 817 00:42:48,430 --> 00:42:51,580 é que xa pasamos para esta función de división 818 00:42:51,580 --> 00:42:55,140 unha función anónima que verifica o primeiro parámetro 819 00:42:55,140 --> 00:42:57,830 para ver se é igual ao símbolo de colon. 820 00:42:57,830 --> 00:42:59,830 E iso é o que é pasando, é que todos 821 00:42:59,830 --> 00:43:02,320 estamos doing-- o retorno contrasinal está implícito 822 00:43:02,320 --> 00:43:05,800 neste case-- estamos volvendo este valor para onde estamos comparando 823 00:43:05,800 --> 00:43:10,020 o primeiro parámetro en relación este colonos personaxe. 824 00:43:10,020 --> 00:43:11,730 E así, este tipo de desmistifica iso. 825 00:43:11,730 --> 00:43:17,210 E vai ver esta construción moi en sintaxe Swift, así como manter ese 826 00:43:17,210 --> 00:43:19,400 presente cando está tendo un ollar para iso. 827 00:43:19,400 --> 00:43:21,970 Agora podemos saír os coches un pouco 828 00:43:21,970 --> 00:43:25,460 e ir realmente sofisticados que mostra incluso un pouco máis de poder de Swift. 829 00:43:25,460 --> 00:43:27,950 Podes incluso ver algúns destes en códigos de mostra. 830 00:43:27,950 --> 00:43:29,790 Entón é por iso que eu vou amosar isto para vostede. 831 00:43:29,790 --> 00:43:37,260 >> Basicamente o que podemos facer é que, en primeiro lugar de todo, era unha especie de innecesaria para min 832 00:43:37,260 --> 00:43:41,710 para aplicar toda esta potencia de código, porque se importar o Darwin 833 00:43:41,710 --> 00:43:46,490 biblioteca, realmente inclúe unha función chamado pow que fai isto para vostede. 834 00:43:46,490 --> 00:43:50,570 Así, podemos simplifica-lo aínda máis e temos a nosa función de potencia ata agora só 835 00:43:50,570 --> 00:43:54,890 ser un marabilloso un forro onde acabamos voltar esta función anónima que 836 00:43:54,890 --> 00:44:00,780 acepta dólar sinal 0 como o seu base e y como o seu expoñente. 837 00:44:00,780 --> 00:44:02,582 >> Pero podemos estar realmente, moi chique cando nós 838 00:44:02,582 --> 00:44:04,790 entender que Swift ten un lote de potencia baixo o capó. 839 00:44:04,790 --> 00:44:07,010 Moitos dos operadores que estivemos xestionar, 840 00:44:07,010 --> 00:44:11,270 ademais de signos e símbolos de división e todas esas cousas que normalmente 841 00:44:11,270 --> 00:44:15,620 operar con con tipos de datos nunha linguaxe de programación, 842 00:44:15,620 --> 00:44:17,600 son, en realidade, en Swift extensible. 843 00:44:17,600 --> 00:44:21,460 Entón, o que isto significa que nós Pode configurar os nosos propios operadores. 844 00:44:21,460 --> 00:44:26,020 >> Entón agora eu estou canso de escribir todo isto pow e, a continuación, un paréntesis e despois 845 00:44:26,020 --> 00:44:26,520 a base. 846 00:44:26,520 --> 00:44:27,520 Eu non quero facelo. 847 00:44:27,520 --> 00:44:30,190 En realidade, eu quero ter unha operador que me permite facelo. 848 00:44:30,190 --> 00:44:34,510 Entón, podo dicir que quero Swift para crear un operador, estrela 849 00:44:34,510 --> 00:44:39,472 star-- polo xeito que eu non podo usar o quilates porque o quilates é un operador que 850 00:44:39,472 --> 00:44:40,680 fai algo completamente diferente. 851 00:44:40,680 --> 00:44:42,720 Entón eu non quero clasificar de chocar con aquela. 852 00:44:42,720 --> 00:44:45,750 E así, o que ve nunha variedade de linguas, incluíndo Python, 853 00:44:45,750 --> 00:44:48,810 é como operador star star para representar expoñentes. 854 00:44:48,810 --> 00:44:50,730 >> Así que esta é a única razón por que eu fixen iso. 855 00:44:50,730 --> 00:44:53,067 E iso vai ser un operador infixo tipo. 856 00:44:53,067 --> 00:44:54,900 E eu teño que ofrecer para el unha información 857 00:44:54,900 --> 00:44:58,386 sobre a precedencia do presente operador por iso é asociativa esquerda. 858 00:44:58,386 --> 00:45:00,260 É como relativamente alta prioridade en relación 859 00:45:00,260 --> 00:45:02,432 a somação ou multiplicación. 860 00:45:02,432 --> 00:45:04,140 É maior prioridade que todo isto. 861 00:45:04,140 --> 00:45:04,931 Así por diante e así por diante. 862 00:45:04,931 --> 00:45:07,410 E entón eu definir o función que realmente 863 00:45:07,410 --> 00:45:10,070 dita o que este operador fai. 864 00:45:10,070 --> 00:45:14,150 Así, supoñendo que eu teño unha esquerda lado e do lado dereito, 865 00:45:14,150 --> 00:45:17,330 que sería, quizais, unha mellor nome da variable para iso. 866 00:45:17,330 --> 00:45:20,690 Á esquerda e á dereita. 867 00:45:20,690 --> 00:45:26,740 Podo, entón, tomar ese poder do á esquerda para o lado dereito 868 00:45:26,740 --> 00:45:28,980 e devolver ese valor. 869 00:45:28,980 --> 00:45:30,370 Polo tanto, agora é super doce. 870 00:45:30,370 --> 00:45:33,790 Todo o que temos que facer é estrela 2 estrelas 3 e que é de 2 a terceira potencia, 871 00:45:33,790 --> 00:45:35,290 e temos un valor de 8. 872 00:45:35,290 --> 00:45:40,280 Estrela 2 estrelas 10 é de 2 a 10 enerxía, temos 1.024. 873 00:45:40,280 --> 00:45:43,630 >> Polo tanto, agora o noso poder de función, que á súa vez é diferente, 874 00:45:43,630 --> 00:45:47,030 porque toda a idea detrás diso foi que temos unha función que 875 00:45:47,030 --> 00:45:50,700 sempre leva algún valor e multiplica ele-- ou mellor 876 00:45:50,700 --> 00:45:53,240 leva o expoñente para a mesma potencia. 877 00:45:53,240 --> 00:45:54,300 Polo tanto, agora é aínda máis sinxela. 878 00:45:54,300 --> 00:45:57,070 Entón agora é só dólar asinar 0 star star y. 879 00:45:57,070 --> 00:46:01,190 Nós nin sequera ten que usar pow anymore. 880 00:46:01,190 --> 00:46:03,020 >> OK, que perdeu? 881 00:46:03,020 --> 00:46:03,700 Estamos facendo OK? 882 00:46:03,700 --> 00:46:05,090 Calquera dúbida sobre este material? 883 00:46:05,090 --> 00:46:05,815 Si? 884 00:46:05,815 --> 00:46:09,500 >> Audiencia: Cando você-- [inaudível] o poder do funk de y matrimonio. 885 00:46:09,500 --> 00:46:11,441 Entón, cando está retornando dunha función. 886 00:46:11,441 --> 00:46:13,190 DANIEL Armendáriz: Funk de poder y matrimonio. 887 00:46:13,190 --> 00:46:14,270 Oh yeah, eu non sei o que os números son y. 888 00:46:14,270 --> 00:46:15,708 Sentímolo por iso. 889 00:46:15,708 --> 00:46:19,420 >> Audiencia: Por que está volvendo unha función [inaudível] despacho. 890 00:46:19,420 --> 00:46:24,214 Non se dólar cero star estrela y [inaudível] 891 00:46:24,214 --> 00:46:29,710 atopar ese operador que retornando double [inaudível] dobrar? 892 00:46:29,710 --> 00:46:32,742 >> DANIEL Armendáriz: Entón deixe- me responder á súa pregunta 893 00:46:32,742 --> 00:46:35,950 como eu a entendo, e me pode dicir se eu non entendín súa pregunta. 894 00:46:35,950 --> 00:46:42,850 Entón, esta construción, a chaveta cifrão cero star estrela y, 895 00:46:42,850 --> 00:46:44,280 é unha función. 896 00:46:44,280 --> 00:46:50,080 E acepta un parámetro que é representado por este sinal de dólar cero. 897 00:46:50,080 --> 00:46:55,830 O contrasinal retorno está implícito nesta sintaxe da función moi curto, anónimo. 898 00:46:55,830 --> 00:46:57,870 >> O que significa que, esencialmente, o que se di 899 00:46:57,870 --> 00:47:01,270 é que eu estou definindo un function-- e entón eu vou 900 00:47:01,270 --> 00:47:05,320 basta chamalo something-- onde eu teño algún valor y. 901 00:47:05,320 --> 00:47:08,300 Teño y, que é o dobre. 902 00:47:08,300 --> 00:47:10,750 E eu estou volvendo unha parella. 903 00:47:10,750 --> 00:47:19,010 E eu teño dentro dese regreso y-- sorry, Eu non debería ter chamado este x y--. 904 00:47:19,010 --> 00:47:20,240 Oh querida, oh querida, oh querida. 905 00:47:20,240 --> 00:47:27,440 X-- nope-- star star y. 906 00:47:27,440 --> 00:47:29,720 >> Polo tanto, esta é só unha versión simplificada deste. 907 00:47:29,720 --> 00:47:33,990 E así, a razón que eu teño dólar sinal cero é que a utilización deste gabinete 908 00:47:33,990 --> 00:47:41,050 significa que eu non teño máis escribir prisioneiro de guerra, ou deixou de facer 909 00:47:41,050 --> 00:47:45,570 Teño que facer algo como 3 estrelas estrela 2. 910 00:47:45,570 --> 00:47:48,530 Eu só podo ter un único función chamada praza 911 00:47:48,530 --> 00:47:50,820 que sempre tomará algúns como valor de entrada 912 00:47:50,820 --> 00:47:52,980 e realmente volver a praza do que iso. 913 00:47:52,980 --> 00:47:56,460 >> Así, toda a finalidade de que o peche sexa para só unha especie de encapsular o feito 914 00:47:56,460 --> 00:47:59,920 que eu sempre quero usar y sempre Eu chamo iso de función que o poder 915 00:47:59,920 --> 00:48:01,710 cando tomar este expoñente. 916 00:48:01,710 --> 00:48:04,650 Así, volvendo logo unha función que acepta 917 00:48:04,650 --> 00:48:08,460 un dobre, que é a base, e retornando o resultado dese expoñente 918 00:48:08,460 --> 00:48:10,740 é a clave aquí. 919 00:48:10,740 --> 00:48:12,790 E esa é a gran diferenza. 920 00:48:12,790 --> 00:48:14,430 Houbo só un pouco de un aventura. 921 00:48:14,430 --> 00:48:17,970 >> Isto non é diferente en comparación cos exemplos anteriores, 922 00:48:17,970 --> 00:48:20,530 pero foi só un pouco de a florecer podemos realmente 923 00:48:20,530 --> 00:48:24,500 crear un operador en Swift e realmente facer cousas con el, 924 00:48:24,500 --> 00:48:26,396 que é un tipo de cousa legal. 925 00:48:26,396 --> 00:48:27,520 Será que eu responder a súa pregunta? 926 00:48:27,520 --> 00:48:28,390 Doce. 927 00:48:28,390 --> 00:48:31,350 Calquera outra cousa antes de seguir adiante? 928 00:48:31,350 --> 00:48:33,570 Aceptar. 929 00:48:33,570 --> 00:48:36,430 >> Agora este tipo de suplica a pregunta é isso-- ben OK, 930 00:48:36,430 --> 00:48:40,870 agora temos a capacidade para funcións a seren devoltos. 931 00:48:40,870 --> 00:48:48,950 Podemos tamén pasar funcións como datos ou como parámetros para outras funcións? 932 00:48:48,950 --> 00:48:50,710 E, de feito, podemos. 933 00:48:50,710 --> 00:48:53,480 Entón, imos dicir que temos todos o mesmo código. 934 00:48:53,480 --> 00:48:56,120 Temos a variable cadrado que será cadrado este código. 935 00:48:56,120 --> 00:48:59,320 E nós temos a variable cubo que vai cubo algúns datos. 936 00:48:59,320 --> 00:49:02,440 E nós realmente quere aplicar para unha ampla variedade de números. 937 00:49:02,440 --> 00:49:06,870 >> Entón o que nós pode ser tentado a facer, por suposto, o que certamente é válido, 938 00:49:06,870 --> 00:49:15,430 é para repetir esta lista de números e aplicar as miñas funcións cadrado e cubo 939 00:49:15,430 --> 00:49:22,270 e obter dúas novas listas como resultados que son esta lista orixinal cadrado 940 00:49:22,270 --> 00:49:24,970 e en cubos, respectivamente. 941 00:49:24,970 --> 00:49:26,880 É perfectamente aceptable. 942 00:49:26,880 --> 00:49:29,130 Pero o que é a cousa que que vemos aquí é que temos, 943 00:49:29,130 --> 00:49:31,310 de novo, a duplicación de noso código. 944 00:49:31,310 --> 00:49:34,310 E non hai, quizais, unha oportunidade para nós para simplificar isto un pouco. 945 00:49:34,310 --> 00:49:41,260 E se houbese un xeito para que nós en realidade, sempre interactuar sobre algunha lista 946 00:49:41,260 --> 00:49:45,450 e só pasar este máxico funcionar unha variable que 947 00:49:45,450 --> 00:49:47,350 representa unha función que queremos aplicar 948 00:49:47,350 --> 00:49:50,336 para cada elemento desta lista. 949 00:49:50,336 --> 00:49:53,210 Isto trae o concepto do que son chamadas de funcións de orde superior. 950 00:49:53,210 --> 00:49:57,150 E iso é basicamente o que este é, é que podemos crear unha función. 951 00:49:57,150 --> 00:50:00,210 >> E neste caso, chámase mapeador, só para darlle un nome, só 952 00:50:00,210 --> 00:50:02,510 cartografía sobre cada único elemento nunha lista. 953 00:50:02,510 --> 00:50:06,191 Onde eu tomar unha lista e eu levo unha función. 954 00:50:06,191 --> 00:50:08,440 E esa función, por suposto, ten unha certa sinatura. 955 00:50:08,440 --> 00:50:11,980 El acepta como un dobre parámetro e vai saída é un dúo. 956 00:50:11,980 --> 00:50:14,310 E todo o resultado esta función vai 957 00:50:14,310 --> 00:50:18,921 para ser unha nova lista que é do tipo double. 958 00:50:18,921 --> 00:50:19,420 OK? 959 00:50:19,420 --> 00:50:22,650 >> E o que eu vou facer é aplicar esta función f 960 00:50:22,650 --> 00:50:24,960 cada elemento na miña lista. 961 00:50:24,960 --> 00:50:30,280 E reply-- e si volver esta nova lista, como resultado, o que é moi legal. 962 00:50:30,280 --> 00:50:31,820 Agora podo pasar funcións arredor. 963 00:50:31,820 --> 00:50:35,290 E esa idea de orde superior funcións é realmente importante. 964 00:50:35,290 --> 00:50:39,260 E iso é realmente só mapeador implementación do home pobre 965 00:50:39,260 --> 00:50:43,130 dunha función que está construído en Swift chamado mapa. 966 00:50:43,130 --> 00:50:45,690 E fai xustamente iso, quizais ata un pouco mellor. 967 00:50:45,690 --> 00:50:48,260 >> Esta é só unha especie de xenérico, versión simplificada que 968 00:50:48,260 --> 00:50:51,270 nos permite ver o concepto que se aplica aquí. 969 00:50:51,270 --> 00:50:54,630 Agora mire para o camiño que eu Pode realmente aplicar o meu cadrado 970 00:50:54,630 --> 00:50:57,850 e as miñas funcións de cubo a esta lista de números. 971 00:50:57,850 --> 00:50:58,780 Eu corro o meu mapeador. 972 00:50:58,780 --> 00:51:00,280 I proporcionar a el miña lista de números. 973 00:51:00,280 --> 00:51:02,155 I proporcionar-lle o do función que está a suceder 974 00:51:02,155 --> 00:51:04,170 a aplicar a cada un destes índices. 975 00:51:04,170 --> 00:51:07,120 E iso vai ser saída como un resultado. 976 00:51:07,120 --> 00:51:11,810 E eu vou comezar a ver que eu cadrado e en cubos meus números como resultado. 977 00:51:11,810 --> 00:51:14,660 >> E, por suposto, o mapeador tomará calquera tipo de función anónima. 978 00:51:14,660 --> 00:51:17,640 Podemos ata ver que eu creei unha nova función anónima que 979 00:51:17,640 --> 00:51:20,220 só ten algún parámetro e divídese o por dous. 980 00:51:20,220 --> 00:51:24,340 E podemos ver que eu teño, de feito, divididos miña lista por 2 en vez. 981 00:51:24,340 --> 00:51:25,250 Legal? 982 00:51:25,250 --> 00:51:27,340 De momento, todo ben? 983 00:51:27,340 --> 00:51:29,650 Todo ben, agora imos volver a esta idea. 984 00:51:29,650 --> 00:51:36,160 Imos implementar esta de volta en no contexto dun sistema de notas. 985 00:51:36,160 --> 00:51:41,860 >> E se eu fai iso, podemos ver que eu poida aplicar unha gran variedade destes opções-- 986 00:51:41,860 --> 00:51:44,330 ou unha gran variedade de estes funcións de orde superior 987 00:51:44,330 --> 00:51:51,450 para realmente simplificar a miña capacidade de facer unha variedade de cousas sobre listas de números. 988 00:51:51,450 --> 00:51:53,660 Así, por exemplo, se eu Dea unha lista de números, 989 00:51:53,660 --> 00:51:57,060 unha das funcións de orde superior que existe chámase reducir. 990 00:51:57,060 --> 00:52:00,080 O que fai reducir vez do mapa, é reducida vontade 991 00:52:00,080 --> 00:52:03,710 tomar dous elementos na lista, terá algunha función que 992 00:52:03,710 --> 00:52:07,420 compara os dous elementos de na lista e, a continuación, que vai 993 00:52:07,420 --> 00:52:09,610 tipo de output-- o saída do que a función 994 00:52:09,610 --> 00:52:13,790 será un elemento que Vostede, entón, comparar cos outros. 995 00:52:13,790 --> 00:52:18,190 >> Entón, vostede podería usar isto para realmente suma dos números na súa lista. 996 00:52:18,190 --> 00:52:20,640 Por exemplo, se tivese unha lista de 1, 2, 3, 4, 5, 997 00:52:20,640 --> 00:52:22,940 dar os primeiros elementos, 1 e 2. 998 00:52:22,940 --> 00:52:27,270 Pode aplicar a el un engadido función que leva estes dous elementos 999 00:52:27,270 --> 00:52:30,980 e cospe un deses elementos, que sería o valor 3. 1000 00:52:30,980 --> 00:52:35,684 Entón nós tomamos ese valor 3 co seguinte elemento da lista, suma destes dous, 1001 00:52:35,684 --> 00:52:37,100 e entón siga indo para abaixo na lista. 1002 00:52:37,100 --> 00:52:40,410 >> Estamos reducindo o lista a un único valor. 1003 00:52:40,410 --> 00:52:42,700 E iso só acontece que o símbolo máis 1004 00:52:42,700 --> 00:52:44,670 é un operador, como acabamos de ver. 1005 00:52:44,670 --> 00:52:47,500 Este operador é en realidade, unha función que 1006 00:52:47,500 --> 00:52:53,100 ten precisamente esta lista que quere, en vez desas propiedades 1007 00:52:53,100 --> 00:52:54,770 que desexamos. 1008 00:52:54,770 --> 00:52:56,760 Entón eu encorajo-vos a Bótalle un ollo niso. 1009 00:52:56,760 --> 00:52:59,290 Quero tipo de movemento na dalgúns deste código 1010 00:52:59,290 --> 00:53:05,330 para que poidamos realmente ollar para algúns real real e verdadeira Swift, en Xcode, 1011 00:53:05,330 --> 00:53:06,880 en desenvolvemento IOS. 1012 00:53:06,880 --> 00:53:08,630 Pero bótalle un ollo iso e ver se poida 1013 00:53:08,630 --> 00:53:11,171 analizar a través de que está a suceder con algúns destes orde superior 1014 00:53:11,171 --> 00:53:13,790 incluíndo funcións de filtro, reducir, e mesmo 1015 00:53:13,790 --> 00:53:17,060 ver nalgún lugar aquí mapa tamén. 1016 00:53:17,060 --> 00:53:17,910 É aquí mesmo. 1017 00:53:17,910 --> 00:53:20,410 Onde será unha secuencia de clases e que vai realmente 1018 00:53:20,410 --> 00:53:24,230 mapea los usando a construción de rede, que pode recoñecer a partir de C, 1019 00:53:24,230 --> 00:53:27,640 pero en realidade é moito máis poderosa do que a construción de rede 1020 00:53:27,640 --> 00:53:29,810 que temos en C. 1021 00:53:29,810 --> 00:53:31,930 >> E nós imos aplicar iso a cada elemento da lista 1022 00:53:31,930 --> 00:53:34,540 e realmente prestar o grao de letra de cada 1023 00:53:34,540 --> 00:53:40,780 de todos estes graos usando estes conceptos que nos acabamos de falar antes. 1024 00:53:40,780 --> 00:53:44,760 Agora imos eludir por só un minuto e falar sobre estruturas. 1025 00:53:44,760 --> 00:53:49,680 E así estruturas son unha espera en C que nós foron capaces de definir un novo tipo de datos. 1026 00:53:49,680 --> 00:53:53,590 Structs existir dentro Swift. 1027 00:53:53,590 --> 00:53:58,980 E así facer unha chea de outras construcións chamados enums e clases, que realmente 1028 00:53:58,980 --> 00:54:01,175 levar esta idea a un nivel totalmente distinto. 1029 00:54:01,175 --> 00:54:05,300 >> E basicamente é só unha forma definición dun novo tipo de datos. 1030 00:54:05,300 --> 00:54:11,010 Entón, se get-- se vén en toda clase ou estruturas ou enumeracións, 1031 00:54:11,010 --> 00:54:13,290 non se confunden con iso. 1032 00:54:13,290 --> 00:54:16,280 É só a forma de definir algún novo tipo de datos. 1033 00:54:16,280 --> 00:54:20,230 E iso é realmente importante cando estamos a falar de desenvolvemento IOS app 1034 00:54:20,230 --> 00:54:24,630 porque todo o que existe dentro do app IOS 1035 00:54:24,630 --> 00:54:27,460 é esencialmente un obxecto dalgún tipo. 1036 00:54:27,460 --> 00:54:31,980 E un obxecto é basicamente un clase ou unha enumeración ou un struct. 1037 00:54:31,980 --> 00:54:34,760 >> Polo tanto, neste caso, eu son a definición dun novo tipo de datos 1038 00:54:34,760 --> 00:54:37,740 que eu estou chamando de avaliación iso é algunhas propiedades, incluíndo 1039 00:54:37,740 --> 00:54:41,040 un nome e unha secuencia de notas. 1040 00:54:41,040 --> 00:54:43,470 Entón, un tipo de avaliación que eu podería ter presente 1041 00:54:43,470 --> 00:54:44,760 sería quizzes, por exemplo. 1042 00:54:44,760 --> 00:54:48,180 Gustaríame ter un avaliación de que era un quiz 1043 00:54:48,180 --> 00:54:51,460 e que tiñan unha variedade de tipos asociado con que, por un cuestionario, 1044 00:54:51,460 --> 00:54:52,840 cuestionario dous, así por diante e así por diante. 1045 00:54:52,840 --> 00:54:55,720 >> Ou eu podería ter un tipo de avaliación dos conxuntos de problemas. 1046 00:54:55,720 --> 00:54:56,650 E podo facer as cousas. 1047 00:54:56,650 --> 00:54:59,860 Podo realmente ter funcións dentro deste tipo 1048 00:54:59,860 --> 00:55:02,645 de datos, que son agora chamados métodos. 1049 00:55:02,645 --> 00:55:04,520 Entón, se xa viu a método palabra, é realmente 1050 00:55:04,520 --> 00:55:08,190 é só unha función que se aplica para unha clase moi específica, 1051 00:55:08,190 --> 00:55:10,100 ou a un tipo moi específico de datos. 1052 00:55:10,100 --> 00:55:12,350 Ela nos permite modificar os datos dentro. 1053 00:55:12,350 --> 00:55:15,510 >> Polo tanto, noutras palabras, se eu queira engadir unha nota a miña valoración, 1054 00:55:15,510 --> 00:55:18,630 entón todo o que eu teño que facer é achegar a puntuación que se entrada 1055 00:55:18,630 --> 00:55:22,660 para esta función a miña propiedade interna. 1056 00:55:22,660 --> 00:55:25,880 Hai outra construción puro aquí en Swift, que é este dot dot dot 1057 00:55:25,880 --> 00:55:31,780 operador, o que significa que as puntuacións pode agora aceptar calquera número de enteiros. 1058 00:55:31,780 --> 00:55:33,940 E puntuación será un matriz de enteiros que 1059 00:55:33,940 --> 00:55:39,030 pasasen á miña función, que significa que podo facer cousas como esta. 1060 00:55:39,030 --> 00:55:42,360 >> Podo non engadir notas e só proporcionar números arbitrarios de números enteiros para el 1061 00:55:42,360 --> 00:55:47,420 e, en realidade, ser proporcionada unha matriz estes valores na miña función 1062 00:55:47,420 --> 00:55:50,270 ou no meu método, como é o caso. 1063 00:55:50,270 --> 00:55:54,040 Agora isto é importante porque todo no Xcode, todo en iOS, 1064 00:55:54,040 --> 00:55:56,250 é de feito un obxecto. 1065 00:55:56,250 --> 00:55:59,630 Polo tanto, manter isto presente cando nós estouramos Xcode aberta 1066 00:55:59,630 --> 00:56:04,890 e avance alén iOS versións de dous e tres 1067 00:56:04,890 --> 00:56:08,820 e, en realidade, pasar a versión de catro. 1068 00:56:08,820 --> 00:56:11,940 >> E, de novo, todo isto vai ser remitidas na páxina do seminario. 1069 00:56:11,940 --> 00:56:16,980 IOS catro é unha especie de plena explotado implantación dun app moi básico. 1070 00:56:16,980 --> 00:56:23,920 E o que este app fai é leva unha interface de usuario, que se parece con isto. 1071 00:56:23,920 --> 00:56:28,680 De novo, se eu premer no storyboard que pudermos ver que iso é o que parece. 1072 00:56:28,680 --> 00:56:31,320 Esta é a interface de usuario. 1073 00:56:31,320 --> 00:56:33,676 Ten un título na parte superior. 1074 00:56:33,676 --> 00:56:34,800 Eu chamei el galería web. 1075 00:56:34,800 --> 00:56:38,400 >> No medio hai un elemento chamado a visualización da imaxe UI. 1076 00:56:38,400 --> 00:56:41,340 E na parte inferior hai un barra de ferramentas cun único botón que 1077 00:56:41,340 --> 00:56:46,850 ten espazos elásticos que permiten que el centro no medio desta barra de ferramentas. 1078 00:56:46,850 --> 00:56:51,780 E o que pasa é que, cando este leva-a descarga dun arquivo JSON que é 1079 00:56:51,780 --> 00:56:55,540 contido no servidor noutro lugar, analiza o ficheiro JSON, 1080 00:56:55,540 --> 00:56:58,130 eo arquivo JSON parece un pouco con iso. 1081 00:56:58,130 --> 00:57:02,770 1082 00:57:02,770 --> 00:57:06,230 O ficheiro JSON parécese iso. 1083 00:57:06,230 --> 00:57:08,650 Non é. 1084 00:57:08,650 --> 00:57:11,730 >> Ten un nome de disco e que ten un conxunto de fotografías. 1085 00:57:11,730 --> 00:57:13,490 Cada unha desas fotos teñen un nome e tamén 1086 00:57:13,490 --> 00:57:19,460 unha URL que se representan a jpeg versión de que foto individual. 1087 00:57:19,460 --> 00:57:24,780 Entón, o que pasa é que cando este programa cargas, el baixa o ficheiro JSON, 1088 00:57:24,780 --> 00:57:30,590 analiza-lo, pon todo iso en o equivalente dunha matriz en iOS 1089 00:57:30,590 --> 00:57:33,020 desenvolvemento de aplicacións, o que é un NSArray. 1090 00:57:33,020 --> 00:57:37,520 E entón eu podo entón cargar estes datos nunha aplicación 1091 00:57:37,520 --> 00:57:41,100 e cargalo na miña pantalla. 1092 00:57:41,100 --> 00:57:44,760 >> Existe unha imaxe que procede co botón na parte inferior. 1093 00:57:44,760 --> 00:57:49,190 Se eu premer en Obter imaxe seguinte, el, entón tira aquela imaxe a partir da Internet 1094 00:57:49,190 --> 00:57:53,370 e substitúe a imaxe na visión imaxe UI. 1095 00:57:53,370 --> 00:57:57,820 Entón podes baixar este e realmente Bótalle un ollo no seu ordenador. 1096 00:57:57,820 --> 00:58:00,940 E constrúe-lo e, en realidade, recompila-lo para o seu dispositivo. 1097 00:58:00,940 --> 00:58:04,710 Pero o proceso foi esencialmente iso, cree o storyboard-- 1098 00:58:04,710 --> 00:58:08,080 ou mellor, non create-- pero seleccionar o storyboard. 1099 00:58:08,080 --> 00:58:15,030 E, de feito we'll-- se non mente-- imos dar só un par de segundos 1100 00:58:15,030 --> 00:58:18,390 para realmente amosar-lle como isto foi feito. 1101 00:58:18,390 --> 00:58:22,430 1102 00:58:22,430 --> 00:58:27,820 >> Só que como podemos realmente conseguir isto faise un pouco máis 1103 00:58:27,820 --> 00:58:28,360 aparente. 1104 00:58:28,360 --> 00:58:30,651 Aplicación visión única, eu son vai chamar este seminario 1105 00:58:30,651 --> 00:58:35,330 catro representando este número particular. 1106 00:58:35,330 --> 00:58:36,335 Salva-o no escritorio. 1107 00:58:36,335 --> 00:58:39,890 1108 00:58:39,890 --> 00:58:42,110 OK, imos premer o storyboard. 1109 00:58:42,110 --> 00:58:47,030 E o que eu vou facer é atopar o meu punto de vista de imaxe, 1110 00:58:47,030 --> 00:58:50,940 arrastra o para o meu usuario interface e centro-lo. 1111 00:58:50,940 --> 00:58:54,850 Agora é só centrándose o desgraza non vai facer moita cousa, 1112 00:58:54,850 --> 00:58:58,680 agás a unha pantalla que é este tamaño exacto. 1113 00:58:58,680 --> 00:59:03,950 >> Así, podemos convencer de que por premendo sobre esa cousa de matrimonio círculo, 1114 00:59:03,950 --> 00:59:08,290 derrubar esa pop up menú aquí e cambiar 1115 00:59:08,290 --> 00:59:11,110 para previsualizar, onde nós imos realmente ter a oportunidade de ver como 1116 00:59:11,110 --> 00:59:13,530 iso vai realmente ollar noutros dispositivos. 1117 00:59:13,530 --> 00:59:16,500 Como podemos ver, non temos aínda velo neste caso particular. 1118 00:59:16,500 --> 00:59:18,500 Entón, eu vou pechar iso de momento. 1119 00:59:18,500 --> 00:59:22,100 >> E eu estou indo para seleccionar esta icona para abaixo no propio 1120 00:59:22,100 --> 00:59:23,910 porción inferior da pantalla. 1121 00:59:23,910 --> 00:59:26,584 Di Resolver problemas de deseño Auto. 1122 00:59:26,584 --> 00:59:28,000 Sentímolo, é cortado na parte inferior. 1123 00:59:28,000 --> 00:59:36,360 Pero se eu premer en que, o que eu obter este é pop up-- ir. 1124 00:59:36,360 --> 00:59:39,740 1125 00:59:39,740 --> 00:59:51,220 O que vexo é esta pop up que me permite engadir restricións en falta. 1126 00:59:51,220 --> 00:59:53,780 E facendo que Logo tipo de bloquea-lo 1127 00:59:53,780 --> 00:59:56,640 na porción central da pantalla como eu podería esperar. 1128 00:59:56,640 --> 01:00:00,520 >> Agora, a fin de obter este botón no enriba del, eu teño ir ao editor. 1129 01:00:00,520 --> 01:00:05,010 Ir Embed en e prema Controlador de navegación. 1130 01:00:05,010 --> 01:00:08,900 O que vai facer é que engadirá todo este outro compoñente a ela, 1131 01:00:08,900 --> 01:00:11,310 pero vai realmente enlace Lo de volta á miña UI inicial. 1132 01:00:11,310 --> 01:00:14,450 E os detalles, unha vez máis, non realmente se preocupe agora. 1133 01:00:14,450 --> 01:00:16,710 Pero quero ter un barra de ferramentas da parte inferior. 1134 01:00:16,710 --> 01:00:18,530 Entón, eu vou comprobar Shows Toolbar. 1135 01:00:18,530 --> 01:00:21,870 >> E iso proporciona dentro do meu punto de vista, que agora está noutro lugar, 1136 01:00:21,870 --> 01:00:23,900 vemos que está conectado por aquí. 1137 01:00:23,900 --> 01:00:28,710 El agora ofrece unha barra de ferramentas na parte inferior da miña UI. 1138 01:00:28,710 --> 01:00:34,770 Entón, agora, en vez de seleccionar un visualización da imaxe, podo atopar unha etiqueta, 1139 01:00:34,770 --> 01:00:41,140 ou mellor, un toolbar-- imos ver, onde é iso? 1140 01:00:41,140 --> 01:00:41,890 Cal é mesmo nome? 1141 01:00:41,890 --> 01:00:49,760 Un elemento button-- bar-- item-- sorry-- bar elemento de botón. 1142 01:00:49,760 --> 01:00:54,590 Plop que alí e aplicar un par espazos de flexibilidade de ambos os dous lados 1143 01:00:54,590 --> 01:00:57,429 para que, en realidade, o centro. 1144 01:00:57,429 --> 01:00:58,970 Entón agora eu creei a miña UI, basicamente. 1145 01:00:58,970 --> 01:01:01,428 E podo darlle un nome por premendo dúas veces na parte superior 1146 01:01:01,428 --> 01:01:04,880 aquí e dicindo galería web e así por diante. 1147 01:01:04,880 --> 01:01:08,100 Agora, de novo, estes son elementos que existen por si só. 1148 01:01:08,100 --> 01:01:10,400 E eu teño que chamar los para o meu código que 1149 01:01:10,400 --> 01:01:14,297 Podo facer por traer de novo -Se esta icona dobre círculo, 1150 01:01:14,297 --> 01:01:15,380 cambiar a partir do previsualización. 1151 01:01:15,380 --> 01:01:18,950 Que, por certo, agora podemos ver é ben centrado e vai estar ben 1152 01:01:18,950 --> 01:01:23,720 sobre unha variedade de dispositivos. 1153 01:01:23,720 --> 01:01:27,280 >> Cambiar a modo automático, que vai abrir o código ViewController. 1154 01:01:27,280 --> 01:01:29,030 E agora esta parte é importante. 1155 01:01:29,030 --> 01:01:34,590 Para que conectar estes dous elementos, o código para a interface de usuario, 1156 01:01:34,590 --> 01:01:36,680 selecciona o elemento que quere conectarse. 1157 01:01:36,680 --> 01:01:39,570 Polo tanto, neste caso, nós Realmente quere codificar 1158 01:01:39,570 --> 01:01:43,520 cambiar a imaxe que está contido dentro desta visión imaxe UI. 1159 01:01:43,520 --> 01:01:47,070 Entón, se controlar click de a visualización da imaxe e arrastra, 1160 01:01:47,070 --> 01:01:51,960 notarás que ten un pouco de bar, cando deixar de ir todo isto pop 1161 01:01:51,960 --> 01:01:53,550 up debería ocorrer. 1162 01:01:53,550 --> 01:01:56,470 >> E el di que imos crear unha conexión. 1163 01:01:56,470 --> 01:01:59,300 E a partir de aquí quero darlle un nome, algo así como galería. 1164 01:01:59,300 --> 01:02:00,240 Prema Intro. 1165 01:02:00,240 --> 01:02:03,040 E iso, en realidade, ofrece Galería variable chamada 1166 01:02:03,040 --> 01:02:08,600 que eu poida facer referencia no meu código para cambiar a imaxe, por exemplo. 1167 01:02:08,600 --> 01:02:10,430 Entón, como é que o código realmente ollar? 1168 01:02:10,430 --> 01:02:13,030 Ben de novo, eu non quero gastar moito tempo con iso. 1169 01:02:13,030 --> 01:02:15,430 E eu encorajo-vos a baixa-lo e dar un ollo. 1170 01:02:15,430 --> 01:02:18,330 Pero un dos máis aspecto importante é o código 1171 01:02:18,330 --> 01:02:20,980 que realmente obtén unha imaxe. 1172 01:02:20,980 --> 01:02:26,470 >> Polo tanto, neste caso quero para obter dentro das miñas fotos 1173 01:02:26,470 --> 01:02:28,520 matriz, que está contido dentro da miña clase. 1174 01:02:28,520 --> 01:02:33,390 Quero definir o nome ea URL que foi analizado fóra deste JSON. 1175 01:02:33,390 --> 01:02:39,810 De feito pedir o dispositivo para obter o URL, para buscar o URL a partir deste, 1176 01:02:39,810 --> 01:02:44,060 e, a continuación, obter os datos a partir de o contido dese URL. 1177 01:02:44,060 --> 01:02:49,430 Logo converter eses datos nunha imaxe pasando a para a imaxe de UI. 1178 01:02:49,430 --> 01:02:52,880 Entón, de novo, estes son todos distintos tipos de obxectos, distintos tipos de clases. 1179 01:02:52,880 --> 01:02:58,410 >> E entón eu podo axustar o meu gallery.image igual a estes datos. 1180 01:02:58,410 --> 01:03:00,750 E ese é o tipo de carne de que, en realidade, é entón 1181 01:03:00,750 --> 01:03:08,250 capaz de cambiar cambiar os datos de-- a imaxe dun a outro. 1182 01:03:08,250 --> 01:03:10,660 Entón, de novo, espero que agora moitas das construcións 1183 01:03:10,660 --> 01:03:12,240 vai facer un pouco máis de sentido. 1184 01:03:12,240 --> 01:03:15,260 Teña en conta que hai algún puntos de exclamación aquí. 1185 01:03:15,260 --> 01:03:19,810 Os puntos de exclamación son esencialmente relacionada cos opcionais. 1186 01:03:19,810 --> 01:03:22,657 >> O que eu estou dicindo é basicamente que mesmo sen consultar 1187 01:03:22,657 --> 01:03:24,490 a ver se non hai datos dentro desta opcional, 1188 01:03:24,490 --> 01:03:27,140 Eu estou indo a ir adiante e asumir que existe e desenvolve-la. 1189 01:03:27,140 --> 01:03:31,340 Lembre que usamos a analoxía de especie de un paquete para os opcionais 1190 01:03:31,340 --> 01:03:34,700 e necesitamos a desembrulhar o embalaxe e tirar os datos para fóra. 1191 01:03:34,700 --> 01:03:37,570 O punto de exclamación forzas que realmente acontece. 1192 01:03:37,570 --> 01:03:39,590 >> Pero sei que iso é seguro porque eu chequei 1193 01:03:39,590 --> 01:03:42,070 a ver se os datos de imaxe é igual a cero, realmente comprobar 1194 01:03:42,070 --> 01:03:45,420 a ver se ese opcional era, en realidade, non. 1195 01:03:45,420 --> 01:03:47,110 Se isto tivese, de feito, xa fallou. 1196 01:03:47,110 --> 01:03:52,450 E entón eu estou seguro que cando chegar a este punto podo desembrulhar con seguridade que os datos. 1197 01:03:52,450 --> 01:03:55,710 Tamén pode velo en a forma dun signo de interrogación. 1198 01:03:55,710 --> 01:03:59,100 Entón, se nós descenda ata onde eu precisa realmente analizar os datos. 1199 01:03:59,100 --> 01:04:01,850 >> Polo tanto, non se deixe levar polo este tipo de nomes longos. 1200 01:04:01,850 --> 01:04:06,580 Podes atopar na mazá creador do sitio web unha morea 1201 01:04:06,580 --> 01:04:09,620 de referencias a todo obxectos e todos os procesos 1202 01:04:09,620 --> 01:04:11,170 que, en realidade, facer isto posible. 1203 01:04:11,170 --> 01:04:15,990 Pero teña en conta que este é esencialmente unha función onde pasar uns datos. 1204 01:04:15,990 --> 01:04:18,410 E eu volver algún tipo de datos. 1205 01:04:18,410 --> 01:04:24,190 E eu teño usar isto como palabra clave para convertelo en este NSDictionary? 1206 01:04:24,190 --> 01:04:26,490 Cal é, de novo, unha NSDictionary opcional. 1207 01:04:26,490 --> 01:04:31,070 Que eu entón precisa comprobar a ver se el existir. 1208 01:04:31,070 --> 01:04:37,130 >> Entón, podo usar que, se deixar equals éxito analizado, 1209 01:04:37,130 --> 01:04:40,620 entón eu sei que ese opcional realmente contén algúns datos. 1210 01:04:40,620 --> 01:04:43,840 Ou o que eu fixen aquí foi a basta asumir que, se hai 1211 01:04:43,840 --> 01:04:49,067 houbo erros que é de feito seguros. 1212 01:04:49,067 --> 01:04:51,400 Todo ben, quero agradecer a todo moi por vir. 1213 01:04:51,400 --> 01:04:53,540 Sei que foi moi, pero foi só unha hora 1214 01:04:53,540 --> 01:04:55,920 para falar sobre algúns cousas moi avanzada. 1215 01:04:55,920 --> 01:04:59,640 E por iso espero que vai ter un oportunidade de baixar todo o código 1216 01:04:59,640 --> 01:05:01,657 e dar unha mellor, máis profundo ollar para el. 1217 01:05:01,657 --> 01:05:04,240 Ordenar convencer-se de todo das cousas que está a suceder. 1218 01:05:04,240 --> 01:05:06,800 E quero agradecer a vostede todo, unha vez máis, por vir. 1219 01:05:06,800 --> 01:05:08,760 E boa sorte con proxectos finais. 1220 01:05:08,760 --> 01:05:10,600 Ten un gran día. 1221 01:05:10,600 --> 01:05:11,467