English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
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.
La sintaxis para declarar una función es la siguiente:
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 -
-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.
-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.
-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.
-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.