我想在Erlang中編寫一個函數,它將在接收循環中等待,然後產生其他進程。它需要能夠使用給定的用戶名創建流程。另外,如果沒有給出用戶名,則需要將它們命名爲「Anonymous1,Anonymous2,...」等。在erlang中註冊可變用戶名的過程
這是我到目前爲止有:
-module(masterNode).
%% ====================================================================
%% API functions
%% ====================================================================
-export([listen/0]).
%% ====================================================================
%% Internal functions
%% ====================================================================
listen() ->
receive
{UserNodeName, createNode} ->
Pid = spawn(userNode, listen, []),
register(UserNodeName, Pid),
io:format("User Node Created!~n"),
listen();
{createNode} ->
Pid = spawn(userNode, listen, []),
register(anonymous, Pid),
io:format("Anonymous User Node Created!~n"),
listen();
_ ->
io:format("Invalid syntax!.~n")
end.
我遇到兩個問題:
我不知道如何使用一個變量名的註冊過程用戶將提供。由於這個名稱可能每次都不相同,它必須是它們傳遞它的變量,但是register()函數需要一個原子作爲名稱。
我已經找到一種方法,以模式匹配,並創建一個匿名用戶,但我不知道怎麼每次遞增名稱。現在它很難被編碼爲「匿名」的原子。看起來像在大多數語言中,你可以創建一個全局變量,然後增加它,然後連接到名稱上。但我不確定我可以在這裏做到這一點。
對這兩個問題有何建議?