为什么我会使用GenServer“bad_cast”?

时间:2016-01-24 07:53:50

标签: elixir

elixir的新手....所以我正在输入 iex server.ex 以使用StackServer启动elixir环境。 (我正在使用kiex和kerl设置灵丹妙药,如果这有所不同)。

我做:

{:ok, pid} = GenServer.start_link(StackServer, [5, "cat", 9])  #line 1
:ok        = GenServer.cast(pid, {:push, 2}) #line 2

第1行很好,但是当我在第2行上面时,我收到以下错误:

23:50:04.491 [error] GenServer #PID<0.64.0> terminating
** (stop) bad cast: {:push, 2}
    lib/gen_server.ex:432: StackServer.handle_cast/2
    (stdlib) gen_server.erl:615: :gen_server.try_dispatch/4
    (stdlib) gen_server.erl:681: :gen_server.handle_msg/5
    (stdlib) proc_lib.erl:240: :proc_lib.init_p_do_apply/3
Last message: {:"$gen_cast", {:push, 2}}
State: [5, "cat", 9]

错误意味着什么,我做错了什么?

server.ex的源代码

defmodule StackServer do
  use GenServer

  def handle_call(:pop, _from, [last|rest]) do
    {:reply, last, rest}
  end

  def handle_cast({:push, value}, stack) do
    {:noreply, [value|stack]}
  end
end

#{:ok,pid} = GenServer.start_link(StackServer,[5,“cat”,9])    #:ok = GenServer.cast(pid,{:push,2})

编辑:

我在Erlang上使用elixir 1.1.1(SMP,ASYNC_THREADS,HIPE)(BEAM)模拟器版本7.2,在Ubuntu Linux 14.04上使用erlang OTP 18

0 个答案:

没有答案