Finalmente o expert group do Lambda-dev decidiu a sintaxe. Seguem alguns exemplos:
x => x + 1
(x) => x + 1
(int x) => x + 1
(int x, int y) => x + y
(x, y) => x + y
(x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }
() => { System.out.println(“I am a Runnable”); }
[quote=Paulo Silveira]Finalmente o expert group do Lambda-dev decidiu a sintaxe. Seguem alguns exemplos:
x => x + 1
(x) => x + 1
(int x) => x + 1
(int x, int y) => x + y
(x, y) => x + y
(x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }
() => { System.out.println(“I am a Runnable”); }
[quote=dreampeppers99][quote=Paulo Silveira]Finalmente o expert group do Lambda-dev decidiu a sintaxe. Seguem alguns exemplos:
x => x + 1
(x) => x + 1
(int x) => x + 1
(int x, int y) => x + y
(x, y) => x + y
(x, y) => { System.out.printf("%d + %d = %d%n", x, y, x+y); }
() => { System.out.println(“I am a Runnable”); }
Alguém sabe se esse recurso (lambda-dev | closure) tem acesso ao contexto externo ao qual ela foi chamada? (Por definição e na teoria sim)[/quote]
Acho que deve ser sim, afinal é só uma forma nova de trabalhar com funções em Java.
Falam tanto de closures, mas na prática isso vai ajudar o desenvolvedor em 0,1% das situações pra economizar 2 ou 3 linhas de código.
A maior vantagem da Oracle implementar é não ter de ficar ouvindo mais “C# é superior porque tem closures”, “Java não presta porque não tem nem closures”.
[quote=marcosalex]Falam tanto de closures, mas na prática isso vai ajudar o desenvolvedor em 0,1% das situações pra economizar 2 ou 3 linhas de código.
A maior vantagem da Oracle implementar é não ter de ficar ouvindo mais “C# é superior porque tem closures”, “Java não presta porque não tem nem closures”.[/quote]
Talvez isto é uma visão simplista da coisa.
Vejo o uso de closures e, principalmente, first class functions como um recurso muito poderoso mesmo para situações normais.
Como ainda não existe em Java, a gente não sente falta… mas a partir do momento que está lá, a gente começa a achar utilidades.
É meio que a questão do Blub do Paul Graham
Por experiência, posso dizer que desde que descobri que javascript tinha esses recursos (costumava usar só pra validar campos), consegui resolver problemas de formas muito mais simples do que antes.
[quote=marcosalex]Falam tanto de closures, mas na prática isso vai ajudar o desenvolvedor em 0,1% das situações pra economizar 2 ou 3 linhas de código.
A maior vantagem da Oracle implementar é não ter de ficar ouvindo mais “C# é superior porque tem closures”, “Java não presta porque não tem nem closures”.[/quote]
Isso não é totalmente verdade, só o fato deu implementar o pattern Strategy sem Anonymous Inner Classes (sem falar, que pode haver situações onde ele torna-se desnecessário) para resolver problemas que os closures resolvem facilmente (vide Ruby) já é algo excelente.
Eu dou manutenção para um sistema G.I.G.A.N.T.E., então, se tomar apenas a sua afirmação de 2 ou 3 linhas de código, ainda sim, há vantagem no uso de clousures.
[quote=marcosalex]Falam tanto de closures, mas na prática isso vai ajudar o desenvolvedor em 0,1% das situações pra economizar 2 ou 3 linhas de código.
A maior vantagem da Oracle implementar é não ter de ficar ouvindo mais “C# é superior porque tem closures”, “Java não presta porque não tem nem closures”.[/quote]
Agora vc vai ouvir:
“Java soh copia C#” ahahah
De qualquer forma, otima noticia. Tava mais do que na hora!