Hola a todos.
En este curso, Aprenderemos sobre el método usted yourself.
Es aparentemente inútil, y, sin embargo, es muy útil.
Comencemos con un ejercicio.
Para esta expresión, Set new add:2,
nos gustaría obtener un conjunto que contiene el valor 2
para que regrese solo el valor 2.
¿Por qué obtiene el valor 2 en lugar de un conjunto que contiene 2?
Si mira el método add: implementado en la clase Set,
puede ver que devuelve su parámetro.
En la expresión Set new add: 2,
la expresión Set devuelve la clase Set.
Cuando envía new a la clase Set, devuelve un nuevo conjunto.
Set new add: 2
devuelve el valor devuelto por add:2, que es 2
El conjunto se pierde.
Para resolver este problema,
puede escribir las expresiones paso a paso.
Puede crear una variable temporal: usted declara la variable s.
Asigne el nuevo conjunto a s.
Agregue 2 a s.
s ahora contiene Un conjunto que contiene el valor 2.
Es lo que queríamos.
Puede simplificar estas expresiones
usando el método yourself.
Si mira más de cerca,
verá que contiene solo una cosa: return self.
return self, siendo opcional, este método también podría estar vacío
y no hacer nada excepto devolver su receptor.
Este método aparentemente solo devuelve su receptor.
Y sin embargo, es útil en tales casos.
gracias al operador de cascada.
Después de agregar 2,
vamos a ejecutar el método yourself
que devolverá el receptor
para que la expresión completa pueda ser el receptor,
que es el nuevo conjunto.
Si tomo Set new,
que es el nuevo conjunto,
y escribo add:2 aplicado a Set new,
devuelve 2
Pero gracias al operador de cascada seguido de yourself,
la expresion en su conjunto devuelve el nuevo conjunto.
¿Por qué la cascada regresa sistemáticamente
el valor que su última expresión regresa?
La cascada, en este caso,
devuelve el valor que yourself devuelve.
A menudo usamos yourself y la cascada
en los métodos de creación de instancias.
Estos son métodos de clase
de mensajes que se enviarán a clases
que devuelve nuevas instancias.
Para crear un nuevo conjunto
que contiene un objeto de forma predeterminada,
puedo enviar el mensaje with:anObject a Set.
Este código se ejecuta para crear un nuevo conjunto,
para ponerlo en la variable de instancia,
para agregar a instancia el nuevo parámetro,
y para devolver la instancia.
Puedo escribir esta expresión como un todo usando yourself
de una forma más breve y más idiomática.
Este código se encuentra generalmente en Pharo.
Es importante dominar el punto y coma,
la cascada y yourself.
Lo que debes recordar al final de este curso
Es que algunos métodos, aunque son muy simples,
Puede ser muy potente y se usan mucho.
La cascada, el punto y coma, y el método yourself
se usan muy a menudo juntos
para asegurarse de que una expresión completa
devuelve el valor esperado