Я пытаюсь использовать Erlang / ets для хранения / обновления различной информации путем сопоставления с образцом полученных данных.Вот код
start() ->
S = ets:new(test,[]),
register(proc,spawn(fun() -> receive_data(S) end)).
receive_data(S) ->
receive
{see,A} -> ets:insert(S,{cycle,A}) ;
[[f,c],Fcd,Fca,_,_] -> ets:insert(S,{flag_c,Fcd,Fca});
[[b],Bd,Ba,_,_] -> ets:insert(S,{ball,Bd,Ba})
end,
receive_data(S).
Здесь A - номер цикла, [f, c] - флаг центра, [b] - шар, а Fcd, Fca, Bd, Ba - направления и угол флага и шара отигрок.
Процесс отправителя отправляет эту информацию.Здесь сопоставление с образцом работает правильно , что я проверил, печатая значения A, Fcd, Fca..etc.Я считаю, что с использованием Erlang / ets что-то не так.
Когда я запускаю этот код, я получаю такую ошибку
Error in process <0.48.0> with exit value: {badarg,[{ets,insert,[16400,{cycle,7}]},{single,receive_data,1}]
Может кто-нибудь сказать мне, что с этимкод и как исправить эту проблему?