日常工作中,服务器与客户端往往要不断的更新,使得初始化时运行指定的函数,
这种时候我找到了一个好的例子。
一:定义一个宏
-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}。
|