Funciones Composición y Java . ¿ Cómo podemos componer funciones en Java ? . A día de hoy y a través de Java 8 nos encontramos que disponemos del concepto de función y que podemos construir funciones en Java usando expresiones Lambda. Es una operación realmente sencilla vamos a verlo con un ejemplo.
package com.arquitecturajava; import java.util.function.Function; public class Principal { public static void main(String[] args) { Function<Double, Double> duplicar = x -> x * 2; double resultado=duplicar.apply(2.0); System.out.println(resultado); } }
En este caso lo que estamos es diseñando una función muy sencilla aquella que recibe un valor numérico de tipo double y lo duplica. Para ello vamos a usar el interface Function de Java8 que se encarga de definir las funciones. Al ejecutar el código nos imprimirá un 4 por la consola.
Acabamos de construir nuestra primera función y la hemos ejecutado . Ahora bien las funciones soportan composición a nivel del lenguaje Java veamos cómo combinar esta función con otra.
Funciones Composición y Java
Para combinar dos funciones en Java necesitamos evidentemente añadir una función adicional:
package com.arquitecturajava; import java.util.function.Function; public class Principal { public static void main(String[] args) { Function<Double, Double> duplicar = x -> x * 2; double resultado=duplicar.apply(2.0); System.out.println(resultado); Function<Double,Double> sumar2= x->x+2; double resultado2=sumar2.apply(resultado); System.out.println(resultado2); } }
Ahora tenemos dos funciones si las ejecutamos una después de otra tendremos por la consola los siguientes mensajes:
package com.arquitecturajava; import java.util.function.Function; public class Principal { public static void main(String[] args) { Function<Double, Double> duplicar = x -> x * 2; double resultado=duplicar.apply(2.0); System.out.println(resultado); Function<Double,Double> sumar2= x->x+2; double resultado2=sumar2.apply(resultado); System.out.println(resultado2); } }
El resultado en consola es :
Combinando funciones
Es momento de ver como podemos combinar ambas funciones para que se ejecuten de forma combinada .
Para ello modificaremos el código y usaremos el método andThen del interface Function que nos permite generar una nueva Función combinando el comportamiento de las dos funciones anteriores.
package com.arquitecturajava; import java.util.function.Function; public class Principal { public static void main(String[] args) { Function<Double, Double> duplicar = x -> x * 2; Function<Double,Double> sumar2= x->x+2; Function<Double, Double> composicion = duplicar.andThen(sumar2); double resultado2=composicion.apply(2.0); System.out.println(resultado2); } }
El resultado por la consola:
Aprendamos los conceptos de programación funcional que nos ayudarán en la gestión de nuestro día a día:
Además las funciones van implícitas en la función map de los Stream () , es decir implicitane se llama a una Function.
Gracias por el aporte 🙂