Agendado para ser lançado em 2013, Java 8 incluirá suporte a idiomas para funções lambda. Embora a especificação ainda está em fluxo, lambdas já estão implementados no JDK 8 binários.
Duran-san. não estou vendo lambdas (que exigem o novo operador “->” ) no exemplo que você deu. Acho que você queria dizer:
// Código em Java 1.2 e posteriorbutton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ui.dazzle(e.getModifiers());}});// Código equivalente em Java 8 (Lambdas) button.addActionListener(e->ui.dazzle(e.getModifiers()));
Esse operador “->” é chamado de operador seta ?
O que ele faz ?
J
Jonas_backer
entanglement:
Duran-san. não estou vendo lambdas (que exigem o novo operador “->” ) no exemplo que você deu. Acho que você queria dizer:
// Código em Java 1.2 e posteriorbutton.addActionListener(newActionListener(){publicvoidactionPerformed(ActionEvente){ui.dazzle(e.getModifiers());}});// Código equivalente em Java 8 (Lambdas) button.addActionListener(e->ui.dazzle(e.getModifiers()));
“Boa observação, a gramatica muda como uma expressão matemática que foi aprimorada”
E
entanglement
Lucas_Soares:
Esse operador “->” é chamado de operador seta ?
O que ele faz ?
Não importa muito o nome do operador (devem dar um nome oficial para ele mais tarde - nesse documento ele é realmente chamado de “arrow”, mas acredito que eles acabem chamando de “lambda” ou outra coisa mais cerimoniosa).
O que ele faz é o seguinte: define um método que pode ser chamado sem você ter de criar uma classe anônima e outras coisas burocráticas (semelhante a um “anonymous delegate” do C# ou um “lambda” do C++11). Na verdade, ele até aceita algumas coisas mais complexas. Por exemplo, você não precisaria definir certas variáveis locais do método que incorpora esse código como “final” (o que é o caso em classes anônimas).
Como provar Lambda ? button.addActionListener ( e -> ui.dazzle (e.getModifiers()) );
F
FernandoFranzini
Ta ficando lindo…é só esperar o lançamento para começar a usar
F
fredferrao
Scala feelings :shock:
em scala se usa muito o =>
J
Jonas_backer
publicinterfaceNCopies{public<TextendsCloneable>List<T>getCopies(Tseed,intnum);}//This code will give a compilation error,//As the lambda is meaningless without a context(<TextendsCloneable>(seed,num)->{List<T>list=newArrayList<>();for(inti=0;i<num;i++)list.add(seed.clone());returnlist;}).getCopies(newCloneableClass(),5);However,thefollowingwouldbeperfectlyalright,becausethereisanassignmentcontextforthelambda.NCopiesnCopies=<TextendsCloneable>(seed,num)->{List<T>list=newArrayList<>();for(inti=0;i<num;i++)list.add(seed.clone());returnlist;};nCopies.getCopies(newCloneableClass(),5);
E
entanglement
Duran-san (se quiser seu nome em japonês, ele fica “ムルシオ・ヅラン”), poderia explicar o que você está citando do blog?
Pelo que imagino, ele está explicando que uma expressão lambda não existe sozinha mas depende de ser atribuída a uma variável ou então passada como parâmetro para algum método. É isso mesmo?