Articles of lambda

LambdaConversionException com genéricos: bug da JVM?

Eu tenho algum código com uma referência de método que compila bem e falha em tempo de execução. A exceção é assim: Caused by: java.lang.invoke.LambdaConversionException: Invalid receiver type class redacted.BasicEntity; not a subtype of implementation type interface redacted.HasImagesEntity at java.lang.invoke.AbstractValidatingLambdaMetafactory.validateMetafactoryArgs(AbstractValidatingLambdaMetafactory.java:233) at java.lang.invoke.LambdaMetafactory.metafactory(LambdaMetafactory.java:303) at java.lang.invoke.CallSite.makeSite(CallSite.java:289) A turma é assim: class ImageController { void doTheThing(E entity) { […]

Java 8 Lambda Expressions – o que acontece com vários methods na class aninhada

Estou lendo sobre os novos resources em: http://www.javaworld.com/article/2078836/java-se/love-and-hate-for-java-8.html Eu vi o exemplo abaixo: Usando a class anônima: button.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent ae) { System.out.println(“Action Detected”); } }); Com Lambda: button.addActionListener(e -> { System.out.println(“Action Detected”); }); O que alguém faria com um MouseListener se quisesse implementar vários methods dentro da class anônima, por exemplo: […]

Muito confuso com o Java 8 Inferência do tipo Comparador

Eu estive olhando para a diferença entre Collections.sort e list.sort , especificamente em relação ao uso dos methods estáticos Comparator e se os tipos de parâmetros são necessários nas expressões lambda. Antes de começarmos, eu sei que eu poderia usar referências a methods, por exemplo, Song::getTitle para superar meus problemas, mas minha consulta aqui não […]

O Visual Studio depurando a ferramenta “relógio rápido” e as expressões lambda

Por que não posso usar expressões lambda durante a debugging na janela “Quick watch”? UPD: veja também http://blogs.msdn.com/b/jaredpar/archive/2009/08/26/why-no-linq-in-debugger-windows.aspx http://blogs.msdn.com/b/jaredpar/archive/2010/06/02/why-is-linq-absent-from-debugger-windows-part-2.aspx

O mais simples e mais limpo c + + 11 ScopeGuard

Eu estou tentando escrever um ScopeGuard simples baseado em conceitos Alexandrescu, mas com idiomas c ++ 11. namespace RAII { template class ScopeGuard { mutable bool committed; Lambda rollbackLambda; public: ScopeGuard( const Lambda& _l) : committed(false) , rollbackLambda(_l) {} template ScopeGuard( const AdquireLambda& _al , const Lambda& _l) : committed(false) , rollbackLambda(_l) { _al(); } […]

Lambdas: variables ​​locais precisam de final, variables ​​de instância não

Em um lambda, as variables ​​locais precisam ser finais, mas as variables ​​de instância não. Por quê?

Por que o lambdas pode ser melhor otimizado pelo compilador do que funções simples?

Em seu livro The C++ Standard Library (Second Edition) Nicolai Josuttis afirma que lambdas podem ser melhor otimizados pelo compilador do que funções simples. Além disso, os compiladores de C ++ otimizam os lambdas melhor do que as funções comuns. (Página 213) Por que é que? Eu pensei que quando se trata de inlining não […]

Quebrar ou retornar do stream de Java 8 para cada?

Ao usar a iteração externa sobre um Iterable , usamos break ou return do loop for-each aprimorado como: for (SomeObject obj : someObjects) { if (some_condition_met) { break; // or return obj } } Como podemos break ou return usando a iteração interna em uma expressão lambda do Java 8 como: someObjects.forEach(obj -> { //what […]

Combinando duas expressões lambda em c #

Dada uma estrutura de classs como esta: public class GrandParent { public Parent Parent { get; set;} } public class Parent { public Child Child { get; set;} } public class Child { public string Name { get; set;} } e a seguinte assinatura de método: Expression<Func> Combine (Expression<Func>> first, Expression<Func> second); Como posso implementar […]

Como capturar um unique_ptr em uma expressão lambda?

Eu tentei o seguinte: std::function getAction(std::unique_ptr &&psomething){ //The caller given ownership of psomething return [psomething](){ psomething->do_some_thing(); //psomething is expected to be released after this point }; } Mas não compila. Alguma ideia? ATUALIZAR: Como sugerido, alguma nova syntax é necessária para especificar explicitamente que precisamos transferir a propriedade para o lambda, agora estou pensando sobre […]