Java & Closures

7 09 2006

E para os críticos ferrenhos da verbosidade do Java, mais um recurso está surgindo de forma muita aclamada no Java: “closures” também conhecido como expressão “lambda”

Recurso extremamente utilizado e glamorizado no SmallTalk, presente no Python, Lisp, Boo, sendo muito difundido no C++ via a implementação do BOOST – e divulgada aos quatro ventos pelos programadores Ruby que o tem de forma natural. O Java está na lanterninha em sua implementação sendo que ele ainda nem é um JSR, sendo por enquanto apenas uma proposta de alguns dos colaboradores mais descolados do Java.

Closure” é uma função anônima que referencia variáveis livres no contexto léxico; ela consiste do código da função e referências para quaisquer variáveis no escopo da função exterior. Ela deve ser capaz de retornar diretamente do método incluindo a definição de encerramento (aka non-local return).

Num exemplo irônico ele pode ser “ilustrado” da seguinte forma:
Bye, bye:

public interface Runnable {
void run();
}
public interface API {
void doRun(Runnable runnable);
}
public class Client {
void doit(API api) {
api.doRun(new Runnable(){
public void run() {
snippetOfCode();
}
});
}
}

Welcome:

public class Client {
void doit(API api) {
api.doRun(runnable(() {snippetOfCode(); }));
}
}

Fonte do Exemplo: Nearl Gafter´s Blog


A proposta foi escrita por Gilad Bracha, Neal Gafter, James Gosling e Peter von der Ahé.

Fonte da notícia: Blog do Peter Ahé´s Weblog


Ações

Information

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: