Noticias Weblogs Foros Wiki Código
Sponsors:

Meta-Info

¿Que es?

Planeta Código es un agregador de weblogs sobre programación y desarrollo en castellano. Si eres lector te permite seguirlos de modo cómodo en esta misma página o mediante el fichero de subscripción.

rss subscripción

Sponsors

PlanetaCódigo en inglés

Puedes utilizar las siguientes imagenes para enlazar PlanetaCodigo:
planetacodigo

planetacodigo

Si tienes un weblog de programación y quieres ser añadido aquí, envíame un email solicitándolo.

Idea: Juanjo Navarro

Diseño: Albin

La magia del Smalltalk: Capítulo 9 - Colecciones

Agosto 16th, 2005 - [Enlace local]

Pocas cosas tienen un impacto tan grande en la productividad en el desarrollo de software como el manejo de colecciones. Cualquier lenguaje/ambiente de programación que se precie de serio incluye algún framework para el manejo de colecciones.

La combinación de los bloques como objeto de pleno derecho por un lado, el late binding extremo que predica el Smalltalk y el hecho de tener más de 30 años de maduración hacen de las colecciones de Smalltalk uno de los frameworks más poderosos en esta área.

Para empezar veamos el mensaje básico para las colecciones: do:. El mensaje do: le pide a una determinada colección que evalúe un bloque dado por cada elemento que contiene.

‘Un string es, obviamente, una colección’
    do: [:each | Transcript show: each; cr]
#(1 2 3 4 5 6 7 8 9 10)
    do: [:each | Transcript show: each; cr]

Veamos algunos mensajes más:

#do:separatedBy:
Evalúa un bloque dado por cada elemento, y evalúa el otro bloque dado entre elementos.

#(1 2 3 4 5 6 7 8 9 10)
    do: [:each | Transcript show: each]
    separatedBy: [Transcript show: ‘,’]

#select:
Devuelve una colección, del mismo tipo que la colección receptora del mensaje, con los elementos para los que el bloque dado devuelve true.

#(1 2 3 4 5 6 7 8 9 10) select: [:each | each odd]
respuesta: #(1 3 5 7 9)

#reject:
Similar a #select:, pero devuelve una colección con los elementos donde el bloque devuelve false.

#(1 2 3 4 5 6 7 8 9 10) reject: [:each | each odd]
respuesta: #(2 4 6 8 10)

#collect:
Devuelve una colección, del mismo tipo que la colección receptora del mensaje, con elementos que son el resultado de la evaluación del bloque por cada elemento del receptor.

#(1 2 3 4 5 6 7 8 9 10) collect: [:each | each * 2]
respuesta: #(2 4 6 8 10 12 14 16 18 20)

¡A coleccionar!

» Leer más, comentarios, etc...