현재 ETS를 사용하여 은행 계좌 관리 시스템을 만들고 있는데 현재와 저축 계좌를 보유하고 있습니다. erlang 변수가 불변이므로 일련 번호 계좌를 생성하고 보유 할 수있는 방법을 알 수 없습니다.erlang에서 계좌 번호는 어떻게 처리합니까?
계정 번호를 생성하고 저장하는 기능을 구현하면 다음에 계정을 만들 때 다음 계정 번호를 이전 계정 번호로 할당 할 수 있습니까?
현재 ETS를 사용하여 은행 계좌 관리 시스템을 만들고 있는데 현재와 저축 계좌를 보유하고 있습니다. erlang 변수가 불변이므로 일련 번호 계좌를 생성하고 보유 할 수있는 방법을 알 수 없습니다.erlang에서 계좌 번호는 어떻게 처리합니까?
계정 번호를 생성하고 저장하는 기능을 구현하면 다음에 계정을 만들 때 다음 계정 번호를 이전 계정 번호로 할당 할 수 있습니까?
현재 상태를 유지하는 프로세스를 만들 수 있습니다. 다음 번호를 얻으려면 해당 프로세스에 메시지를 보내야하며 다음 번호를 반환하고 상태로 저장하십시오. 즉 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}}.
주 : 예에서 나는 작업을 해결하는 데 사용됩니다 만 콜백을 구현했습니다. gen_server의 모든 콜백을 구현해야합니다.
그래서 당신은 같은 것을 할 수있는 다음 번호를 구하는 방법 는acc_number:start_link().
AccountNumber = acc_number:get_number().
위의 대답은 계좌 번호 할당을 관리하는 프로세스를 사용하여 매우 기능적 접근 방식을 설명합니다. 덜 순전히 기능적이지만 성능이 좋은 또 다른 방법은 이미 사용하고있는 ets 프레임 워크를 활용하는 것입니다. 다음 계정 번호를 ets 테이블에 넣고 ets:update_counter/3으로 증가/할당하십시오.
이 게시물이 보이십니까 http://spawnlink.com/articles/tag/erlybank/index.html – ymn
'lists','processes','mnesia','tuples', .. e.t.c를 사용해 보셨나요? 자세한 내용은 여기를 참조하십시오. http://learnyousomeerlang.com/content –