Composición de funciones
⠀
La composición de funciones consta en crear dos o más funciones y asignarlas de forma tal que el resultado de una sea tomado como parámetro de otra. Esto sólo es válido con funciones que reciban un solo parámetro, pero la cadena puede tener tantas funciones como sea necesario.
⠀
Por ejemplo, tomando como base las funciones porTres
y masUno
, es posible componer la función masUnoYPorTres
la cual equivale a llamar la función masUno
y al resultado aplicarle porTres
. Para ello basta con usar el método compose
sobre la segunda función, y pasar por parámetro la primera.
Function<Integer, Integer> porTres = x -> x * 3;
Function<Integer, Integer> masUno = x -> x + 1;
Function<Integer, Integer> masUnoYPorTres = porTres.compose(masUno);
Integer resultado = masUnoYPorTres.apply(2); // resultado valdrá 9, ya que ((2 + 1) * 3)
Ya que el orden de las funciones en la composición es importante, también es de utilidad el método andThen
.
/// ...
Function<Integer, Integer> porTresYMasUno = porTres.andThen(masUno);
Integer resultado = porTresYMasUno.apply(2); // resultado valdrá 7, ya que ((2 * 3) + 1)
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?