DEV Community

Expressões lambda de bloco

Corpo de expressão: É o tipo de corpo de expressão lambda mais simples, composto por uma única expressão. O código à direita do operador lambda é uma única expressão que é automaticamente retornada.

Corpo de bloco: Diferente do corpo de expressão, o corpo de bloco permite múltiplas instruções. Isso amplia as operações que podem ser feitas com lambdas, como declarações de variáveis, laços, instruções if e switch. Para retornar um valor, é necessário usar explicitamente uma instrução return.

Exemplo de uso de corpo de bloco: Uma lambda de bloco pode ser usada para encontrar o menor fator positivo de um número inteiro, por meio de uma interface funcional como NumericFunc, que recebe um int e retorna um int.

// Uma lambda de bloco que encontra o menor fator positivo
// de um valor int.
interface NumericFunc {
int func(int n);
}
class BlockLambdaDemo {
public static void main(String args[])
{
// Esta lambda de bloco retorna o menor fator positivo de um valor.
// Uma expressão lambda de bloco
NumericFunc smallestF = (n) -> {
int result = 1;
// Obtém o valor absoluto de n.
n = n < 0 ? -n : n;
for(int i=2; i <= n/i; i++)
if((n % i) == 0) {
result = i;
break;
}
return result;
};
System.out.println("Smallest factor of 12 is " + smallestF.func(12));
System.out.println("Smallest factor of 11 is " + smallestF.func(11));
}
}

Saída:
Smallest factor of 12 is 2
Smallest factor of 11 is 1

Top comments (0)