什么在? Erlang中的operator / prefix是什么意思?

时间:2011-09-15 11:21:50

标签: erlang

?MODULE 中的问号是什么(可以在Mochiweb make命令的所有生成代码中看到)是什么意思?

-export([start/1, stop/0, loop/2]).

start(Options) ->
    {DocRoot, Options1} = get_option(docroot, Options),
       Loop = fun (Req) ->
               ?MODULE:loop(Req, DocRoot)
       end,
    mochiweb_http:start([{name, ?MODULE}, {loop, Loop} | Options1]).

stop() ->
    mochiweb_http:stop(?MODULE).

loop(Req, DocRoot) ->
    ...

2 个答案:

答案 0 :(得分:19)

表示a preprocessor macro?MODULE是扩展为当前模块名称的预定义宏常量之一。

答案 1 :(得分:9)

这就是我们在Erlang中表示MACROS的方式。在编译时,这些宏将替换为实际含义。他们可以节省重写代码或者抽象出一个你可能在未改变代码的情况下改变的参数(只需要重新编译依赖于MACRO的源代码)。

Forexample:

-module(square_plus).
-compile(export_all).
-define(SQUARE(X),X * X).

add_to_square(This,Number)-> ?SQUARE(This) + Number.

与:

相同
-module(square_plus).
-compile(export_all).

add_to_square(This,Number)-> (This * This) + Number.