Erlang:列出所有记录

Erlang:列出所有记录,erlang,Erlang,请帮助我,顺便说一句,我的英语不是很好。我想列出为gen_服务器创建的所有记录,例如,如果a具有以下代码: -module(mod). -record(person, {name, phone}). start_link(Param1, Param2) -> gen_server:start_link(?MODULE, [Param1, Param2], []). init([Param1, Param2]) -> {ok, #person{name=Param1,

请帮助我,顺便说一句,我的英语不是很好。我想列出为gen_服务器创建的所有记录,例如,如果a具有以下代码:

-module(mod).
-record(person, {name, phone}).
start_link(Param1, Param2) -> 
    gen_server:start_link(?MODULE, [Param1, Param2], []).

init([Param1, Param2]) ->
   {ok, #person{name=Param1,phone=Param2}}.
我可以打电话:

mod:start_link(Maria,22222).
mod:start_link(Jose,9348).
mod:start_link(lol,232).

之后,我希望看到我创建的所有记录,并将其放在列表中。我如何才能做到这一点?

没有机会以这种方式获取信息:每台gen_服务器有一条记录,服务器一死信息就会丢失。如果您需要这些信息,您应该添加一个专用的进程来保存信息{Pid,Record}或记录编号。。。。在初始化和终止功能期间,可以通过诸如记录管理器:创建/1和记录管理器:删除/1等功能更新信息。您也可以将它们存储在共享的ets中。

您应该阅读此文档:

启动链接/3只需启动gen_服务器,就可以存储记录数据

-module(record_make).
-compile(export_all).
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2, code_change/3]).
-behaviour(gen_server).
-define(SERVER, ?MODULE). 

-record(state, {persons = []}).
-record(person, {name, phone}).

start_link() ->
    gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).

init([]) ->
    {ok, #state{}}.

handle_call({create, Name, Phone}, _Frome, State = #state{persons = Persons}) ->
    NewPerson = #person{name = Name, phone = Phone},
    {reply, ok, State#state{persons = [NewPerson | Persons]}};
handle_call(list, _From, State = #state{persons = Persons}) ->
    io:format("~p~n", [Persons]),
    {reply, ok, State};
handle_call(_Request, _From, State) ->
    Reply = ok, 
    {reply, Reply, State}.

handle_cast(_Msg, State) ->
    {noreply, State}.

handle_info(_Info, State) ->
    {noreply, State}.

terminate(_Reason, _State) ->
    ok. 

code_change(_OldVsn, State, _Extra) ->
    {ok, State}.



create(Name, Phone) ->
    gen_server:call(?MODULE, {create, Name, Phone}).
list() ->
    gen_server:call(?MODULE, list).
您可以这样做:

1> c(record_make)
1> .
{ok,record_make}
2> record_make:start_link().
{ok,<0.41.0>}
3> record_make:create("yang", "123").
ok
4> record_make:create("zhang", "456").
ok
5> record_make:list().
[{person,"zhang","456"},{person,"yang","123"}]
ok
6>