Я использую API очереди и столкнулся с ошибками, которые приводили к сбою моей программы.
Сначала я выбираю очередь из словаря, который возвращает ее в распечатке
Выбранная очередь [{[], []}]
Это нормально?Правильно ли создана очередь?
Затем, когда я пытаюсь добавить в очередь или получить ее длину, я получаю ошибку badargs на обоих.
TorrentDownloadQueue = dict:fetch(torrentDownloadQueue, State),
io:format("The fetched queue is ~p~n", [dict:fetch(torrentDownloadQueue, State)]),
% Add the item to the front of the queue (main torrent upload queue)
TorrentDownloadQueue2 = queue:in_r(Time, TorrentDownloadQueue),
% Get the lenght of the downloadQueue
TorrentDownloadQueueLength = queue:len(TorrentDownloadQueue2),
Когда я пытаюсь вставить значение 10ошибка:
** Причина прекращения == ** {badarg, [{queue, in_r, [10, [{[], []}]]}, {ph_speed_calculator, handle_cast,2}, {gen_server, handle_msg, 5}, {proc_lib, init_p_do_apply, 3}]} ** исключение: ошибка в очереди функций: in_r / 2 вызывается как очередь: in_r (10, [{[], []}]) при вызове из ph_speed_calculator: handle_cast / 2 при вызове из gen_server: handle_msg / 5 при вызове из proc_lib: init_p_do_apply / 3 13>
Это ошибка для in_r, но я получаю ошибку badargsдля звонка Лен тоже.
Что плохого в том, как я их называю, или неправильная начальная очередь?Я создаю очередь следующим образом и добавляю ее в словарь
TorrentDownloadQueue = queue:new(),
TorrentUploadQueue = queue:new(),
D4 = dict:store(torrentDownloadQueue, [TorrentDownloadQueue], D3),
D5 = dict:store(torrentUploadQueue, [TorrentUploadQueue], D4),
Понятия не имею, что я делаю неправильно.