May 24, 2024

En Scala, las funciones de orden superior (high order functions) son funciones que toman una o más funciones como argumentos o devuelven una función como resultado. Las funciones de orden superior son una de las características más poderosas de Scala y son muy útiles para escribir código más legible, modular y reutilizable.

En Scala, las funciones son ciudadanos de primera clase, lo que significa que pueden ser tratadas como cualquier otro tipo de valor, como una cadena, un entero o una lista. Las funciones pueden ser asignadas a variables, pasadas como argumentos a otras funciones, devueltas como resultados de otras funciones y almacenadas en estructuras de datos.

Veamos algunos ejemplos de funciones de orden superior en Scala:

// Ejemplo de función que toma otra función como argumento
def applyTwice(f: Int => Int, x: Int): Int = f(f(x))

def square(x: Int): Int = x * x

val result = applyTwice(square, 2) // result: Int = 16

// Ejemplo de función que devuelve otra función como resultado
def createMultiplier(factor: Int): Int => Int = (x: Int) => x * factor

val double = createMultiplier(2)
val triple = createMultiplier(3)

val result1 = double(5) // result1: Int = 10
val result2 = triple(5) // result2: Int = 15

En el primer ejemplo, applyTwice es una función de orden superior que toma otra función f y un argumento x. La función applyTwice llama a f dos veces con el argumento x, y devuelve el resultado final. En este ejemplo, square es la función que se pasa como argumento a applyTwice, y result es el resultado de aplicar la función square dos veces al número 2.

En el segundo ejemplo, createMultiplier es una función de orden superior que devuelve una función. La función devuelta toma un argumento x y devuelve x multiplicado por factor. En este ejemplo, double y triple son dos funciones creadas usando createMultiplier, y se utilizan para multiplicar un número por 2 y por 3, respectivamente.

Las funciones de orden superior son muy útiles en Scala para escribir código modular y reutilizable. Al utilizar funciones de orden superior, podemos pasar la lógica específica de una tarea a una función separada y reutilizarla en diferentes partes del código. Esto hace que nuestro código sea más fácil de mantener y evita la duplicación de código.

Leave a Reply

Your email address will not be published. Required fields are marked *