Back to TIL list

C++ Lambda

Created at

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   2                           3                               4
   [ ] ( ) { 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

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

Referências