Publicado em: 07/Jul/2019
Atualizado em: 22/Jun/2020
#C++ #cpp #lambda

C++ Lambda

Funções de primeira classe

Em programação funcional funções são cidadães de primeira classe, o que significa que elas se comportam com dados e suportam quaisquer operações que a linguagem permita.

Algumas características das funções de primeira classe são:

  • atribuir uma função a uma variável
  • passar uma função como parâmetro para outra função
  • retornar a função como valor de outra função
  • armazenar a função em uma estrutura de dados

Lambdas

Lambdas são funções anônimas (sem um nome) definidas in-place.

1//  1   2                           3                               4
2   [ ] ( ) { std::cout << "Hello from C++ Lambda!" << std::endl; } ( );

Vamos ver o que cada grupo significa:

  • 1 [] lambda introducer ou lambda closure
  • 2 () lista de parâmetros (você pode omitir estes parêntes se a função não receber parâmetros).
  • 3 {} corpo da função lambda
  • 4 () executa a função

Programação funcional com lambdas

1// f(x,y) = x² + y² + 2xy;
2std::function<int(int,int)> fxsquare = [](int x, int y) -> int {
3  int xsquare = [](int x) -> int { return x * x; }(x);
4  int ysquare = [](int y) -> int { return y * y; }(y);
5  int twoxy   = [](int x, int y) -> int { return 2 * x * y; }(x,y);
6  return xsquare + ysquare + twoxy;
7}
8
9cout << fxsquare(5,3) << endl; // 64

Referências

comments powered by Disqus