3.3.17 Erlang预处理程序epp
预编译文件:complie:file(M,['p']) ,保存M.erl到M.P
3.3.18 宏
-define(Constant, Replacement).
-define(Func(Var1,Var2,...Var), Replacement).
代码中用?Constant, ?Func代替,即可替换
系统已经预定义宏:
?FILE:当前文件名
?MODULE:当前模块名
?LINE:当前行号
eg:
-defin(macro1(X, Y), {a,X,Y}).
foo(A) ->?macro1(A+10, b).
被替换为
foo(A) -> {a, A+10,b}.
3.3.19包含文件
-include(filename). //一般为.hrl扩展文件名
-include_lib(Name). //库文件
eg:
-include_lib("kernel/include/file.hrl").
3.4并发编程concurrent
(1)创建进程spawn
Pid = spawn(F). //F为参数为0的函数,创建了对F求值的并行进程,通过Pid可以访问进程
(2)向进程发送消息
Pid !Msg
(3)进程接收消息receive
receive
Msg1 [when Guard1] ->
Expr_seq1;
Msg2 [when Guard2] ->
Expr_seq2;
....
[after TimeOutTime -> //超时处理
Timeout_Expr_seq]
end.