high佬全 发表于 2015-1-25 23:28:46

利用宏定义 一系列的函数

日常工作中,服务器与客户端往往要不断的更新,使得初始化时运行指定的函数,
这种时候我找到了一个好的例子。

一:定义一个宏
-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}。

页: [1]
查看完整版本: 利用宏定义 一系列的函数