jueves, 28 de febrero de 2008

Squeak tips #1

Hoy encontré un mensaje de control de bloques extremadamente útil: el mensaje #ensure:
¿Que hace? Bueno, para los usuarios de Java se puede explicar fácilmente: hace lo mismo que un finally, asegura que el contenido del bloque "asegurado" se ejecute no importa cual sea el resultado de la ejecución del bloque original. 
Al igual que la estructura de control en java, este mensaje tiene pocas ocasiones donde es verdaderamente útil, pero en esas ocasiones es realmente útil. 
Un ejemplo que se me ocurre (de hecho el problema que estaba resolviendo y que me llevó a "descubrir" el mensaje) es el manejo de FileStreams: tengo que asegurar que el archivo quede cerrado, no importa qué ocurra. Bien, en squeak queda así: 

[ ^stream contents ] ensure: [ stream close ]

Lindo, ¿no?

No hay comentarios: