2

我在使用 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
4

0 回答 0