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)