aprendiendo ( Erlang ).

lunes, 4 de abril de 2011

Macros

| 0 comentarios |

El modo para definir macros en Erlang es:
-define(nombre, reemplazo).
-define(nombreFuncion(Vble1,..., VbleN), reemplazo).
Las macros son expandidas por el preprocesador de Erlang epp cuando encuentra una expresión del tipo ?nombreMacro. Es decir, son constantes que el preprocesador se encargará de reemplazar en tiempo de precompilado.
También tenemos macros parametrizadas, la segunda definición, que nos permite llevar a otro nivel el uso de las macros. En este caso, se usan como si de funciones se trataran ?nombreFuncion(Vble1,...,VbleN).
El siguiente módulo, macros.erl ilustra el uso de macros.
-module(macros).
-export([version/0, doble/1, file/0, module/0, line/0]).
-define(VERSION, "1.2.4").
-define(MULTIPLICADOR(X,Y), X*Y).

version() ->
    io:format("Versión: ~s ~n ", [?VERSION] ).
    
doble(X) ->
    ?MULTIPLICADOR(X,X).

file() ->
    io:format("File: ~s ~n ", [?FILE] ).

module() ->
    io:format("Module: ~s ~n ", [?MODULE] ).

line() ->
    io:format("Line: ~p ~n ", [?LINE] ).
Veamos los resultados:
1> c(macros).
{ok,macros}
2> macros:version().
1.2.4ok
3> macros:doble(4).
16
4> macros:module().
Module: macros 
 ok
5> macros:file().  
File: ./macros.erl 
 ok
6> macros:line().
Line: 26 
En el ejemplo, no solo podemos ver la definición y uso de macros, sino que también podemos observar las macros predefinidas en Erlang. Estas son:
  • ?FILE fichero actual.
  • ?MODULE nombre del módulo actual.
  • ?LINE número de línea actual.
En conclusión, las macros nos permiten definir constantes y ahorrarnos códigos repetitivos.

Publicar un comentario

0 comentarios:

 
Licencia Creative Commons
Aprendiendo Erlang por Verdi se encuentra bajo una Licencia Creative Commons Atribución-NoComercial-CompartirIgual 3.0 Unported.