Erlang OTP 自定义behaviour

本文深入探讨了Erlang行为(Behaviour)的用途与优势,包括代码复用、错误减少、成熟模式应用及避免无谓劳动等方面。通过定义自己的行为实例,展示了如何在实际代码中实现这一概念,以及如何使其更易于使用,提供了详细的说明和示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 
为什么要使用behaviour,如果您对erlang有所了解的话,就明白其中的好处。
可以做到代码通用,可以减少错误,可以使用很多成熟的久经考验的模式,可以减轻无谓的重复劳动等等。。
有些时候,你可能需要定义自己的behaviour,这可不仅仅是OTP的权力。
自己定义behaviour非常简单,仅仅需要几步。
下面是一个例子:


Erlang 代码
  1. -module(my_behaviour).  
  2.   
  3. -export([behaviour_info/1]).  
  4. behaviour_info(callbacks) ->  
  5.     [{init,1},  
  6.      {handle, 2}];  
  7. behaviour_info(_Other) ->  
  8.     undefined.  
  9.   
  10. -export([start/1, stop/0]).  
  11. start(Mod) ->  
  12.     State = Mod:init(0),  
  13.     {ok, State2} = Mod:handle(add,  State),  
  14.     io:format("state :~p~n", [State2]).  
  15. stop() ->  
  16.     stop.  



上面就定义了一个名叫my_behaviour的behaviour,其需要两个回调函数:init/1和handle/1,以后在使用这个 behaviour时,只需要export这两个回调函数即可。
如:


Erlang 代码
  1. -module(use_my_behaviour).  
  2. -behaviour(my_behaviour).  
  3. %%behaviour callback function  
  4. -export([init/1,  handle/2]).  
  5.   
  6. init(State) ->  
  7.       io:format("init ~p~n", [State]),  
  8.       State.  
  9.   
  10. handle(Request, State) ->  
  11.       io:format("handle request:~p state:~p", [Request, State]),  
  12.       State2 = State + 1,  
  13.       {ok, state2}.  

使用:


Erlang 代码
  1. $erl  
  2. > my_behaviour:start(use_my_behaviour).  



为了您的behaviour更易使用,您需要对behaviour的功用和回调函数的参数,返回值等进行详细的说明。具体可以参考OTP中 gen_server等behaviour的实现。


 

 

转载:http://clay.phpme.info/?app=article&id=1276

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值