Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang 什么';我的gen_服务器实现有什么问题?_Erlang_Otp_Gen Server - Fatal编程技术网

Erlang 什么';我的gen_服务器实现有什么问题?

Erlang 什么';我的gen_服务器实现有什么问题?,erlang,otp,gen-server,Erlang,Otp,Gen Server,根据这本书,我尝试用gen_服务器重新实现kitty_服务器2。但出于某种原因,我得到了这个错误: 37> Cat1 = kitty_server3:order_cat(Pid, carl, brown, 2). Ordeirng cat!** exception exit: {{function_clause, [{gen,do_for_proc, [{ok,<0.162.0&

根据这本书,我尝试用gen_服务器重新实现kitty_服务器2。但出于某种原因,我得到了这个错误:

37> Cat1 = kitty_server3:order_cat(Pid, carl, brown, 2).
Ordeirng cat!** exception exit: {{function_clause,
                        [{gen,do_for_proc,
                             [{ok,<0.162.0>},#Fun<gen.0.132519590>],
                             [{file,"gen.erl"},{line,252}]},
                         {gen_server,call,2,[{file,"gen_server.erl"},{line,200}]},
                         {erl_eval,do_apply,6,[{file,"erl_eval.erl"},{line,673}]},
                         {erl_eval,expr,5,[{file,"erl_eval.erl"},{line,438}]},
                         {shell,exprs,7,[{file,"shell.erl"},{line,686}]},
                         {shell,eval_exprs,7,[{file,"shell.erl"},{line,641}]},
                         {shell,eval_loop,3,[{file,"shell.erl"},{line,626}]}]},
                    {gen_server,call,[{ok,<0.162.0>},{order,carl,brown,2}]}}
     in function  gen_server:call/2 (gen_server.erl, line 204)

有什么建议吗?

这对我来说非常好:

Eshell V7.2.1  (abort with ^G)
1> l(kitty_server3).
{module,kitty_server3}
2> {ok, Pid} = kitty_server3:start().
{ok,<0.36.0>}
3> kitty_server3:order_cat(Pid, carl, brown, 2).
Ordeirng cat!Handling cat order..1..{cat,carl,brown,2}
4>
Eshell V7.2.1(使用^G中止)
1> l(kitty_服务器3)。
{模块,kitty_server3}
2> {ok,Pid}=kitty_server3:start()。
{好的,}
3> kitty_服务器3:订购猫(Pid、carl、brown、2)。
命令猫!处理猫的订单..1..{猫,卡尔,布朗,2}
4>

可能您做了一些更改,没有正确地重新加载模块,或者您的Erlang shell有一些旧的变量绑定?

不要添加您自己的
io:format
调用来帮助您进行调试,只需更改最后一个参数your
genu server:start
调用来启用跟踪,例如:
genu server:start(?module,{[],0}[{debug,[trace]}])。
或者,您可以调用
sys:trace(Pid,true)。
在调用
{ok,Pid}=kitty_server3:start()。
假设服务器启动正常。我正在做:
Pid=kitty_server3:start()
-忘记它现在返回一个元组。谢谢!
Eshell V7.2.1  (abort with ^G)
1> l(kitty_server3).
{module,kitty_server3}
2> {ok, Pid} = kitty_server3:start().
{ok,<0.36.0>}
3> kitty_server3:order_cat(Pid, carl, brown, 2).
Ordeirng cat!Handling cat order..1..{cat,carl,brown,2}
4>