mirror of
https://github.com/adambard/learnxinyminutes-docs.git
synced 2024-12-01 00:43:00 +03:00
94 lines
4.2 KiB
Erlang
94 lines
4.2 KiB
Erlang
|
---
|
||
|
language: Erlang
|
||
|
lang: es-es
|
||
|
contributors:
|
||
|
["Giovanni Cappellotto", "http://www.focustheweb.com/"]
|
||
|
translators:
|
||
|
- ["Ernesto Pelayo", "http://github.com/ErnestoPelayo"]
|
||
|
filename: learnerlang.erl
|
||
|
---
|
||
|
# Erlang
|
||
|
% Signo de porcentaje inicia un comentario de una línea.
|
||
|
|
||
|
%% Se usarán dos por ciento de caracteres para comentar funciones.
|
||
|
|
||
|
%%% Se usarán tres por ciento de caracteres para comentar los módulos.
|
||
|
|
||
|
### Utilizamos tres tipos de puntuación en Erlang.
|
||
|
|
||
|
+ **Comas (`,`)** argumentos separados en llamadas a funciones, constructores de
|
||
|
datos y patrones.
|
||
|
|
||
|
+ **Periodos (`.`)** (seguido de espacios en blanco) separa funciones completas y
|
||
|
expresiones en el shell.
|
||
|
|
||
|
+ **Semicolons (`;`)** cláusulas separadas. Encontramos cláusulas en varios contextos: de definiciones de funciones y en **`case`**,**` if`**, **`try..catch`**, y **` receive`** de expresiones.
|
||
|
|
||
|
## 1.-Variables y coincidencia de patrones.
|
||
|
|
||
|
|
||
|
- En Erlang, las nuevas variables están vinculadas con una instrucción **`=`**.
|
||
|
>**Num = 42.**
|
||
|
|
||
|
- Todos los nombres de variables deben comenzar con una letra mayúscula.
|
||
|
|
||
|
- Erlang tiene variables de asignación única; si intentas asignar un diferente de valor a la variable **`Num`**, obtendrá un error.
|
||
|
Num = 43. **error de excepción**: no coincide con el valor del lado derecho 43
|
||
|
|
||
|
- En la mayoría de los idiomas, **`=`** denota una declaración de asignación. En Erlang, sin embargo,**`=`** denota una operación de coincidencia de patrones.
|
||
|
|
||
|
- Cuando se usa una variable vacía en el del lado izquierdo del operador `=` to está vinculado (asignado), pero cuando está atado variable se usa en el lado izquierdo, se observa el siguiente comportamiento.
|
||
|
>**`Lhs = Rhs`** realmente significa esto: evaluar el lado derecho (**` Rhs`**), y luego coincide con el resultado contra el patrón en el lado izquierdo (**`Lhs`**).
|
||
|
>**Num = 7 * 6.**
|
||
|
|
||
|
- Número de punto flotante.
|
||
|
Pi = 3.14159.
|
||
|
|
||
|
- Los átomos se usan para representar diferentes valores constantes no numéricos.
|
||
|
|
||
|
- Átomos comienza con letras minúsculas, seguido de una secuencia de caracteres
|
||
|
|
||
|
- alfanuméricos de caracteres o el signo de subrayado (**`_`**) o en (**` @ `**).
|
||
|
>**Hola = hola.**
|
||
|
**OtherNode = ejemplo @ nodo.**
|
||
|
|
||
|
- Los átomos con valores no alfanuméricos se pueden escribir al encerrar los átomos con apóstrofes.
|
||
|
>**AtomWithSpace = 'algún átomo con espacio'.**
|
||
|
|
||
|
+ Tuples son similares a las estructuras en C.
|
||
|
>**Point = {point, 10, 45}.**
|
||
|
|
||
|
- Si queremos extraer algunos valores de una tupla, usamos el patrón de coincidencia
|
||
|
operador **`=`**.
|
||
|
> **{punto, X, Y} = Punto. % X = 10, Y = 45**
|
||
|
|
||
|
- Podemos usar **`_`** como marcador de posición para variables que no nos interesan.
|
||
|
|
||
|
- El símbolo **`_`** se llama una variable anónima. A diferencia de las variables regulares,varias apariciones de `_` en el mismo patrón no tienen que vincularse a mismo valor.
|
||
|
>**Person = {person, {name, {first, joe}, {last, armstrong}}, {footsize, 42}}.**
|
||
|
**{_, {_, {_, who }, _}, _} = Persona. % Who = joe**
|
||
|
|
||
|
+ Creamos una lista al encerrar los elementos de la lista entre corchetes y separándolos con comas.
|
||
|
|
||
|
+ Los elementos individuales de una lista pueden ser de cualquier tipo.
|
||
|
|
||
|
- El primer elemento de una lista es el encabezado de la lista. Si te imaginas eliminar del encabezado de la lista, lo que queda se llama cola de la lista.
|
||
|
>**ThingsToBuy = [{manzanas, 10}, {peras, 6}, {leche, 3}].**
|
||
|
|
||
|
- Si `T` es una lista, entonces **` [H | T] `** también es una lista, con la cabeza **` H`** y la cola **`T`**.
|
||
|
|
||
|
+ La barra vertical (**`|`**) separa el encabezado de una lista de su cola.
|
||
|
**`[]`** es la lista vacía.
|
||
|
|
||
|
+ Podemos extraer elementos de una lista con una operación de coincidencia de
|
||
|
patrones. Si nosotros tiene una lista no vacía **`L`**, luego la expresión **` [X | Y] = L`**, donde **`X`** y **` Y`** son variables independientes, extraerán el encabezado de la lista en **`X`** y la cola de la lista en **`Y`**.
|
||
|
>**[FirstThing | OtherThingsToBuy] = ThingsToBuy.**
|
||
|
**FirstThing = {manzanas, 10}**
|
||
|
**OtherThingsToBuy = [{peras, 6}, {leche, 3}]**
|
||
|
|
||
|
+ No hay cadenas en Erlang. Las cadenas son realmente solo listas de enteros.
|
||
|
|
||
|
+ Las cadenas están entre comillas dobles (**`" `**).
|
||
|
>**Nombre = "Hola".
|
||
|
[72, 101, 108, 108, 111] = "Hola".**
|