Declarando funciones

Con la palabra clave def podemos declarar funciones, los cuales pueden aceptar parámetros y devolver resultados, como en cualquier otro lenguaje. Atención al orden y a la forma de declarar la función y los parámetros. Una vez escrita la función la podremos usar.

Este curso ha sido marcado como anticuado y no está siendo revisado de forma activa. Es posible que la información pueda estar desactualizada o que los enlaces se hayan roto.

Cuando trabajamos con Scala, uno de los aspectos fundamentales que debemos dominar es la definición y uso de funciones. En un lenguaje funcional como Scala, las funciones no son simplemente bloques de código que ejecutan instrucciones, sino expresiones que reciben parámetros y devuelven resultados. La clave está en diseñar funciones pequeñas y claras que, para las mismas entradas, siempre produzcan las mismas salidas, garantizando así un comportamiento predecible y seguro.

Para definir una función en Scala, utilizamos la palabra clave def, seguida del nombre que queramos darle a la función. Por ejemplo, si queremos crear una función que sume dos números, podemos llamarla suma. Los parámetros se declaran entre paréntesis, indicando primero el nombre de cada parámetro, seguido de dos puntos y el tipo de dato que aceptan. En Scala, a diferencia de otros lenguajes, el tipo es obligatorio en los parámetros de entrada para que el compilador pueda validar correctamente el uso de la función.

Veamos cómo sería la definición de una función suma que recibe dos enteros y devuelve su suma:

def suma(a: Int, b: Int): Int = a + b

Aquí, después de los parámetros, indicamos con dos puntos que la función devuelve un Int. Aunque Scala puede inferir el tipo de retorno automáticamente, es recomendable especificarlo explícitamente en funciones públicas para facilitar la documentación y el uso por parte de otros desarrolladores, especialmente cuando se trabaja con APIs.

Una característica interesante de Scala es que las funciones pueden definirse como expresiones en una sola línea, lo que las hace muy concisas y legibles. En el ejemplo anterior, la expresión a + b es el valor que la función devuelve.

Pero, ¿qué ocurre si necesitamos que la función realice varias operaciones antes de devolver un resultado? Scala permite definir funciones con múltiples líneas usando llaves {}. En este caso, no es necesario usar la palabra clave return; simplemente la última expresión dentro del bloque será el valor devuelto por la función.

Por ejemplo, si queremos definir una función dividir que tome dos enteros y devuelva el resultado de la división, podríamos escribirla así:

def dividir(a: Int, b: Int): Int = {
  val dividendo = a
  val divisor = b
  dividendo / divisor
}

En este bloque, declaramos dos valores temporales, dividendo y divisor, y la última línea es la expresión que se devuelve. Si intentamos dividir por cero, Scala lanzará una excepción de aritmética, igual que en Java.

Este enfoque de funciones pequeñas, claras y expresivas es fundamental en la programación funcional y nos ayuda a escribir código más mantenible y seguro. Además, al evitar el uso explícito de return, el código se vuelve más limpio y fácil de entender.

Así, con estas bases, podemos empezar a construir funciones en Scala que sean tanto simples como potentes, aprovechando la sintaxis y características que el lenguaje nos ofrece para expresar lógica de manera elegante y funcional.

Lista de reproducción
  1. 1
    Introducción a Scala
    6 minutos
  2. 2
    Instalar Scala
    6 minutos
  3. 3
    Primeros pasos con el intérprete
    5 minutos
  4. 4
    Variables con val y var
    7 minutos
  5. 5
    Declarando funciones
    7 minutos
  6. 6
    Inciso sobre Units e iguales
    5 minutos
  7. 7
    Presentación de los objetos singleton
    6 minutos
  8. 8
    Editando y compilando archivos
    8 minutos
  9. 9
    Descargar e instalar Scala IDE
    6 minutos
  10. 10
    Proyectos y worksheets en Scala IDE
    7 minutos
  11. 11
    El condicional IF en Scala
    8 minutos
  12. 12
    Un caso sencillo de MATCH
    6 minutos
  13. 13
    Bucles WHILE y DO-WHILE (y String Interpolation)
    7 minutos
  14. 14
    El sistema de tipos
    7 minutos
  15. 15
    Colecciones
    9 minutos
  16. 16
    Funciones básicas de una colección
    8 minutos
  17. 17
    El map (es sensacional)
    8 minutos
  18. 18
    Flatten y flatMap
    9 minutos
  19. 19
    Sets, parte 1 de 3: Set
    8 minutos
  20. 20
    Sets, parte 2 de 3: Sets mutables
    4 minutos
  21. 21
    Sets, parte 3 de 3: SortedSet
    6 minutos
  22. 22
    Mapas (parte 1 de 2): Creando mapas
    9 minutos
  23. 23
    Mapas (parte 2 de 2): Operaciones
    8 minutos
  24. 24
    foreach y for
    8 minutos