Una función de orden superior es la que cumple con las siguientes condiciones:
- Puede recibir como parámetro otra u otras funciones.
- Puede regresar una función
Por ejemplo:
// Función que calcula el cuadrado de un número
def cuadrado(x: Int): Int =
x * x
// Función que calcula el cubo de un número
def cubo(x: Int): Int =
x * x * x
// Función que recibe como parámetro una función
def calculo(f: Int => Int, x: Int): Int =
f(x)
// Uso de función para cuadrado
calculo(cuadrado, 3) //> res0: Int = 9
// Uso de función para cubo
calculo(cubo, 3) //> res1: Int = 27
Una función de orden superior al inicio me pareció muy similar a los punteros a función que se podrán hacer en C++, pero en Scala es más transparente su uso.