1 00:00:00,560 --> 00:00:01,760 Hola a todos. 2 00:00:01,920 --> 00:00:05,280 En este curso, Aprenderemos sobre el método usted yourself. 3 00:00:06,040 --> 00:00:10,520 Es aparentemente inútil, y, sin embargo, es muy útil. 4 00:00:10,680 --> 00:00:12,280 Comencemos con un ejercicio. 5 00:00:12,440 --> 00:00:16,480 Para esta expresión, Set new add:2, 6 00:00:18,320 --> 00:00:23,680 nos gustaría obtener un conjunto que contiene el valor 2 7 00:00:23,840 --> 00:00:27,200 para que regrese solo el valor 2. 8 00:00:27,360 --> 00:00:31,240 ¿Por qué obtiene el valor 2 en lugar de un conjunto que contiene 2? 9 00:00:31,400 --> 00:00:34,880 Si mira el método add: implementado en la clase Set, 10 00:00:35,040 --> 00:00:37,800 puede ver que devuelve su parámetro. 11 00:00:42,320 --> 00:00:44,520 En la expresión Set new add: 2, 12 00:00:46,160 --> 00:00:48,880 la expresión Set devuelve la clase Set. 13 00:00:50,480 --> 00:00:54,960 Cuando envía new a la clase Set, devuelve un nuevo conjunto. 14 00:00:55,960 --> 00:00:57,520 Set new add: 2 15 00:00:57,680 --> 00:01:01,000 devuelve el valor devuelto por add:2, que es 2 16 00:01:01,160 --> 00:01:02,720 El conjunto se pierde. 17 00:01:02,880 --> 00:01:05,280 Para resolver este problema, 18 00:01:05,440 --> 00:01:09,000 puede escribir las expresiones paso a paso. 19 00:01:09,840 --> 00:01:14,280 Puede crear una variable temporal: usted declara la variable s. 20 00:01:15,320 --> 00:01:18,920 Asigne el nuevo conjunto a s. 21 00:01:19,720 --> 00:01:21,800 Agregue 2 a s. 22 00:01:22,920 --> 00:01:28,480 s ahora contiene Un conjunto que contiene el valor 2. 23 00:01:28,640 --> 00:01:31,240 Es lo que queríamos. 24 00:01:31,400 --> 00:01:33,920 Puede simplificar estas expresiones 25 00:01:34,080 --> 00:01:36,440 usando el método yourself. 26 00:01:36,600 --> 00:01:38,200 Si mira más de cerca, 27 00:01:38,360 --> 00:01:42,960 verá que contiene solo una cosa: return self. 28 00:01:43,120 --> 00:01:47,160 return self, siendo opcional, este método también podría estar vacío 29 00:01:47,320 --> 00:01:49,960 y no hacer nada excepto devolver su receptor. 30 00:01:50,920 --> 00:01:55,280 Este método aparentemente solo devuelve su receptor. 31 00:01:56,040 --> 00:01:59,680 Y sin embargo, es útil en tales casos. 32 00:02:00,800 --> 00:02:03,400 gracias al operador de cascada. 33 00:02:03,560 --> 00:02:05,360 Después de agregar 2, 34 00:02:05,520 --> 00:02:08,960 vamos a ejecutar el método yourself 35 00:02:09,120 --> 00:02:11,040 que devolverá el receptor 36 00:02:11,200 --> 00:02:14,360 para que la expresión completa pueda ser el receptor, 37 00:02:14,520 --> 00:02:17,560 que es el nuevo conjunto. 38 00:02:18,480 --> 00:02:22,520 Si tomo Set new, 39 00:02:22,680 --> 00:02:24,000 que es el nuevo conjunto, 40 00:02:24,760 --> 00:02:28,600 y escribo add:2 aplicado a Set new, 41 00:02:28,760 --> 00:02:30,320 devuelve 2 42 00:02:30,480 --> 00:02:34,280 Pero gracias al operador de cascada seguido de yourself, 43 00:02:34,440 --> 00:02:39,240 la expresion en su conjunto devuelve el nuevo conjunto. 44 00:02:40,360 --> 00:02:43,240 ¿Por qué la cascada regresa sistemáticamente 45 00:02:43,400 --> 00:02:45,760 el valor que su última expresión regresa? 46 00:02:46,600 --> 00:02:48,800 La cascada, en este caso, 47 00:02:48,960 --> 00:02:52,840 devuelve el valor que yourself devuelve. 48 00:02:53,000 --> 00:02:56,960 A menudo usamos yourself y la cascada 49 00:02:57,120 --> 00:03:00,120 en los métodos de creación de instancias. 50 00:03:00,280 --> 00:03:04,840 Estos son métodos de clase 51 00:03:05,000 --> 00:03:07,280 de mensajes que se enviarán a clases 52 00:03:07,440 --> 00:03:09,240 que devuelve nuevas instancias. 53 00:03:10,040 --> 00:03:12,360 Para crear un nuevo conjunto 54 00:03:12,520 --> 00:03:16,440 que contiene un objeto de forma predeterminada, 55 00:03:16,600 --> 00:03:21,680 puedo enviar el mensaje with:anObject a Set. 56 00:03:21,840 --> 00:03:25,520 Este código se ejecuta para crear un nuevo conjunto, 57 00:03:25,680 --> 00:03:27,920 para ponerlo en la variable de instancia, 58 00:03:28,680 --> 00:03:31,600 para agregar a instancia el nuevo parámetro, 59 00:03:31,760 --> 00:03:34,080 y para devolver la instancia. 60 00:03:34,240 --> 00:03:38,080 Puedo escribir esta expresión como un todo usando yourself 61 00:03:38,240 --> 00:03:42,080 de una forma más breve y más idiomática. 62 00:03:42,240 --> 00:03:45,920 Este código se encuentra generalmente en Pharo. 63 00:03:46,080 --> 00:03:50,000 Es importante dominar el punto y coma, 64 00:03:50,160 --> 00:03:52,400 la cascada y yourself. 65 00:03:53,080 --> 00:03:56,920 Lo que debes recordar al final de este curso 66 00:03:57,080 --> 00:04:00,480 Es que algunos métodos, aunque son muy simples, 67 00:04:00,640 --> 00:04:03,240 Puede ser muy potente y se usan mucho. 68 00:04:05,200 --> 00:04:09,440 La cascada, el punto y coma, y el método yourself 69 00:04:09,600 --> 00:04:11,880 se usan muy a menudo juntos 70 00:04:12,040 --> 00:04:15,240 para asegurarse de que una expresión completa 71 00:04:15,400 --> 00:04:17,960 devuelve el valor esperado