Definición de funciones

En Elixir podremos crear nuestros propios módulos en los que insertar nuestras propias funciones, que podremos así utilizar para desarrollar programas en los que funciones propias se agrupan para componer la lógica del programa.

Para crear funciones propias en Elixir, lo primero que debemos entender es que siempre tienen que estar contenidas dentro de un módulo. Un módulo es como una carpeta que agrupa funciones relacionadas, y para definirlo usamos la palabra clave defmodule seguida del nombre del módulo, que debe comenzar con mayúscula. Por ejemplo, si queremos hacer una calculadora, podemos definir:

defmodule Calculadora do
  # Aquí van las funciones
end

Dentro de este módulo es donde vamos a definir nuestras funciones. Para ello, utilizamos la palabra clave def seguida del nombre de la función y entre paréntesis los parámetros que va a recibir. El nombre de la función debe comenzar con una letra y puede incluir guiones bajos para separar palabras, lo que ayuda a que sea más legible. También es común ver funciones que terminan con un signo de interrogación cuando devuelven valores booleanos, aunque en nuestro ejemplo inicial no lo usaremos.

Supongamos que queremos crear una función llamada suma que reciba dos números y devuelva su suma. La definimos así:

def suma(a, b) do
  a + b
end

Aquí, a y b son variables que declaramos como parámetros de la función. No necesitan existir previamente; en el momento en que llamemos a la función, los valores que pasemos se asociarán a estas variables en orden. Por ejemplo, si llamamos a Calculadora.suma(6, 5), entonces a será 6 y b será 5 dentro de la función.

Es importante destacar que en Elixir la última expresión evaluada dentro del bloque do-end es la que se devuelve automáticamente como resultado de la función. No necesitamos usar una palabra clave como return. Por eso, en el ejemplo anterior, simplemente ponemos a + b al final y ese será el valor que la función retorne.

Para ver el resultado de la función, podemos usar IO.inspect, que imprime cualquier valor en la consola, no solo cadenas de texto como IO.puts. Así, para probar nuestra función suma, haríamos:

IO.inspect(Calculadora.suma(2, 3))

Esto imprimirá 5 en la consola.

En resumen, para definir funciones en Elixir debemos crear primero un módulo con defmodule, luego dentro de él declaramos funciones con def, especificando el nombre y los parámetros entre paréntesis. La función ejecuta el código dentro del bloque do-end y devuelve el resultado de la última expresión evaluada. Así podemos construir nuestras propias funciones para ampliar la funcionalidad más allá de la librería estándar de Elixir.

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