miércoles, 1 de junio de 2016

compose y andThen en scala


Una buena practica de programación es realizar funciones atómicas que luego se puedan reutilizar. Esto nos permite reutilizarlas como parte de otras funciones y hasta como composiciones de funciones. Con este espíritu fueron creadas las funciones compose y andThen en scala.

Con compose puedo componer dos funciones, es decir que se ejecute una y luego con el resultado de la misma ejecutar la segunda función. Sería algo así: f(g(x))

scala> val fComposeG = f _ compose g _
fComposeG: (String) => java.lang.String = <function>

scala> fComposeG("yay")
res0: java.lang.String = f(g("yay"))

De la misma manera funciona andThen  pero en orden de ejecución diferente. Es decir:

scala> val fAndThenG = f _ andThen g _
fAndThenG: (String) => java.lang.String = <function>

scala> fAndThenG("yay")
res1: java.lang.String = g(f(yay))

Dejo link:
https://twitter.github.io/scala_school/pattern-matching-and-functional-composition.html