Aqui há tempos, a trabalhar em Javascript (ECMAScript para os mais puristas) acabei por "descobrir" essa técnica engraçadíssima que são os "closures". Usei-os num "test-case" de algumas técnicas de Javascript num inacabado XML Tree Editor (se se derem ao trabalho de ir ver, são os pequenos ícones de gravar/abandonar que aparecem quando se edita um nó da árvore) e que em termos de código são apenas uma coisa do género
o que a mim me parece quase magia, pois só com isto o raio dos ícones sabem onde estão, quem são e o que fazer... (a "magia" está, é claro, no "name" e "pos" que são definidos no método exterior).
Realmente, já há muitos anos que eu fazia coisas do género, sem saber que se chamava a isto "closures", em linguagens como dBase/Clipper e LotusScript. Mas que provavelmente eram "side-efects" e não "features"...
E agora parece que já está mais ou menos definido que as "closures" vão também "aparecer" no Java 7. O que abre concerteza mais um campo de batalha propícia a "flame-wars"... É que como não há fome que não dê em fartura, existem não uma, nem duas nem sequer três mas (para já) quatro propostas de implementação. Bom começo!
E está claro que ainda antes de discutir os méritos e a bondade de cada proposta, podia-se ainda discutir coisas como:
E pronto, como podem ver aqui, aqui e acolá, a discussão tem pano para mangas...
var editOk = new function(){
var i=document.createElement('img');
i.src="images/save.gif";
i.style.verticalAlign="top";
i.onclick=function(){
saveThis(this.previousSibling, name, pos);
}
return i;
}
o que a mim me parece quase magia, pois só com isto o raio dos ícones sabem onde estão, quem são e o que fazer... (a "magia" está, é claro, no "name" e "pos" que são definidos no método exterior).
Realmente, já há muitos anos que eu fazia coisas do género, sem saber que se chamava a isto "closures", em linguagens como dBase/Clipper e LotusScript. Mas que provavelmente eram "side-efects" e não "features"...
E agora parece que já está mais ou menos definido que as "closures" vão também "aparecer" no Java 7. O que abre concerteza mais um campo de batalha propícia a "flame-wars"... É que como não há fome que não dê em fartura, existem não uma, nem duas nem sequer três mas (para já) quatro propostas de implementação. Bom começo!
E está claro que ainda antes de discutir os méritos e a bondade de cada proposta, podia-se ainda discutir coisas como:
- Mas será que as closures são realmente necessárias?
- Mas será que as closures são realmente necessárias no Java?
- Mas afinal as "anonymous inner-classes" não são a mesma coisa?
- Tá bem, não são, mas não bastam para o que é preciso?
- Mas será que as closures são realmente necessárias?
- Mas será que as closures são realmente necessárias no Java?
E pronto, como podem ver aqui, aqui e acolá, a discussão tem pano para mangas...
Comentários
Enviar um comentário