2 negated raisedTo: 3 + 2
Tipos de mensajes combinados:
- unario: negated.
- binario: +
- keyword:
raisedTo:
2 negated raisedTo: 3 + 2
Tipos de mensajes combinados:
raisedTo:
sessions := 1 to: 11
El tipo de mensaje es keyword porque son aquellos mensajes que consisten en uno o más nombres de argumentos precedidos por dos puntos (:). Su composición parte de:
Un receptor (objeto), el mensaje (método a utilizar) y el argumento que son los valores que se pasan al método para que pueda realizar la tarea. En los mensajes keyword, los argumentos están precedidos por dos puntos (:) y separados por comas (,).
Para este caso:
* El objeto es: sessions
.
* El mensaje es: to
* y el argumento pasado por el método to
es el 11
, Esto indica que la secuencia de números enteros debe ir desde 1 hasta 11 inclusive.
memories do: [:doc | | fileName | fileName := (doc url asString splitOn: $:) last , '.md'. doc file: folder / fileName. doc exportAsFile. ]
Es un mensaje tipo keyword
memories
do
do
es el bloque proporcionado entre corchetes [:doc | .... ]
aquí el iterador es el do
, el cual se utiliza para recorrer cada elemento de la colección o objeto memories
y ejecutar el bloque proporcionado para cada uno de ellos. Resultado devuelto al ejecutar todo el bloque:
memories doWithIndex: [:item :index | item metadata at: 'title' put: 'Unidades semanticas, sesión ', index asString ].
Este mensaje es tipo Keyword y dentro de este el
memories
el cual invoca el método. doWithIndex
: Este es un mensaje de Pharo que se utiliza para iterar sobre una colección y proporciona tanto el elemento actual como su índice en cada iteración.doWithIndex
el cual es un bloque de código que define la acción que se realizará en cada elemento de la colección. En este caso, el bloque es [:item :index | ........ ]
, es decir, todo lo que encierran los corchetes y recibe dos parámetros: item
, que representa cada elemento de la colección, y index
, que representa el índice del elemento en la colección.Dentro del bloque:
* El objeto item
es el elemento actual de la colección memories
.
* El mensaje enviado es metadata
, que es un mensaje enviado al objeto item. Este mensaje obtiene los metadatos asociados con el elemento actual.
* El argumento del mensaje at:put:
es una clave, en este caso 'title'
, y el nuevo valor 'Unidades semanticas, sesión ',
que se asigna a la clave 'title'
en los metadatos del elemento actual.
Al ejecutar todo el código se devuelve el siguiente resultado:
memories := sessions collect: [:session | doc := HedgeDoc new url: commonAddress, session asString; retrieveContents. ]
Este ejemplo en Pharo se refiere a la manipulación de colecciones y al uso de bloques en combinación con mensajes Keyword.
Ahora bien, a continuación se explica las dos partes del ejercicio: En mensaje en keyword es:
1. Objeto es: sessions
2. Mensaje es: collect
<br />
3. Argumento: [:session |
Dentro del bloque el código funciona así:
1. Objeto: para este se crea un nuevo objeto de tipo HedgeDoc
utilizando el mensaje new. Este objeto se asigna a la variable doc
.
2. Ahora el mensajes new envían varios mensajes al objeto doc
: tales como:
* url
: Configura la URL del objeto doc
. Toma como argumento la concatenación de commonAddress
(una dirección común) y la representación de cadena de session
.
* Ahora utiliza retrieveContents
: el cual es un mensaje que permite recuperar el contenido de la URL configurada en el objeto doc
.
En general, el código utiliza el iterador collect
: el cual controla la iteración sobre la colección sessions y aplica el bloque definido [:session |
a cada elemento de la colección.
Al ejecutar todo este código se obtiene el siguiente resultado:
sessions := 1 to: 11
El tipo de mensaje es keyword porque son aquellos mensajes que consisten en uno o más nombres de argumentos precedidos por dos puntos (:). Su composición parte de:
Un receptor (objeto), el mensaje (método a utilizar) y el argumento que son los valores que se pasan al método para que pueda realizar la tarea. En los mensajes keyword, los argumentos están precedidos por dos puntos (:) y separados por comas (,).
Para este caso:
* El objeto es sessions
.
* El mensaje es to
* y el argumento pasado por el método to
es el 11
, Esto indica que la secuencia de números enteros debe ir desde 1 hasta 11 inclusive.
sessions := 1 to: 11
El tipo de mensaje es keyword porque son aquellos mensajes que consisten en uno o más nombres de argumentos precedidos por dos puntos (:). Su composición parte de:
Un receptor (objeto), el mensaje (método a utilizar) y el argumento que son los valores que se pasan al método para que pueda realizar la tarea. En los mensajes keyword, los argumentos están precedidos por dos puntos (:) y separados por comas (,).
Para este caso:
* El objeto es sessions
.
* El mensaje es to
* y el argumento pasado por el método to
es el 11
, Esto indica que la secuencia de números enteros debe ir desde 1 hasta 11 inclusive.
(daysIndexes collect: [:letter | (Shortener enlarge: commonAddress, letter asString) ])
Mensaje keyword
* receptor: daysIndexes
* mensaje: collect:
* argumento: [:letter |
(Shortener enlarge: commonAddress, letter asString)]
HedgeDoc new url: address;
Mensaje keyword
* receptor: hedgeDoc
* mensaje: url:
* argumento: address;
dataWeekDailyNoteAddresses collectWithIndex: [:address :i | | hedgeDoc | hedgeDoc := HedgeDoc new url: address; retrieveContents. hedgeDoc metadata at: 'title' put: ('acceso23 : sesión ', i asString). hedgeDoc ]
Mensaje keyword
* receptor: dataWeekDailyNoteAddresses
* mensaje: CollectWithIndex:
* argumento: [:address :i | | hedgeDoc |
hedgeDoc := HedgeDoc new
url: address;
retrieveContents.
hedgeDoc metadata
at: 'title' put: ('acceso23 : sesión ', i asString).
hedgeDoc]
hedgeDoc metadata at: 'title' put: ('Sesión del 17 de marzo').
Mensaje unario:
hedgeDoc
metadada
Mensaje Keword:
hedgeDoc metadata
at: put:
'title'
'Sesión del 17 de marzo'
hedgeDoc := HedgeDoc new url: 'https://docutopia.sustrato.red/accesibilidad:23K?both# '; retrieveContents.
Mensaje unario:
hegeDoc
retrieveContents
Mensaje Keyword:
hegeDoc
url:
https://docutopia.sustrato.red/accesibilidad:23K?both#
repositoryFolder := FileLocator documents / 'Acceso\kathy29-wikilexias\'. wikiFolder := repositoryFolder / 'wiki'. wikiSubfolder := wikiFolder / 'es' / 'RecuperacionClasesAccesibilidad'. wikiSubfolder ensureCreateDirectory
Mensajes keyword:
Mensajes Binarios:
wikiFolder := repositoryFolder / 'wiki',
Mensajes keyword:
wikiSubfolder := wikiFolder / 'es' / 'RecuperacionClasesAccesibilidad',
hedgeDoc file: wikiSubfolder / ('Accesibilidad-K','.md'). hedgeDoc exportAsFile. hedgeDoc asMarkdeep exportAsFile. wikiSubfolder
Mensajes Binarios:
Mensaje Keyword:
hedgeDocs doWithIndex: [:hedgeDoc :i | hedgeDoc file: wikiSubfolder / ('semanti', i asString, '.md').
Character alphabet copyFrom: 1 to: 23
Shortener enlarge: commonAddress, letter asString
Shorterner
enlarge:
commonAddress, letter asString
hedgeDocs doWithIndex: [:hedgeDoc :i | hedgeDoc file: wikiSubfolder / ('acceso23-', i asString, '.md'). hedgeDoc exportAsFile. hedgeDoc asMarkdeep exportAsFile. ].
Mensaje en cascada
Receptor: hedgeDocs doWithIndex:
Argumento: [:hedgeDoc :i | hedgeDoc file: wikiSubfolder / ('acceso23-', i asString, '.md'). hedgeDoc exportAsFile. hedgeDoc asMarkdeep exportAsFile. ].
Mensaje: exportAsFile.
wikiSubfolder := wikiFolder / 'es' / 'Acceso2023'.
Mensaje keyword
Receptor: wikiSubfolder :=
Mensaje: wikiFolder
Argumento: 'es' / 'Acceso2023'.
wikiFolder := repositoryFolder / 'wiki'.
Mensaje keyword
Receptor: wikiFolder :=
Mensaje: repositoryFolder
Argumento: 'wiki'.
repositoryFolder := FileLocator documents / 'RepositorioKath/home/'.
Mensaje keyword
Receptor: repositoryFolder :=
Mensaje: FileLocator documents
Argumento: 'RepositorioKath/home/'.
dataWeekDailyNoteAddresses := (daysIndexes collect: [:letter | (Shortener enlarge: commonAddress, letter asString) ]) select: [:each | each beginsWith: 'https' ]
Mensaje en cascada y keyword.
Receptor: dataWeekDailyNoteAddresses :=
Mensaje: (daysIndexes collect: y (Shortener enlarge: commonAddress, letter asString)
Argumento: [:each | each beginsWith: 'https' ]
hedgeDocs := dataWeekDailyNoteAddresses collectWithIndex: [:address :i | | hedgeDoc | hedgeDoc := HedgeDoc new url: address; retrieveContents. hedgeDoc metadata at: 'title' put: ('Acceso 23: día ', i asString). hedgeDoc ]
Mensaje en cascada y keyword.
Receptor: hedgeDocs :=
Argumento: at: 'title' put: ('Acceso 23: día ', i asString).
Mensaje: collectWithIndex: y retrieveContents.
daysIndexes := (Character alphabet copyFrom: 1 to: 12) asUppercase asOrderedCollection. commonAddress := 'https://is.gd/acceso23'.
Mensaje keyword
Receptor: daysIndexes :=
Argumento: (Character alphabet copyFrom: 1 to: 12)y commonAddress := 'https://is.gd/acceso23'.
Mensaje: asUppercase asOrderedCollection.
Mensaje binario
Receptor: commonAddress :=
Argumento: 'https://is.gd/acceso23'.