Las cadenas de caracteres en Elixir son una herramienta fundamental para representar texto compuesto por uno o varios caracteres encadenados. A diferencia de los átomos, que son más limitados en cuanto a los caracteres que pueden contener, las cadenas nos permiten incluir cualquier símbolo dentro del rango Unicode. Esto significa que podemos escribir desde letras comunes hasta emojis o caracteres de alfabetos diversos como el ruso, griego o chino, sin preocuparnos por problemas de codificación.
Para definir una cadena de caracteres en Elixir, simplemente encerramos el texto entre comillas dobles. Por ejemplo, "hola mundo" es una cadena válida. Cuando imprimimos esta cadena, Elixir la muestra en un color diferente al de los átomos, indicando que se trata de un tipo distinto. Los átomos, por su parte, no pueden contener espacios y tienen restricciones en los caracteres que admiten, mientras que las cadenas son mucho más flexibles.
El uso principal de las cadenas de caracteres es cuando necesitamos interactuar con el mundo exterior. Por ejemplo, al recibir parámetros en una aplicación web desarrollada con Phoenix o al enviar datos al navegador, las cadenas son el tipo de dato adecuado. Los átomos, en cambio, se reservan para usos internos, como comunicar resultados entre funciones o codificar tipos especiales dentro del programa.
Una gran ventaja de las cadenas en Elixir es la amplia biblioteca de funciones disponibles en el módulo String. Este módulo nos ofrece herramientas para manipular texto de manera sencilla y eficiente. Por ejemplo, con String.length/1 podemos obtener la longitud de una cadena:
String.length("hola mundo") # Devuelve 10
También podemos convertir cadenas a mayúsculas o minúsculas usando String.upcase/1 y String.downcase/1 respectivamente:
String.upcase("palabra") # Devuelve "PALABRA"
String.downcase("PALABRA") # Devuelve "palabra"
Para acceder a un carácter en una posición específica, String.at/2 es muy útil. Recibe la cadena y el índice (empezando en 0) y devuelve el carácter correspondiente:
String.at("palabra", 3) # Devuelve "a"
Estas funciones facilitan la manipulación de texto, algo que no es posible con los átomos, que carecen de tantas funcionalidades para trabajar con cadenas.
Un detalle importante al trabajar con cadenas es cómo manejar las comillas dobles dentro de ellas. Si queremos incluir comillas en el texto, debemos escaparlas usando una barra invertida (\). Por ejemplo:
"Alicia dijo: \"No hagas caso\" en voz alta."
Sin este escape, Elixir interpretaría la comilla como el final de la cadena y generaría un error.
Además, Elixir permite crear cadenas multilínea de forma sencilla. Si abrimos una cadena con comillas dobles y pulsamos Enter, los saltos de línea se incluyen dentro de la cadena. Internamente, estos saltos se representan con el carácter especial \n, que indica un salto de línea. Por ejemplo:
"""
No hagas caso
en voz alta.
"""
Este texto incluye un salto de línea entre las dos frases. Cuando se imprime, Elixir muestra los saltos de línea como \n, que es la forma estándar de representar un salto en muchas lenguajes y sistemas.
En resumen, las cadenas de caracteres en Elixir son un tipo de dato muy versátil y esencial para trabajar con texto, especialmente cuando interactuamos con sistemas externos o necesitamos manipular texto de forma avanzada. Su compatibilidad con Unicode y la amplia gama de funciones del módulo String las convierten en una herramienta indispensable en nuestro día a día como programadores en Elixir.