Comparte esta página

Aprende X en Y minutos

Donde X=erlang

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.

## 1.-Variables y coincidencia de patrones.

2. Programación secuencial.

### Compila el código en el archivo geometry.erl. c (geometría). {ok, geometría}

No nos detendremos en el operador =: = aquí; Solo tenga en cuenta que está acostumbrado a comprueba si dos expresiones de Erlang tienen el mismo valor * y * del mismo tipo. Contrasta este comportamiento con el del operador ==:

1 + 2 =: = 3.% true 1 + 2 =: = 3.0. % false 1 + 2 == 3.0. % true

Una secuencia de guardia es una guardia individual o una serie de guardias, separadas por punto y coma (;). La secuencia de guardia G1; G2; ...; Gn es verdadero si en menos uno de los guardias G1,G2, …, Gn se evalúa como true.

ispet (A) cuando isatom (A), (A =: = dog); (A =: = cat) -> true; is_pet (A) -> false.

-record (todo, { status = recordatorio,% valor predeterminado quien = joe, texto }).

rr ("records.hrl”). % [que hacer]

filter devuelve una lista de todos los elementos X en una lista L para la cual P (X) es true.

filter(P, [H|T]) -> case P(H) of true -> [H|filter(P, T)]; false -> filter(P, T) end; filter(P, []) -> []. filter(fun(X) -> X rem 2 == 0 end, [1, 2, 3, 4]). % [2, 4]

expresiones if.

max(X, Y) -> if X > Y -> X; X < Y -> Y; true -> nil end.

Advertencia: al menos uno de los guardias en la expresión if debe evaluar a true; de lo contrario, se generará una excepción.

3. Excepciones.

4. Concurrencia

F = diversión () -> 2 + 2 final. % #Fun spawn (F). % <0.44.0>

-module (calcular Geometría). -compile (export_all). calculateArea () -> recibir {rectángulo, W, H} -> W * H; {circle, R} -> 3.14 * R * R; _ -> io: format (“Solo podemos calcular el área de rectángulos o círculos”) end.

5. Prueba con EUnit

fib (0) -> 1; fib (1) -> 1; fib (N) when N> 1 -> fib (N-1) + fib (N-2).

fibtest () -> [? assert (fib (0) =: = 1), ? _assert (fib (1) =: = 1), ? _assert (fib (2) =: = 2), ? _assert (fib (3) =: = 3), ? _assert (fib (4) =: = 5), ? _assert (fib (5) =: = 8), ? _assertException (error, functionclause, fib (-1)), ? _assert (fib (31) =: = 2178309) ]


¿Tienes una sugerencia o rectificación? Abre un issue en el repositorio de Github, o haz un pull request tu mismo

Originalmente contribuido por Giovanni Cappellotto, y actualizado por 0 colaborador(es).