2 negated raisedTo: 3 + 2
Tipos de mensajes combinados:
- unario: negated.
- binario: +
- keyword:
raisedTo:
2 negated raisedTo: 3 + 2
Tipos de mensajes combinados:
raisedTo:
2 raisedTo: 5 binary
Démonos cuenta que la cantidad de elementos en los argumento no determina el tipo de mensaje. Sino las reglas vistas previamente. Por ejemplo:
3 between: 1 and: 6
Se puede analizar así:
between: and:
2
, 6
.#(a b c d e f) includesAll: #(f d b) receiver: abcdef selector: cinludesall arguments: fdb result: true
#(a b c d e f)
#(f d b)
#(2 33-4 67) collect: [ :each | each abs ]
#(2 33-4 67)
collect:
[ :each | each abs ]
Este es un caso de la combinación de tres cosas: las colecciones, los bloques y los iteraradores.
each
es el iterador, que toma la forma de las llamadas variables mudas, pues puedo colocar su nombre de manera arbitraria (se define en la parte a la izquiera de la barra del bloque [ :each
y a la derecha, lo que quiero hacer con dicha variable, una vez vaya tomando los valores de cada elemento en el arreglo, que, para este ejercicio, es sacar el valor absoluto (each abs ]
).
Podría haberle llamado number
o de otra forma. Lo clave es que el nombres :each
sea el mismo usado antes y después de la barra del bloque, que separa la definición de variables, de lo que hago con ellas.
#('' 'World') at: 1 put: 'Hello'
#( '' 'World')
at: put:
1
, Hello
El error a continuación se presenta por que el arreglo es estático (es decir que no se puede cambiar, después de que se crea). El ejemplo debería hacerse con un arreglo dinámico, definido así:
smalltalk
{'' . 'World'}
at: 1 put: 'Hello';
yourself
Con lo cual en la posición 1 estoy colocando palabra Hello
en lugar de la que había originalmente.
Nótese que el yourself
se agrega al final como un mensaje en cascada , es decir se lo seguimos enviando al mismo receptor, con la intensión de que se muestre a sí mismo (yourself) para que veamos cómo queda una vez hemos aplicado los cambios.
World
El selector es at: put:
#('' 'World') at: 1 put: 'Hello'
Mensaje de tipo keyword, porque podemos distinguir las palabras en todos los mensajes de tipo keyword, porque están sucedidas de los :
. En este caso en particular el selector es:
at: put:
4 between: 0 and: 10.
4
between: and:
0, 10