English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Funciones de Erlang

Erlang es un lenguaje de programación funcional conocido, por lo que verá mucho sobre cómo funcionan las funciones en Erlang. Este capítulo introduce cómo realizar todas las operaciones utilizando funciones en Erlang.

Definir función

La sintaxis para declarar una función es la siguiente:

Sintaxis

NombreDeFunción(Patrón1…PatrónN) ->
Body;

Aquí,

  • FunctionName − El nombre de la función es un átomo (unicidad)

  • Pattern1... PatternN − Cada parámetro es un patrón. El número de parámetros N es la cantidad de parámetros de la función. El nombre de la función es único por módulo, nombre de la función y cantidad de parámetros definidos. Es decir, dos funciones con el mismo nombre en el mismo módulo, pero con diferentes cantidades de parámetros, también se consideran dos funciones diferentes.

  • Body − El cuerpo de una cláusula es una secuencia de expresiones separadas por comas (,)

El siguiente programa es un ejemplo simple del uso de una función -

Ejemplo

-module(helloworld). 
-export([add/2,start/0]). 
add(X,Y) -> 
   Z = X+Y, 
   io:fwrite("~w~n",[Z]). 
   
start() -> 
   add(5,6).

Tenga en cuenta los siguientes puntos del programa anterior-

  • Definimos dos funciones, una llamada add, que necesita 2 uno de los parámetros y la otra función es start;

  • Ambas funciones se definen utilizando la función export. Si no lo hiciéramos, no podríamos usar las funciones;

  • Una función puede llamar a otra función. En este caso, la función start llama a la función add;

El resultado de salida del código superior es -

11

Función Anónima

Una función anónima es una función que no está asociada con ningún nombre. En Erlang, hay herramientas para definir funciones anónimas. El siguiente programa es un ejemplo de una función anónima.

Ejemplo

-module(helloworld). 
-export([start/0]). 
start() -> 
   Fn = fun() -> 
      io:fwrite("Función Anónima") end, 
   Fn().

Para el ejemplo anterior, hay algunos puntos a tener en cuenta -

  • Las funciones anónimas se definen utilizando el keyword fun()

  • La función se asigna a una variable llamada Fn

  • La función se llama mediante el nombre de la variable

El resultado de salida del código superior es -

Función Anónima

Función con múltiples parámetros

Las funciones Erlang pueden definirse con cero o más parámetros. También es posible la sobrecarga de funciones, lo que permite definir una función con el mismo nombre siempre que tengan diferentes números de parámetros. En el siguiente ejemplo, cada definición de la función demo se realiza utilizando múltiples parámetros.

Código de ejemplo

-module(helloworld). 
-export([add/2,add/3,start/0]). 
add(X,Y) -> 
   Z = X+Y, 
   io:fwrite("~w~n",[Z]). 
   
add(X,Y,Z) -> 
   A = X+Y+Z, 
   io:fwrite("~w~n",[A]). 
 
start() ->
   add(5,6) 
   add(5,6,6).

En el programa anterior, definimos dos veces la función add. Pero la definición de la primera función add utiliza dos parámetros, y la definición de la segunda función add utiliza tres parámetros.

El resultado de salida del código superior es -

11
17

Función de secuencia

En Erlang, las funciones también tienen la capacidad de secuencia de protección. Esto no es nada especial, solo una expresión, que se ejecuta cuando se evalúa (calcula) como true.

La sintaxis para usar la función de secuencia de protección se muestra en el siguiente programa.

NombreDeFunción(Patrón1…PatrónN) [cuando Secuencia de Protección1]->
Body;

Aquí,

  • FunctionName − El nombre de la función es un átomo (unicidad)

  • Pattern1... PatternN − Cada parámetro es un patrón. El número de parámetros N es la cantidad de parámetros de la función. El nombre de la función es único por módulo, nombre de la función y cantidad de parámetros definidos. Es decir, dos funciones con el mismo nombre en el mismo módulo, pero con diferentes cantidades de parámetros, también se consideran dos funciones diferentes.

  • Body − El cuerpo de una cláusula es una secuencia de expresiones separadas por comas (,)

  • GuardSeq1 − Cuando se llama a la función, obtiene la expresión de cálculo.

El siguiente programa es un ejemplo simple de una función que utiliza una secuencia de protección.

Código de ejemplo

-module(helloworld). 
-export([add/1,start/0]). 
add(X) when X>3 -> 
   io:fwrite("~w~n",[X]). 
start() -> 
   add(4).

El resultado de salida del código superior es -

4

Si la función add se llama como add(3) Este programa generará un error.