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

Macro (Macros) Erlang

Le macro sono generalmente utilizzate per sostituire il codice inline. In Erlang, le macro sono definite con la seguente istruzione.

  • - define(Constant, Replacement).

  • -define(Func(Var1, Var2,.., Var), Replacement).

Ecco un esempio di macro utilizzando la prima sintassi-

Esempio online

-module(helloworld). 
-export([start/0]). 
-define(a,1). 
start() -> 
   io:fwrite("~w",[?a]).

Dal programma sopra, è possibile vedere che l'espansione '?' è stata utilizzata nella macro. Simbolo. Le costanti vengono sostituite con i valori definiti nella macro.

L'output del programma sopra sarà-

Risultato di output

1

Esempi di utilizzo delle macro di classe funzionale come segue-

Esempio online

-module(helloworld). 
-export([start/0]). 
-define(macro1(X,Y),{X+Y}). 
start() ->
   io:fwrite("~w",[?macro1(1,2)]).

L'output del programma sopra sarà-

Risultato di output

{3}

Le seguenti istruzioni aggiuntive possono essere utilizzate per i macro-

  • undef(Macro)−Macro non definito; da questo punto in poi, non potrai chiamare il macro.

  • ifdef(Macro) −Valuta le seguenti righe solo se è definito il macro.

  • ifndef(Macro) −Valuta le seguenti righe solo se non è definito il macro.

  • else−Permette dopo l'istruzione ifdef o ifndef. Se la condizione è falsa, viene valutata l'istruzione successiva di else.

  • endif −Marchio di fine della frase delle istruzioni ifdef o ifndef.

Quando si utilizzano le seguenti istruzioni, è necessario utilizzarle nel modo corretto come mostrato nel seguente programma.

-ifdef(<NomeFlag>).
-define(...).
-else.
-define(...).
-endif.