You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/tutorial/secao84.md
+14-11Lines changed: 14 additions & 11 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,14 +1,19 @@
1
1
# 8.4 - Funções Lambda
2
2
3
-
Funções lambda foram implementadas no C++11 e versões posteriores, onde podemos declarar objetos de funções em forma anônima, podendo ser utilizada em contextos assíncronos.
3
+
Funções lambda foram implementadas no C++11 e versões posteriores, onde podemos declarar objetos de funções em forma anônima, normalmente utilizadas quando precisamos de uma função que não precisará existir após ser utilizada.
4
4
5
5
Sintaxe:
6
+
`[]() -> T {}`
6
7
7
-
`[]() {};`
8
+
CAPTURAS `[]` <br/>
9
+
PARÂMETROS `()` <br/>
10
+
TIPO DO RETORNO `-> T` <br/>
11
+
CORPO DA FUNÇÃO `{}`
8
12
9
-
Chamamos uma função lambda como: `nome_variavel()`
13
+
Chamamos uma função lambda da mesma forma que chamamos uma função normal: `nome_variavel()`
10
14
11
15
Exemplo:
16
+
12
17
```cpp{0}
13
18
#include <iostream>
14
19
#include <cstdlib>
@@ -24,10 +29,7 @@ int main(int argc, const char **argv)
24
29
25
30
int a(3), b(5);
26
31
27
-
/* auto significa irá idenficar o que se retorna ou o que é associavel
28
-
* neste caso precisamos utilizar auto,pois soma se associa com: class lambda[] int (int n1, int n2) -> int
29
-
* Iremos ter uma seção específica apenas para a keyword auto, não se preocupe com isso.
30
-
*/
32
+
/* Quando criamos uma lambda, precisamos usar 'auto', pois o tipo de cada função é único. */
31
33
32
34
auto soma = [](int n1, int n2) {
33
35
return n1 + n2;
@@ -48,15 +50,15 @@ auto func()
48
50
}
49
51
```
50
52
51
-
Também podemos fazer lambda localmente para executar um determinado procedimento
53
+
Também podemos criar lambdas que são executadas imediatamente. Esse tipo de função é conhecido como IILE(Immediately Invoked Lambda Expression) ou IIFE(Immediately Invoked Function Expression)
52
54
53
55
Exemplos:
54
56
55
57
```cpp{0}
56
58
#include <iostream>
57
59
#include <cstdlib>
58
60
59
-
int main(int argc,const char **argv)
61
+
int main(int argc,const char **argv)
60
62
{
61
63
/*|--------------------------------------|
62
64
*| |
@@ -70,11 +72,12 @@ int main(int argc,const char **argv)
0 commit comments