¿Cómo hacer asignaciones en Elixir?

A ver, en Elixir no hay asignaciones en el sentido más literal de la palabra. Ya lo veremos. Sin embargo, un tipo de expresiones que nos son útiles es poder darle identificadores al resultado de evaluar otras expresiones para poder hacerlas más simbólicas y poder utilizarlas cómodamente al fabricar otras expresiones compuestas.

En Elixir, las expresiones primitivas son la base para trabajar con datos simples, como los números. Por ejemplo, el número 15 es una expresión primitiva que se evalúa a sí misma, al igual que 5, 25 o 100. Lo interesante es que, a diferencia de otros lenguajes, Elixir permite manejar números tan largos como queramos sin redondeos ni notación científica. Esto nos libera de preocupaciones comunes en lenguajes como Java o C, donde trabajar con números muy grandes requiere librerías especiales o trucos adicionales.

Pero no solo existen números; Elixir maneja muchos tipos de datos que iremos explorando más adelante. Por ahora, centrémonos en otro tipo de expresión fundamental: las asignaciones. Aunque en Elixir las asignaciones no funcionan exactamente como en otros lenguajes, su propósito es claro: asignar nombres a expresiones para facilitar su uso y mejorar la legibilidad del código.

Imaginemos que queremos usar el número pi en nuestros programas. En lugar de escribir 3.14159 una y otra vez, podemos asignarle un identificador, que es simplemente un nombre que elegimos para referirnos a esa expresión. Esto es muy parecido a cómo en matemáticas usamos la letra griega π para representar esa constante, o en física usamos letras para constantes como la gravedad o la constante de Planck.

Para hacer esta asignación en Elixir, primero elegimos un identificador, que debe comenzar con una letra y puede contener números después. Por ejemplo, podemos usar pi como identificador. Luego, escribimos el signo igual y la expresión que queremos asociar, como 3.14159263. Es importante recordar que, aunque en español usamos la coma para separar decimales, en programación se utiliza el punto, siguiendo la notación anglosajona.

pi = 3.14159263

Al ejecutar esta asignación, Elixir nos devuelve el valor asignado, lo que indica que la asociación se ha realizado correctamente. A partir de ese momento, cuando escribamos pi, Elixir lo evaluará como 3.14159263, gracias a que internamente mantiene una tabla que relaciona identificadores con sus expresiones correspondientes.

Si intentamos usar un identificador que no hemos definido, Elixir nos avisará de que no está definido, lo que nos ayuda a evitar errores por nombres mal escritos o no inicializados.

Podemos asignar otros identificadores, como x = 5, y luego usarlos en nuestras expresiones. En el intérprete interactivo, incluso podemos reasignar valores cómodamente, por ejemplo, cambiar x de 5 a 7. Sin embargo, cuando escribimos programas reales en archivos, Elixir nos exige que las asignaciones sean inmutables: una vez que asignamos un valor a un identificador, este no puede cambiar.

Esta inmutabilidad puede parecer contradictoria con la palabra variable, que implica cambio, pero es una característica fundamental de la programación funcional. Nos permite escribir código más seguro y predecible, porque podemos estar seguros de que un identificador siempre representa el mismo valor durante la ejecución del programa.

Así, aunque en el intérprete interactivo podamos cambiar valores para experimentar, en programas reales la inmutabilidad de las asignaciones nos ayuda a evitar errores y a razonar mejor sobre nuestro código. Esta es una de las ventajas clave de Elixir y otros lenguajes funcionales.

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