Erlang编程之适配器变量

-module(adapter_db1).
-export([new/1,store/3,lookup/2]).
new(dict)->
{?MODULE,dict,dict:new()};
new(lists)->
{?MODULE,list,[]}.

store(Key,Val,{ ,dict,D})->
D1=dict:store(Key,Val,D),
{?MODULE,dict,D1};
store(Key,Val,{
,list,L})->
L1=lists:keystore(Key,1,L,{Key,Val}),
{?MODULE,list,L1}.

lookup(Key,{_,dict,D})->
dict:find(Key,D);
lookup(Key,{_list,L})->
case lists:keysearch(Key,1,L) of
{value,{Key,Val}}->{ok,Val};
false ->error
end.
-module(adapter_db1_test).
-export([test/0]).
-import(adapter_db1,[new/1,store/2,lookup/1]).
test()->
M0=new(dict),
M1=M0:store(key1,val1),
M2=M1:store(key2,val2),
{ok,val1}=M2:lookup(key1),
{ok,val2}=M2:lookup(key2),
error=M2:lookup(nokey),
N0=new(lists),
N1=N0:store(key1,val1),
N2=N1:store(key2,val2),
{ok,val1}=N2:lookup(key1),
{ok,val2}=N2:lookup(key2),
error=N2:lookup(nokey),
在这里插入图片描述

ok.

猜你喜欢

转载自blog.csdn.net/m0_38127487/article/details/113751001