我在使用 GenStage 的演员表时遇到了麻烦。我正在尝试从我的代码的不同部分将数据提供给 Producer,但是当我尝试进行演员调用时,我收到此错误:
ModuleName.handle_cast/2 中没有匹配的函数子句
代码如下:
def new_entry(entry) do
GenStage.cast(__MODULE__, {:new_entry, entry})
end
def handle_cast({:new_entry, entry}, {queue, [_head | tail] = list, demand} = state) do
case length(list) > 2 do
true ->
new_list = tail ++ [entry]
dispatch_events(:queue.in(get_average(new_list), queue), new_list, demand, [])
false ->
new_list = list ++ [entry]
{:noreply, [], {queue, new_list, demand}}
end
end
defp dispatch_events(queue, list, demand, events) do
with d when d > 0 <- demand,
{{:value, event}, queue} <- :queue.out(queue) do
dispatch_events(queue, list, demand - 1, [event | events])
else
_ -> {:noreply, Enum.reverse(events), {queue, list, demand}}
end
end