Skip to content

Commit f2eb1ff

Browse files
committed
refactor(lambda-expression): revisão e ajustes
Issue #20
1 parent cc9961d commit f2eb1ff

File tree

2 files changed

+7
-5
lines changed

2 files changed

+7
-5
lines changed

book/04-lambda/sections/02-lambda-expression.asc

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ Exemplos de expressões lambda:
3434
* `(i, j, k) -> System.out.println(i + j + k)`
3535
* `() -> System.out.println("nada")`
3636

37+
//-
38+
3739
. Expressões lambda podem ser entendidas como uma forma diferente de declarar classes anônimas.
3840
+
3941
[source,java,indent=0]
@@ -61,7 +63,7 @@ executei com expressão lambda
6163
+
6264
Veja que no exemplo acima o mesmo método `executeEApresenteMensagem` é invocado duas vezes. Na primeira vez é passada uma nova classe anônima. Na segunda vez é passado uma expressão lambda.
6365
+
64-
Veja também que seria impossível criar uma expressão lambda caso a interface não fosse funcional, ou seja, tivesse mais de um método abstrato. Seria impossível para o compilador saber que o que está sendo implementado dentro da expressão lambda é o método `execute` da interface `Executavel`.
66+
Veja também que seria impossível criar uma expressão lambda caso a interface não fosse funcional, ou seja, tivesse mais de um método abstrato. O compilador não saberia identificar que o método `execute`, da interface `Executavel`, está sendo implementado dentro da expressão lambda.
6567

6668
. Existem muitos métodos já disponíveis no Java 8 que se beneficiam da sintaxe de expressões lambda, como o `forEach` de listas.
6769
+
@@ -81,7 +83,7 @@ include::{section-java-package}/lambdaexpression/LambdaExpression_ForEach.java[t
8183
5
8284
----
8385
+
84-
Veja que o novo método `forEach` executa a expressão lambda passada como parâmetro para cada item da lista, imprimindo todos no console. Veja também que essa expressão lambda recebe como parâmetro um número, que é o número da lista.
86+
Veja que o novo método `forEach` executa a expressão lambda passada como parâmetro para cada item da lista, imprimindo todos no console. A expressão lambda recebe como parâmetro um número, que é o número da lista.
8587
+
8688
Neste caso, a interface funcional que está sendo implementada pela expressão lambda é chamada `Consumer`. Ela será explicada em detalhes em uma seção posterior, juntamente com outras interfaces funcionais padrões do Java 8. Nesta seção é importante apenas entender o que são as expressões lambda e como é sua sintaxe.
8789

@@ -104,7 +106,7 @@ As duas funções lambda acima são idênticas, porém uma é mais explícita do
104106
include::{section-java-package}/lambdaexpression/LambdaExpression_Parenthesis.java[tag=code]
105107
----
106108

107-
. Caso a expressão lambda possua mais de uma linha, é obrigatória a utilização de chaves, ponto e vírgula e return (se a função retornar algum valor).
109+
. É obrigatória a utilização de chaves, ponto e vírgula e `return` (caso a função retorne algum valor) em expressões lambda com mais de uma linha.
108110
+
109111
[source,java,indent=0]
110112
.{java-package}/lambdaexpression/LambdaExpression_Block.java
@@ -136,7 +138,7 @@ include::{section-java-package}/lambdaexpression/LambdaExpression_Shadowing.java
136138
include::{section-java-package}/lambdaexpression/LambdaExpression_AccessExternalVar.java[tag=code]
137139
----
138140
+
139-
Perceba que o compilador identifica que a variável `x3` é alterada no final do método, e por isso não permite que ela seja utilizada na expressão lambda.
141+
Perceba que o compilador identifica que a variável `x3` é alterada no final do método, e por isso, não permite que ela seja utilizada na expressão lambda.
140142

141143
. Em situações de ambiguidade, o compilador tenta descobrir o tipo da expressão lambda utilizando o contexto.
142144
+

src/org/j6toj8/lambda/lambdaexpression/LambdaExpression_FunctionalInterface.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ public String execute() {
2525

2626
// com expressão lambda
2727
executeEApresenteMensagem(() -> { return "executei com expressão lambda"; });
28-
// end::code[]
2928
}
29+
// end::code[]
3030
}

0 commit comments

Comments
 (0)