Erlang中文论坛

标题: 利用宏定义 一系列的函数 [打印本页]

作者: high佬全    时间: 2015-1-25 23:28
标题: 利用宏定义 一系列的函数
  日常工作中,服务器与客户端往往要不断的更新,使得初始化时运行指定的函数,
这种时候我找到了一个好的例子。

一:定义一个宏
-define(INIT,[{module1, init, end},{module2,init,end},{module3,init,end}]).  %这些init/0 的作用都是客户连接时从
数据库中得到有关的数据后  用get(Key)放到相关的记录,而end/0的作用就是在客户断开时用 put(Key, Val)

二:当有客户端连接,服务器的初始化
init() ->
  Fun = fun ({M,F,_},_)  ->
                if F==init           %我觉得F这个判断好像多余,应该改为
                 M:init()             %F作为参数  如    Fun = fun ({M,F,_},_)  ->
                end                   %                                      M:init(F)
            end,                      %                                   end.      
list:foldl(Fun,[] ,INIT).      


三:客户断开连接
  end() ->
    Fun = fun ({M,_,F},_)  ->
                if F==end
                 M:end()
                end
            end,
list:foldl(Fun,[] ,INIT).

    当需要增加客户端的数据时,我们只需在宏后边再加入相关的元组
就是这么简单的一个宏就能大大的减轻我们的工作量。
如果需要有参数我们可以改成每个元组为 {module,init,element1,end,element2}。






欢迎光临 Erlang中文论坛 (https://bbs.erldoc.com/) Powered by Discuz! X3.3