function - Erlang - 未定义的函数

标签 function exception erlang export

我正在尝试执行一个非常简单的 Erlang 代码,但它不起作用。 我尝试过毫无问题地执行一些 hello worlds,但不是我自己的代码。

-module(server).
%% Exported Functions
-export([start/0, process_requests/1]).
%% API Functions
start() ->
    ServerPid = spawn(server, process_requests, [[]]),
    register(myserver, ServerPid).
process_requests(Clients) ->
    receive
         {client_join_req, Name, From} ->
         NewClients = [From|Clients],  %% TODO: COMPLETE
            broadcast(NewClients, {join, Name}),
            process_requests(NewClients);  %% TODO: COMPLETE
        {client_leave_req, Name, From} ->
            NewClients = lists:delete(From, Clients),  %% TODO: COMPLETE
            broadcast(Clients, {leave, Name}),  %% TODO: COMPLETE
            process_requests(NewClients);  %% TODO: COMPLETE
        {send, Name, Text} ->
            broadcast(Clients, {message, Name, Text}),  %% TODO: COMPLETE
            process_requests(Clients)
end.
%% Local Functions
broadcast(PeerList, Message) ->
    Fun = fun(Peer) -> Peer ! Message end,
    lists:map(Fun, PeerList). 

编译结果:

5> c(server).
    {ok,server}
6> server:start().       
** exception error: undefined function server:start/0

最佳答案

您使用c/1编译代码,但忘记使用l/1将其加载到VM。虽然VM确实自动加载模块(尚未加载到VM的模块),但每次编译到新梁时它不会重新加载它们。

如果您在开发中经常这样做,您可能需要研究像 sync 这样的工具。 .

关于function - Erlang - 未定义的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12585612/

相关文章:

jquery - 解除绑定(bind)特定函数 jQuery

function - 指向 MATLAB 函数的指针?

javascript - NodeJS - 如何将变量发送到嵌套回调? (MongoDB 查找查询)

c - 函数以长度为 8 的数组作为参数

swift - 检查非可选值是否为零

c++ - 异常对象的空间在哪里,是堆还是栈,在不同的类中如何访问?

erlang - 搭建商业系统 : Pure Erlang or Erlang/OTP?

c++ - 异常安全服务器

interface - 在 Erlang 中实现接口(interface)

Erlang shell 在使用路径添加时忽略参数