设为首页收藏本站

Erlang中文论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 18568|回复: 0

利用宏定义 一系列的函数

[复制链接]
发表于 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}。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|Erldoc.com  

GMT+8, 2024-3-29 01:49 , Processed in 0.329807 second(s), 7 queries , File On.

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表