Scala es un lenguaje diseñado para soportar completamente la programación funcional, ofreciendo características como funciones de orden superior, inmutabilidad, expresiones lambda y estructuras que facilitan trabajar de manera declarativa.
Principios de la Programación Funcional
- Inmutabilidad: Los datos no cambian después de su creación, lo que evita efectos secundarios.
- Funciones puras: Una función siempre devuelve el mismo resultado para los mismos argumentos, sin modificar el estado global.
- Funciones como ciudadanos de primera clase: Las funciones pueden asignarse a variables, pasarse como argumentos y devolverse como valores.
- Composición de funciones: Permite combinar funciones pequeñas para crear soluciones más complejas.
- Expresiones en lugar de instrucciones: En lugar de cambiar estados, se evalúan expresiones para producir nuevos valores.
Funciones en Scala
Declaración de Funciones
def sumar(a: Int, b: Int): Int = {
a + b
}
println(sumar(3, 5)) // Salida: 8
Funciones Lambda (Funciones Anónimas)
Las funciones lambda son definiciones de funciones compactas.
val multiplicar = (a: Int, b: Int) => a * b
println(multiplicar(2, 3)) // Salida: 6
Funciones de Orden Superior
Una función de orden superior es una función que acepta otra función como argumento o devuelve una función.
Ejemplo: Aplicar una función a una lista
val numeros = List(1, 2, 3)
val cuadrados = numeros.map(x => x * x)
println(cuadrados) // Salida: List(1, 4, 9)
Ejemplo: Devuelve una función