erlang 自定义behaviour

阅读: 评论:0

erlang 自定义behaviour

erlang 自定义behaviour

参考文章:

关于Erlang中的behaviour

erlang 如何自定义 behaviour

behaviour 定义区别

例子中的behaviour区别

my_behaviour 自定义behaviour方式没有类型规范的约束,约束只有函数名和元数
test_behaviour 自定义behaviour方式简化了一些

源代码

-module(my_behaviour).
-export([behaviour_info/1]).
-export([start/1, stop/0]).behaviour_info(callbacks) ->[ {init, 1},{handle, 2}];
behaviour_info(_Other) ->undefined.start(Mod) ->State = Mod:init(0),{ok, State2} = Mod:handle(add, State),io:format("state : ~p~n", [State2]).stop() ->stop.
-module(test_behaviour).
-export([start/1, stop/0]).
-callback init( number() ) -> number().
-callback handle( Event :: atom(), ARG::number() ) -> number().
start(Mod) ->State = Mod:init(0),{ok, State2} = Mod:handle(add, State),io:format("state : ~p~n", [State2]).stop() ->stop.
-module(use_my_behaviour).
% -behaviour(my_behaviour).
-behaviour(test_behaviour).
-export([init/1, handle/2]).init(State) ->io:format("init ~p~n", [State]),State.handle(Request, State) ->io:format("handle request:~p state:~p~n", [Request, State]),State2 = State + 1,{ok, State2}.

结果

结果一:

 

c(my_behaviour).
{ok,my_behaviour}
5> c(use_my_behaviour).
{ok,use_my_behaviour}
6> my_behaviour:start(use_my_behaviour).
init 0
handle request:add state:0
state : 1
ok


结果二:

c(test_behaviour).
{ok,test_behaviour}
16> c(use_my_behaviour).
{ok,use_my_behaviour}
17> test_behaviour:start(use_my_behaviour).
init 0
handle request:add state:0
state : 1
ok

转载于:.html

本文发布于:2024-02-02 07:22:41,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170682976042246.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:自定义   erlang   behaviour
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23