首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Erlang gen_server强制转换错误的返回值

Erlang gen_server强制转换错误的返回值
EN

Stack Overflow用户
提问于 2011-04-29 20:32:10
回答 1查看 6.1K关注 0票数 5

我尝试将消息转换为gen_server:

代码语言:javascript
复制
 gen_server:cast({global, ID}, {watchers}).

处理程序是:

代码语言:javascript
复制
handle_cast({watchers}, State) ->
    case State#table_state.watchers of
    [] ->
        {reply, no_watchers, State};
    _ ->
        {reply, State#table_state.watchers, State}
    end;

但是,当我执行gen_server:cast时,gen_server终止,并出现错误:

代码语言:javascript
复制
=ERROR REPORT==== 29-Apr-2011::18:26:07 ===
** Generic server 1 terminating 
** Last message in was {'$gen_cast',{watchers}}
** When Server state == {table_state,1,"1",11,[]}
** Reason for termination == 
** {bad_return_value,{reply, no_watchers, {table_state,3,"3",11,[]}}}

为什么我会得到bad_return_value

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-29 20:53:30

您不能使用cast进行回复(请参阅gen_server documentation)。这就是转换异步消息而不是使用调用的全部意义所在。

在本例中,您希望返回一个回复,因此请改用gen_server:call/2

票数 13
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5832050

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档