Invocación de funciones

Las funciones son una parte primordial de Elixir. En una función se define una regla para transformar una serie de datos de entrada en una serie de datos de salida. En este vídeo explico en qué consiste, y también muestro cómo la sintaxis para aplicar o invocar una función en el lenguaje de programación Elixir.

En Elixir, las funciones son piezas fundamentales que nos permiten transformar entradas en salidas siguiendo reglas definidas por expresiones con incógnitas. Podemos pensar en ellas como cajas negras: les damos ciertos valores de entrada y ellas nos devuelven un resultado, sin necesidad de saber cómo se realiza el cálculo interno. Esta idea es similar a cómo funcionan los operadores matemáticos que ya conocemos, como la suma o la multiplicación, que reciben operandos y devuelven un resultado.

Una función en Elixir recibe una o varias entradas y produce una salida, pero lo interesante es que internamente está definida por una expresión que contiene incógnitas o huecos. Estos huecos son los parámetros que debemos proporcionar para que la función pueda evaluarse y devolver un resultado. A diferencia de una variable que almacena un valor ya evaluado, una función guarda la expresión con esos huecos sin resolver, y solo cuando le damos los valores necesarios se evalúa completamente.

Por ejemplo, cuando escribimos en IEX 3 + 4, el intérprete evalúa inmediatamente la expresión y nos devuelve 7. Si hacemos una asignación como x = 3 + 4, la variable x almacenará el valor 7, no la expresión 3 + 4. Esto se debe a que IEX evalúa primero la expresión y luego guarda el resultado, optimizando así el uso de memoria y procesamiento. Sin embargo, con las funciones no ocurre lo mismo: ellas almacenan la expresión con sus incógnitas para evaluarlas cuando se les proporcionen los parámetros.

Elixir cuenta con una amplia librería estándar que incluye muchas funciones ya definidas para realizar operaciones comunes. Por ejemplo, aunque no existe un operador específico para calcular el resto de una división (el módulo) como en otros lenguajes, sí tenemos la función rem que cumple esa función. Esta función recibe dos parámetros: el dividendo y el divisor, y devuelve el resto de la división entera.

Para invocar una función en Elixir, escribimos su nombre seguido de los parámetros entre paréntesis, separados por comas. Por ejemplo, para calcular el resto de dividir 5 entre 2, escribimos:

rem(5, 2)

El resultado de esta expresión será 1, que es el resto de la división.

Otra función útil que trae Elixir es round, que redondea un número decimal al entero más cercano. Si el decimal es 0.5 o mayor, redondea hacia arriba; si es menor, redondea hacia abajo. Por ejemplo:

round(3.75)  # Devuelve 4
round(3.25)  # Devuelve 3

Al invocar funciones, los parámetros que pasamos pueden ser constantes, variables o incluso otras expresiones. Por ejemplo, si tenemos una variable x con valor 7, podemos combinar funciones así:

x = 7
rem(x, round(3.25))  # Evalúa rem(7, 3), que devuelve 1

Esto muestra cómo las expresiones en Elixir pueden ser primitivas o compuestas, y cómo las funciones se integran en esta estructura expresiva del lenguaje. En definitiva, las funciones nos permiten encapsular transformaciones de datos de forma clara y reutilizable, y su invocación sigue una sintaxis sencilla y consistente que facilita su uso en todo tipo de cálculos y operaciones.

Lista de reproducción
  1. 1
    ¿Qué es Elixir?
    10 minutos
  2. 2
    Instalación de Elixir
    9 minutos
  3. 3
    ¿Qué es la programación funcional? (Como la de Elixir)
    20 minutos
  4. 4
    ¿Cómo funciona la REPL de Elixir?
    7 minutos
  5. 5
    ¿Cómo hacer asignaciones en Elixir?
    7 minutos
  6. 6
    Operadores aritméticos básicos
    6 minutos
  7. 7
    ¿Qué son los tipos de datos de Elixir?
    5 minutos
  8. 8
    Átomos en Elixir
    4 minutos
  9. 9
    Las palabras clave nil, true y false
    6 minutos
  10. 10
    Operadores lógicos de comparación
    8 minutos
  11. 11
    Comparación estricta con ===
    3 minutos
  12. 12
    Operadores lógicos y proposicionales
    8 minutos
  13. 13
    Invocación de funciones
    10 minutos
  14. 14
    Fundamentos de funciones
    9 minutos
  15. 15
    Cadenas de caracteres
    8 minutos
  16. 16
    Entrada y salida estandar de la mano de gets y puts
    9 minutos
  17. 17
    Concatenar e interpolar strings
    9 minutos
  18. 18
    Código fuente en archivos
    9 minutos
  19. 19
    Condicional IF y bloques DO-END
    11 minutos
  20. 20
    IFs anidados, UNLESS y COND
    12 minutos
  21. 21
    Definición de funciones
    11 minutos
  22. 22
    Fundamentos de compilación de módulos
    6 minutos
  23. 23
    Guardas
    8 minutos
  24. 24
    Funciones anónimas
    7 minutos
  25. 25
    Capturar funciones
    4 minutos
  26. 26
    Invocación de funciones dentro del mismo módulo
    7 minutos
  27. 27
    Tuplas
    8 minutos
  28. 28
    Introducción al pattern matching
    8 minutos
  29. 29
    Pattern matching en funciones
    11 minutos
  30. 30
    Las tuplas :ok, :error
    7 minutos
  31. 31
    case
    10 minutos
  32. 32
    Operador pin
    7 minutos
  33. 33
    Pattern matchings y recursividad
    5 minutos
  34. 34
    Listas
    9 minutos
  35. 35
    Operadores y funciones de lista
    10 minutos
  36. 36
    Keyword lists: listas de palabras clave
    8 minutos
  37. 37
    Mapas
    7 minutos
  38. 38
    Pattern matching de mapas y keyword lists
    6 minutos
  39. 39
    Operadores y funciones para mapas y keyword lists
    5 minutos
  40. 40
    Estructuras con defstruct
    11 minutos
  41. 41
    Bitstrings
    11 minutos
  42. 42
    Charlists
    10 minutos
  43. 43
    Funciones de alto orden en Elixir
    5 minutos
  44. 44
    Uso de la función filter
    10 minutos
  45. 45
    Uso de la función map
    7 minutos
  46. 46
    Uso de la función reduce
    9 minutos
  47. 47
    Pipelines
    11 minutos
  48. 48
    Rangos y Streams
    11 minutos
  49. 49
    Funciones recursivas con listas
    14 minutos