Vous pouvez créer un processus qui conservera le numéro actuel dans son état. Pour obtenir le prochain numéro, vous devez envoyer un message à ce processus et il renvoie le numéro suivant et l'enregistre dans son état. Voilà un exemple de mise en œuvre avec gen_server:
-module(acc_number).
-behavior(gen_server).
-export([start_link/0, get_number/0]).
-export([init/1, handle_call/3]).
-define(SERVER, ?MODULE).
-record(state, {number}).
start_link() ->
gen_server:start_link({local, ?SERVER}, ?MODULE, [], []).
get_number() ->
gen_server:call(?SERVER, get_number).
init([]) ->
{ok, #state{number = 0}}.
handle_call(get_number, _From, #state{number = Number}) ->
NextNumber = Number + 1,
{reply, NextNumber, #state{number = NextNumber}}.
Remarque: Dans l'exemple que je mis en œuvre que les callbacks qui sont utilisés pour résoudre la tâche. Vous devez implémenter tout le rappel de gen_server.
Donc, pour obtenir le numéro suivant, vous pouvez faire quelque chose comme ceci:
acc_number:start_link().
AccountNumber = acc_number:get_number().
Voyez-vous ces articles http://spawnlink.com/articles/tag/erlybank/index.html – ymn
Avez-vous essayé d'utiliser 'lists',' processes', 'mnesia',' tuples', .. e.ct. voir plus ici: http://learnyousomeerlang.com/content –