Introducción a Elixir
Es Dinámico y Funcional
Contenido
Temas a abordar
Instalación y configuración
Introducción a Elixir
Tipos de datos
Operaciones Básicas
Estructuras de Control
Colecciones
Sección 1:
Introducción a Elixir
¿Qué es Elixir?
Es un lenguaje dinámico enfocado en la productividad, en la extensibiliad y en la concurrencia. Una de sus grandes potencias es la meta-programación que nos ayuda a evitar repetir una y otra vez el mismo código y reduce al mínimo las típicas plantillas.
- Apareció el 9 de Enero del 2011.
- Licencia de software libre de Apache.
- Se basa del lenguaje de programación funcional ERLANG.
- Lenguaje funcional, inmutable con una sintáxis fácil de entender.
Características de Elixir
- Lenguaje dinámico.
- Productividad.
- Extensibilidad.
- Concurrencia
- Mejor estructura
- Disminución de errores
Introducción a Elixir
"Elixir es un lenguaje de programación dinámica y funcional, diseñado para crear aplicaciones escalables y mantenibles"
Elixir corre sobre la máquina virtual de Erlang (BEAM). ESto hace que el lenguaje, a pesar de ser muy joven, sea robusto y con mucha funcionalidad
IMPORTANTE: El desarrollo en Elixir utiliza el paradigma de programación funcional (funciones y módulos)
Sección 2:
Instalación y Configuración
Proceso de instalación y configuración
Paso 1
Paso 4
Paso 2
Paso 3
Preparación previa a la instalación
Instalación y configuración de Nodejs
Instalación y configuración de Erlang
Instalación y configuración de Elixir
+ info
+ info
+ info
+ info
Paso 1: Preparación previa a la instalación
$ sudo apt install curl git
Paso 1.1
Paso 1.2
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.7.3
$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc $ source ~/.bashrc
Paso 1.3
Paso 1.4
$ asdf update
$ asdf Verificar que la version sea mayor a v0.7.8-4a3e3d6
Paso 1.5
Paso 2: Instalación y configuración de Erlang
Paso 2.1
$ asdf plugin-add erlang https://github.com/asdf-vm/asdf-erlang.git
$ asdf install erlang 24.0.3
Paso 2.2
IMPORTANTE: Si en el código se visualiza "Building Erlang/OTP 24.0.3 (asdf_24.0.3), please wait...WARNING: It appears that a required development package" realizar el paso 2.2.1 y paso 2.2.2, de no ser así, omitir.
Paso 2.2.1
$ sudo apt install libssl-dev make automake autoconf libncurses5-dev gcc
Paso 2.2.2
$ asdf install erlang 24.0.3
Paso 2.3
$ asdf global erlang 24.0.3
Paso 2.4
$ asdf list
Paso 3: Instalación y configuración de Elixir
Paso 3.1
$ asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git
Paso 3.2
$ asdf install elixir 1.12.2-otp-24
Paso 3.3
$ asdf global elixir 1.12.2-otp-24
Paso 3.4
$ asdf list
Paso 4: Instalación y configuración de NodeJS
Paso 4.1
$ asdf plugin-add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Paso 4.2
$ bash ~/.asdf/plugins/nodejs/bin/import-release-team-keyring
Paso 4.3
$ asdf install nodejs 14.15.1
Paso 4.4
$ asdf global nodejs 14.15.1
Paso 4.5
$asdf list
Prueba de instalación
Paso 02
Paso 03
Paso 01
Ejecutando la consola interactiva iex (Interactive Elixir), que nos permite evaluar expresiones Elixir
Salir de la consola: presione Ctrl + C dos veces.
Se realizan algunas operaciones básicas de Elixir. Ejemplo: "Hola mundo", 2+3, String.length("Hola mundo").
Sección 3:
Tipos de datos
Tipos de Datos
Booleanos
Enteros
Binarios, octales y hexadecimales
Flotante
Tipos de Datos
Nil
Cadenas
Átomos
Tipos de Datos - Enteros
Representa números enteros positivos y negativos, incluyendo el cero, no tienen decimales y el tamaño representado puede ser tan grande como memoria tengas en el sistema.
Tipos de Datos - Enteros
EL MÓDULO INTEGER: Provee de funciones útiles para convertir a cadena, a lista de caracteres, para separar los dígitos de un número o viceversa, obtener el máximo común divisor de dos números, entre otros.
Tipos de Datos - Flotante
Representa números de coma flotante. Ej. -12-4, 0.5, 100.67.También se pueden escribir de forma científica especificando la base en formato decimal, la letra "e " (exponente base 10) y el número del exponente para la base 10. Ej. 2.0e1 nos da como resultado 20.0
Tipos de Datos - Flotante
EL MÓDULO FLOAT: podemos encontrar funciones para conversión a lista de caracteres, a cadena de texto, funciones para redondear hacia abajo y hacia arriba. También para hacer un redondeo estándar y una función para obtener dos números enteros representados en fracción en función de un número dado.
Tipos de Datos - Binarios, Octales y hexadecimales
Se puede especificar la base en la que se representa un número entero, anteponiendo un prefijo específico a cada número escrito:
- 0x: prefijo para número hexadecimal
- 0b: prefijo para número binario
- 0o: prefijo para número octal
Tipos de Datos - Booleanos o lógicos
Este tipo de dato solo tiene dos representaciones posibles: true o false. Se obtiene principalmente a través del uso de los literales y los operadores de comparación, además de los nexos lógicos.
Tipos de Datos - Átomos
Átomos: un átomo es una constante cuyo valor es su propio nombre.
Los átomos son iguales si sus nombres son iguales.
A menudo se utilizan para expresar el estado de una operación, mediante el uso de valores como :ok y :error.
Elixir tiene una construcción llamada alias que comienzan en mayúsculas y también son átomos
Tipos de Datos - Nulo (nil)
En realidad, es otro átomo con significado especial que permite escribirse sin el uso de los dos puntos. El significado de este átomo es la ausencia de tipo.
Hay que tener presente que en funciones como Kernel.is_atom/1 usando una variable o el valor directo, siempre obtenemos true, ya que se trata de un átomo
Tipos de Datos - Cadenas
Las cadenas en Elixir están codificas en UTF-8 y encerradas en comillas dobles:
Las cadenas soportan salto de línea o secuencias de escape:
Tipos de Datos - Cadenas
MÓDULO STRING: Proporciona funciones para poder cambiar el texto a mayúscula o a minúscula e incluso capitalizar el texto. También podemos darle la vuelta al texto, obtener su tamaño, tomar el primer, el último u otro caracter de la cadena especificando su posición.
Tipos de Datos - Cadenas
La función String también nos permiten comprobar si el texto termina con un sufijo dado, o si comienza con un prefijo dado, incluso si contiene un trozo de texto dado.
Puedes ver estas y más funciones en la documentación del módulo String: https://hexdocs.pm/elixir/String.html
Sección 4:
Operaciones Básicas
Operaciones y comparaciones
Aritmética
Comparación
Comparación estricta
Operaciones y comparaciones
Concatenar cadenas
Booleanos
and, or, not
interpolación de cadenas
Sección 5:
Colecciones
Colecciones
Listas
Tuplas
Mapas
Colecciones - Listas
Listas: Son simples colecciones de valores, las cuales pueden incluír múltiples tipos de datos y pueden incluír valores no únicos.
Las listas son vectores de información heterogénea, es decir, puden contener información de distintos tipos, ya sean números, átomos, tuplas, estructuras, mapas u otras listas.
Se usa corchetes para especificar una lista de valores. Los valores pueden ser de cualquier tipo
Colecciones - Listas
Las listas en elixir son listas enlazadas, lo que significa que están representadas internamente en pares que contienen la cabeza y cola de una lista
La cabeza es el primer elemento de una lista y la cola es el resto de la lista: hd() y tl()hd es la abreviatura de “head” (cabeza en inglés), y tl es la abreviatura de “tail” (cola):
NOTA: Los operadores de lista nunca modifican la lista existente. Concatenar o eliminar elementos de una lista devuelve una nueva lista. De esta forma, se puede decir que las estructuras de datos de Elixir son inmutables .
Colecciones - Listas
ALGUNAS OPERACIONES QUE SE PUEDEN HACER CON LISTAS
concatenar dos o más listas:
añadir o sustraer elementos:
Insertar un elemento en una ubicación especfícia:
Eliminar un valor de acuerdo a una ubicación específica:
Colecciones - Listas
Listas de caracteres: Son un tipo específico de lista. Se trata de una lista homogénea de elementos representables como caracteres. Elixir detecta si una lista en su totalidad cumple con esta premisa para tratarla como lista de caracteres.
Si una lista está formada por enteros no negativos, donde cada entero representa un punto de código Unicode, la lista cumple ser Charlist (lista de caracteres)
Elixir usa comillas simples para definir listas de caracteres
Colecciones - Listas
Al igual que con el resto de listas, charlists también soportan la agregación de elementos, de modo que la concatenación se puede realizar de la siguiente forma:
Colecciones - Tuplas
Tuplas:
Son tipos de datos organizativos en elixir. Como las listas, las tuplas pueden contener cualquier valor.
A diferencia de las listas, no pueden incrementar ni decrementar su valor salvo por la redefinición compleata de su estructura
Las llaves indican el inicio y el fin de la definición de la tupla y los elementos separados por comas conforman su contenido.
NOTA: Al igual que las listas, las operaciones que se realizan en tuplas nunca modifican la existente. Agregar o elementos de una tupla devuelve una nueva tupla De esta forma, se puede decir que las estructuras de datos de Elixir son inmutables .
Colecciones - Tuplas
Colecciones - Tuplas
ALGUNAS OPERACIONES QUE SE PUEDEN HACER CON TUPLAS
Obtener un elemento de la tupla:
Insertar elementos al final de la tupla o en una ubicación específica
Cambiar un elemento de la tupla sin modificar el resto:
Eliminar un elemento de la tupla:
Convertir una tupla a lista:
Listas VS tuplas
Las listas se almacenan en la memoria como listas enlazadas. Acceder a la longitud de una lista es una operación lineal: necesitamos recorrer toda la lista para calcular su tamaño.
Las tuplas, por otro lado, se almacenan de forma contigua en la memoria. Esto significa que obtener el tamaño de la tupla o acceder a un elemento por índice es rápido. Sin embargo, actualizar o agregar elementos a las tuplas es costoso porque requiere crear una nueva tupla en la memoria:
Colecciones - Mapas
los mapas son estructuras de datos en donde cada elemento se almacena bajo una clave. Esta clave puede ser de cualquier tipo al igual que su contenido
los mapas se crean con la sintaxis %{} y los pares "llave, valor", se pueden expresar como:
- Un átomo como key (Atom Keys)
- Una cadena como key (String Keys)
atom key:
Acceder a la clave:
string key:
Acceder a la clave:
Colecciones - Mapas
A diferencia de las listas de palabras clave, los mapas son muy útiles con la coincidencia de patrones.
Un mapa coincide siempre y cuando las claves del patrón existan en el mapa dado. Por lo tanto, un mapa vacío coincide con todos los mapas
Si un elemento duplicado es agregado al mapa, este reemplazará al valor anterior:
Colecciones - Mapas
Hay una sintaxis especial para acceder a las claves que son átomos:
Además podemos cambiar la información contenida en el mapa de la siguiente forma:
NOTA: Esta sintaxis solo puede utilizarse para claves que ya existan en el mapa, de lo contrario mostrará un KeyError
Colecciones - Mapas
El módulo Map, proporciona una API con funciones convenientes para manipular mapas. Si necesitamos agregar un nuevo elemento al mapa, mediante la función Map.put_new/3 agrega el elemento sólo si no existe previamente en el mapa.
De igual forma como las colecciones ya vistas, podemos, obtener un elemento del mapa y convertir el mapa en una lista.
Colecciones - Mapas
Los mapas y las listas implementan el protocolo Enumerable, por lo que muchas funciones para trabajar con mapas se encuentran en el módulo Enum
Se puede reducir la función anónima anterior de la siguiente manera:
Colecciones - Listas
LISTAS DE PALABRAS CLAVE: En Elixir, cuando tenemos una lista de tuplas y el primer elemento de la tupla (es decir, la clave) es un átomo, lo llamamos lista de palabras clave:
Dado que las listas de palabras clave son listas, podemos utilizar todas las operaciones disponibles para las listas.
Sección 6:
Estructuras de Control
Estructuras de Control
if
unless
Estructuras de Control
case
Estructuras de Control
case
cond
Ejercicios : Conceptos Básicos
1 . Declarar 3 valores y determinen cual es el mayor. Pueden elegir la estructura de control que crean que les puede funcionar. Ejemplo: a=5, b= 36, c=-17 Respuesta: el mayor es b=36
2 . Dado 3 valores de los lados un triángulo, determinar si el triángulo es equilátero, isósceles o escaleno Ejemplo: a=44, b= 21, c=44 Respuesta: "El triángulo es equilátero"
Ejercicios : Conceptos Básicos
3. Dada la edad de una persona, determinar si es mayor de edad o no Ejemplo: edad = "23" Respuesta: "Eres mayor de edad"
Ejercicios : Colecciones
1. list_concat. ([1,2,3], [4,5,6]) # => [1,2,3,4,5,6]2. suma. (1, 2, 3) # => 6 3. pair_tuple_to_list.( { 8, 7 } ) #=> [ 8, 7 ] 4. Enum.map [1,2,3,4], fn x -> x + 2 end 5. Utilizar al menos, 3 funciones del módulo List en colecciones de tipo lista 6. Utilizar al menos, 3 funciones del módulo Tuple en colecciones de tipo tupla 7. Utilizar al menos, 3 funciones del módulo Map en colecciones de tipo map
¡Muchas gracias!
Presentación Introductiva a Elixir
gbmres2704
Created on February 9, 2021
Start designing with a free template
Discover more than 1500 professional designs like these:
View
Visual Presentation
View
Terrazzo Presentation
View
Colorful Presentation
View
Modular Structure Presentation
View
Chromatic Presentation
View
City Presentation
View
News Presentation
Explore all templates
Transcript
Introducción a Elixir
Es Dinámico y Funcional
Contenido
Temas a abordar
Instalación y configuración
Introducción a Elixir
Tipos de datos
Operaciones Básicas
Estructuras de Control
Colecciones
Sección 1:
Introducción a Elixir
¿Qué es Elixir?
Es un lenguaje dinámico enfocado en la productividad, en la extensibiliad y en la concurrencia. Una de sus grandes potencias es la meta-programación que nos ayuda a evitar repetir una y otra vez el mismo código y reduce al mínimo las típicas plantillas.
Características de Elixir
Introducción a Elixir
"Elixir es un lenguaje de programación dinámica y funcional, diseñado para crear aplicaciones escalables y mantenibles"
Elixir corre sobre la máquina virtual de Erlang (BEAM). ESto hace que el lenguaje, a pesar de ser muy joven, sea robusto y con mucha funcionalidad
IMPORTANTE: El desarrollo en Elixir utiliza el paradigma de programación funcional (funciones y módulos)
Sección 2:
Instalación y Configuración
Proceso de instalación y configuración
Paso 1
Paso 4
Paso 2
Paso 3
Preparación previa a la instalación
Instalación y configuración de Nodejs
Instalación y configuración de Erlang
Instalación y configuración de Elixir
+ info
+ info
+ info
+ info
Paso 1: Preparación previa a la instalación
$ sudo apt install curl git
Paso 1.1
Paso 1.2
$ git clone https://github.com/asdf-vm/asdf.git ~/.asdf --branch v0.7.3
$ echo -e '\n. $HOME/.asdf/asdf.sh' >> ~/.bashrc$ echo -e '\n. $HOME/.asdf/completions/asdf.bash' >> ~/.bashrc $ source ~/.bashrc
Paso 1.3
Paso 1.4
$ asdf update
$ asdf Verificar que la version sea mayor a v0.7.8-4a3e3d6
Paso 1.5
Paso 2: Instalación y configuración de Erlang
Paso 2.1
$ asdf plugin-add erlang https://github.com/asdf-vm/asdf-erlang.git
$ asdf install erlang 24.0.3
Paso 2.2
IMPORTANTE: Si en el código se visualiza "Building Erlang/OTP 24.0.3 (asdf_24.0.3), please wait...WARNING: It appears that a required development package" realizar el paso 2.2.1 y paso 2.2.2, de no ser así, omitir.
Paso 2.2.1
$ sudo apt install libssl-dev make automake autoconf libncurses5-dev gcc
Paso 2.2.2
$ asdf install erlang 24.0.3
Paso 2.3
$ asdf global erlang 24.0.3
Paso 2.4
$ asdf list
Paso 3: Instalación y configuración de Elixir
Paso 3.1
$ asdf plugin-add elixir https://github.com/asdf-vm/asdf-elixir.git
Paso 3.2
$ asdf install elixir 1.12.2-otp-24
Paso 3.3
$ asdf global elixir 1.12.2-otp-24
Paso 3.4
$ asdf list
Paso 4: Instalación y configuración de NodeJS
Paso 4.1
$ asdf plugin-add nodejs https://github.com/asdf-vm/asdf-nodejs.git
Paso 4.2
$ bash ~/.asdf/plugins/nodejs/bin/import-release-team-keyring
Paso 4.3
$ asdf install nodejs 14.15.1
Paso 4.4
$ asdf global nodejs 14.15.1
Paso 4.5
$asdf list
Prueba de instalación
Paso 02
Paso 03
Paso 01
Ejecutando la consola interactiva iex (Interactive Elixir), que nos permite evaluar expresiones Elixir
Salir de la consola: presione Ctrl + C dos veces.
Se realizan algunas operaciones básicas de Elixir. Ejemplo: "Hola mundo", 2+3, String.length("Hola mundo").
Sección 3:
Tipos de datos
Tipos de Datos
Booleanos
Enteros
Binarios, octales y hexadecimales
Flotante
Tipos de Datos
Nil
Cadenas
Átomos
Tipos de Datos - Enteros
Representa números enteros positivos y negativos, incluyendo el cero, no tienen decimales y el tamaño representado puede ser tan grande como memoria tengas en el sistema.
Tipos de Datos - Enteros
EL MÓDULO INTEGER: Provee de funciones útiles para convertir a cadena, a lista de caracteres, para separar los dígitos de un número o viceversa, obtener el máximo común divisor de dos números, entre otros.
Tipos de Datos - Flotante
Representa números de coma flotante. Ej. -12-4, 0.5, 100.67.También se pueden escribir de forma científica especificando la base en formato decimal, la letra "e " (exponente base 10) y el número del exponente para la base 10. Ej. 2.0e1 nos da como resultado 20.0
Tipos de Datos - Flotante
EL MÓDULO FLOAT: podemos encontrar funciones para conversión a lista de caracteres, a cadena de texto, funciones para redondear hacia abajo y hacia arriba. También para hacer un redondeo estándar y una función para obtener dos números enteros representados en fracción en función de un número dado.
Tipos de Datos - Binarios, Octales y hexadecimales
Se puede especificar la base en la que se representa un número entero, anteponiendo un prefijo específico a cada número escrito:
Tipos de Datos - Booleanos o lógicos
Este tipo de dato solo tiene dos representaciones posibles: true o false. Se obtiene principalmente a través del uso de los literales y los operadores de comparación, además de los nexos lógicos.
Tipos de Datos - Átomos
Átomos: un átomo es una constante cuyo valor es su propio nombre.
Los átomos son iguales si sus nombres son iguales.
A menudo se utilizan para expresar el estado de una operación, mediante el uso de valores como :ok y :error.
Elixir tiene una construcción llamada alias que comienzan en mayúsculas y también son átomos
Tipos de Datos - Nulo (nil)
En realidad, es otro átomo con significado especial que permite escribirse sin el uso de los dos puntos. El significado de este átomo es la ausencia de tipo.
Hay que tener presente que en funciones como Kernel.is_atom/1 usando una variable o el valor directo, siempre obtenemos true, ya que se trata de un átomo
Tipos de Datos - Cadenas
Las cadenas en Elixir están codificas en UTF-8 y encerradas en comillas dobles:
Las cadenas soportan salto de línea o secuencias de escape:
Tipos de Datos - Cadenas
MÓDULO STRING: Proporciona funciones para poder cambiar el texto a mayúscula o a minúscula e incluso capitalizar el texto. También podemos darle la vuelta al texto, obtener su tamaño, tomar el primer, el último u otro caracter de la cadena especificando su posición.
Tipos de Datos - Cadenas
La función String también nos permiten comprobar si el texto termina con un sufijo dado, o si comienza con un prefijo dado, incluso si contiene un trozo de texto dado.
Puedes ver estas y más funciones en la documentación del módulo String: https://hexdocs.pm/elixir/String.html
Sección 4:
Operaciones Básicas
Operaciones y comparaciones
Aritmética
Comparación
Comparación estricta
Operaciones y comparaciones
Concatenar cadenas
Booleanos
and, or, not
interpolación de cadenas
Sección 5:
Colecciones
Colecciones
Listas
Tuplas
Mapas
Colecciones - Listas
Listas: Son simples colecciones de valores, las cuales pueden incluír múltiples tipos de datos y pueden incluír valores no únicos.
Las listas son vectores de información heterogénea, es decir, puden contener información de distintos tipos, ya sean números, átomos, tuplas, estructuras, mapas u otras listas.
Se usa corchetes para especificar una lista de valores. Los valores pueden ser de cualquier tipo
Colecciones - Listas
Las listas en elixir son listas enlazadas, lo que significa que están representadas internamente en pares que contienen la cabeza y cola de una lista
La cabeza es el primer elemento de una lista y la cola es el resto de la lista: hd() y tl()hd es la abreviatura de “head” (cabeza en inglés), y tl es la abreviatura de “tail” (cola):
NOTA: Los operadores de lista nunca modifican la lista existente. Concatenar o eliminar elementos de una lista devuelve una nueva lista. De esta forma, se puede decir que las estructuras de datos de Elixir son inmutables .
Colecciones - Listas
ALGUNAS OPERACIONES QUE SE PUEDEN HACER CON LISTAS
concatenar dos o más listas:
añadir o sustraer elementos:
Insertar un elemento en una ubicación especfícia:
Eliminar un valor de acuerdo a una ubicación específica:
Colecciones - Listas
Listas de caracteres: Son un tipo específico de lista. Se trata de una lista homogénea de elementos representables como caracteres. Elixir detecta si una lista en su totalidad cumple con esta premisa para tratarla como lista de caracteres.
Si una lista está formada por enteros no negativos, donde cada entero representa un punto de código Unicode, la lista cumple ser Charlist (lista de caracteres)
Elixir usa comillas simples para definir listas de caracteres
Colecciones - Listas
Al igual que con el resto de listas, charlists también soportan la agregación de elementos, de modo que la concatenación se puede realizar de la siguiente forma:
Colecciones - Tuplas
Tuplas:
Son tipos de datos organizativos en elixir. Como las listas, las tuplas pueden contener cualquier valor.
A diferencia de las listas, no pueden incrementar ni decrementar su valor salvo por la redefinición compleata de su estructura
Las llaves indican el inicio y el fin de la definición de la tupla y los elementos separados por comas conforman su contenido.
NOTA: Al igual que las listas, las operaciones que se realizan en tuplas nunca modifican la existente. Agregar o elementos de una tupla devuelve una nueva tupla De esta forma, se puede decir que las estructuras de datos de Elixir son inmutables .
Colecciones - Tuplas
Colecciones - Tuplas
ALGUNAS OPERACIONES QUE SE PUEDEN HACER CON TUPLAS
Obtener un elemento de la tupla:
Insertar elementos al final de la tupla o en una ubicación específica
Cambiar un elemento de la tupla sin modificar el resto:
Eliminar un elemento de la tupla:
Convertir una tupla a lista:
Listas VS tuplas
Las listas se almacenan en la memoria como listas enlazadas. Acceder a la longitud de una lista es una operación lineal: necesitamos recorrer toda la lista para calcular su tamaño.
Las tuplas, por otro lado, se almacenan de forma contigua en la memoria. Esto significa que obtener el tamaño de la tupla o acceder a un elemento por índice es rápido. Sin embargo, actualizar o agregar elementos a las tuplas es costoso porque requiere crear una nueva tupla en la memoria:
Colecciones - Mapas
los mapas son estructuras de datos en donde cada elemento se almacena bajo una clave. Esta clave puede ser de cualquier tipo al igual que su contenido
los mapas se crean con la sintaxis %{} y los pares "llave, valor", se pueden expresar como:
atom key:
Acceder a la clave:
string key:
Acceder a la clave:
Colecciones - Mapas
A diferencia de las listas de palabras clave, los mapas son muy útiles con la coincidencia de patrones.
Un mapa coincide siempre y cuando las claves del patrón existan en el mapa dado. Por lo tanto, un mapa vacío coincide con todos los mapas
Si un elemento duplicado es agregado al mapa, este reemplazará al valor anterior:
Colecciones - Mapas
Hay una sintaxis especial para acceder a las claves que son átomos:
Además podemos cambiar la información contenida en el mapa de la siguiente forma:
NOTA: Esta sintaxis solo puede utilizarse para claves que ya existan en el mapa, de lo contrario mostrará un KeyError
Colecciones - Mapas
El módulo Map, proporciona una API con funciones convenientes para manipular mapas. Si necesitamos agregar un nuevo elemento al mapa, mediante la función Map.put_new/3 agrega el elemento sólo si no existe previamente en el mapa.
De igual forma como las colecciones ya vistas, podemos, obtener un elemento del mapa y convertir el mapa en una lista.
Colecciones - Mapas
Los mapas y las listas implementan el protocolo Enumerable, por lo que muchas funciones para trabajar con mapas se encuentran en el módulo Enum
Se puede reducir la función anónima anterior de la siguiente manera:
Colecciones - Listas
LISTAS DE PALABRAS CLAVE: En Elixir, cuando tenemos una lista de tuplas y el primer elemento de la tupla (es decir, la clave) es un átomo, lo llamamos lista de palabras clave:
Dado que las listas de palabras clave son listas, podemos utilizar todas las operaciones disponibles para las listas.
Sección 6:
Estructuras de Control
Estructuras de Control
if
unless
Estructuras de Control
case
Estructuras de Control
case
cond
Ejercicios : Conceptos Básicos
1 . Declarar 3 valores y determinen cual es el mayor. Pueden elegir la estructura de control que crean que les puede funcionar. Ejemplo: a=5, b= 36, c=-17 Respuesta: el mayor es b=36
2 . Dado 3 valores de los lados un triángulo, determinar si el triángulo es equilátero, isósceles o escaleno Ejemplo: a=44, b= 21, c=44 Respuesta: "El triángulo es equilátero"
Ejercicios : Conceptos Básicos
3. Dada la edad de una persona, determinar si es mayor de edad o no Ejemplo: edad = "23" Respuesta: "Eres mayor de edad"
Ejercicios : Colecciones
1. list_concat. ([1,2,3], [4,5,6]) # => [1,2,3,4,5,6]2. suma. (1, 2, 3) # => 6 3. pair_tuple_to_list.( { 8, 7 } ) #=> [ 8, 7 ] 4. Enum.map [1,2,3,4], fn x -> x + 2 end 5. Utilizar al menos, 3 funciones del módulo List en colecciones de tipo lista 6. Utilizar al menos, 3 funciones del módulo Tuple en colecciones de tipo tupla 7. Utilizar al menos, 3 funciones del módulo Map en colecciones de tipo map
¡Muchas gracias!