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