Erlang-macros
提供:Dev Guides
アーラン-マクロ
マクロは通常、インラインコードの置換に使用されます。 Erlangでは、マクロは次のステートメントで定義されます。
- -define(定数、置換)。
- -define(Func(Var1、Var2、..、Var)、Replacement)。
以下は、最初の構文を使用したマクロの例です-
例
-module(helloworld).
-export([start/0]).
-define(a,1).
start() ->
io:fwrite("~w",[?a]).
上記のプログラムから、「?」記号を使用してマクロが展開されることがわかります。 定数は、マクロで定義された値に置き換えられます。
上記のプログラムの出力は次のようになります-
出力
1
関数クラスを使用したマクロの例は次のとおりです-
例
-module(helloworld).
-export([start/0]).
-define(macro1(X,Y),{X+Y}).
start() ->
io:fwrite("~w",[?macro1(1,2)]).
上記のプログラムの出力は次のようになります-
出力
{3}
次の追加ステートメントは、マクロで利用可能です-
- * undef(Macro)*-マクロの定義を解除します。この後、マクロを呼び出すことはできません。
- * ifdef(Macro)*-マクロが定義されている場合にのみ、次の行を評価します。
- * ifndef(Macro)*-Macroが未定義の場合にのみ、次の行を評価します。
- else -ifdefまたはifndefステートメントの後に許可されます。 条件が偽の場合、elseに続くステートメントが評価されます。
- endif -ifdefまたはifndefステートメントの終了をマークします。
上記のステートメントを使用するときは、次のプログラムに示すように適切な方法で使用する必要があります。
-ifdef(<FlagName>).
-define(...).
-else.
-define(...).
-endif.