Expresiones lambda

  • La programación funcional es una forma de escribir código más declarativo. Se especifica lo que se quiere hacer, más que tratar con el estado de los objetos.
  • Una expresión lambda es un bloque de código que se trata como un método anónimo. Tiene parámetros y un cuerpo, pero no tiene nombre. En otras palabras, es un método que se puede pasar como si se tratase de una variable.
  • Sintaxis (omitiendo partes opcionales):
    • a -> a.tieneSpoiler();
a -> a.tieneSpoiler()
nombre parámetro flecha cuerpo
  • Sintaxis (incluyendo partes opcionales):
    • (Coche a) -> {return a.tieneSpoiler();}
(Coche a) -> {return a.tieneSpoiler();}
tipo parámetro opcional nombre parámetro flecha cuerpo return y ; son obligatorios al estar en un bloque
  • Java proporciona la interfaz Predicate<T>, perteneciente a java.util.function, para facilitar que no se tenga que crear una interfaz para cada lambda que se quiera utilizar
  • Java incorpora una interfaz Predicate en varias clases existentes. ArrayList declara el método removeIf, que usa un Predicate. Ejemplo:
    • List coches = new ArrayList();
      coches.add("Renault");
      coches.add("Fiat");
      coches.add("Peugeot");
      System.out.println(coches); // [Renault, Fiat, Peugeot]
      coches.removeIf(s -> s.charAt(0) != 'R');
      System.out.println(coches); // [Renault]
a -> a." data-share-imageurl="" style="position:fixed;bottom:0px;left:0px;">