Erlang - Macro
Le macro vengono generalmente utilizzate per la sostituzione del codice inline. In Erlang, le macro vengono definite tramite le seguenti istruzioni.
- -define (Costante, Sostituzione).
- -define (Func (Var1, Var2, .., Var), Replacement).
Di seguito è riportato un esempio di macro che utilizzano la prima sintassi:
Esempio
-module(helloworld).
-export([start/0]).
-define(a,1).
start() ->
io:fwrite("~w",[?a]).
Dal programma sopra puoi vedere che la macro viene espansa usando il '?' simbolo. La costante viene sostituita dal valore definito nella macro.
L'output del programma di cui sopra sarà:
Produzione
1
Un esempio di una macro che utilizza la classe di funzione è il seguente:
Esempio
-module(helloworld).
-export([start/0]).
-define(macro1(X,Y),{X+Y}).
start() ->
io:fwrite("~w",[?macro1(1,2)]).
L'output del programma di cui sopra sarà:
Produzione
{3}
Le seguenti istruzioni aggiuntive sono disponibili per le macro:
undef(Macro)- Annulla la definizione della macro; dopo questo non è possibile chiamare la macro.
ifdef(Macro) - Valuta le seguenti righe solo se è stata definita la Macro.
ifndef(Macro) - Valuta le seguenti righe solo se Macro non è definita.
else- Consentito dopo un'istruzione ifdef o ifndef. Se la condizione era falsa, vengono valutate le istruzioni seguenti.
endif - Contrassegna la fine di un'istruzione ifdef o ifndef.
Quando si utilizzano le istruzioni precedenti, è necessario utilizzarle nel modo corretto, come mostrato nel programma seguente.
-ifdef(<FlagName>).
-define(...).
-else.
-define(...).
-endif.