erlang 随笔

(1)

删除进程字典中x键的值 erlang:put(x,undefined).  就是把值改为undefined就Ok.

(2)

ets:match 匹配记录的时候,_='_' 可以代表任意多的键值对,匹配非记录的时候 '_' 只能代表一个term.

(3)

类似 lists:map/lists:foreach/lists:splitwith 调用的fun里面,不能进行when 断言,单独的fun里面也不能

(4)

 1 test24() ->
 2     A = #ets_base{id=1,ic=1,ib=3,ia=4},
 3     A1 = #ets_base{id=2,ic=2,ib=4,ia=5},
 4     A2 = #ets_base{id=3,ic=4,ib=5,ia=6},
 5     get_min_key(1,[A,A1,A2]).
 6 
 7 
 8 get_min_key(N,Info) ->
 9     case lists:keyfind(N,#ets_base.ic,Info) of
10         false ->
11             N;
12         _ ->
13             get_min_key(N+1,Info)
14     end;
15 get_min_key(N,Info) when N =:= 2 ->
16     [].

erlang查找是按顺序的,上面的2个get_min_key 反过来的话结果就不一样了。

(6)

要非常注意同步问题,gen_server的state、ets表、进程字典、数据库的同步问题。

(7)

注意使用赋值匹配。

(8)

行为进程模块执行到 terminate 的时候不可以再调用相应的进程cast/call等,这个时候已经不响应这些调用了

 

posted @ 2014-03-08 21:01  风华一指流砂,苍老一段年华  Views(247)  Comments(0Edit  收藏  举报