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

Erlang マクロ(Macros)

マクロは通常、インラインコードの置き換えに使用されます。Erlangでは、以下の文でマクロが定義されます。

  • - define(Constant, Replacement)。

  • -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) −マクロが未定義の場合にのみ評価される以下の行を評価します。

  • else−ifdefまたはifndef文の後に許可されています。条件が偽であれば、elseの後に評価される文が評価されます。

  • endif −ifdefまたはifndef文の終わりをマークするマーク記号(-)を使用します。

上記の文を利用する場合、以下のプログラムに示される正しい方法で使用してください。

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