【问题标题】:Erlang compiler errorErlang 编译器错误
【发布时间】:2010-10-11 09:25:36
【问题描述】:

我有以下代码

loop(Data) ->
receive
    {Key, Value} ->
    [{Key, Value}|Data];
    {Key} ->
        member(Key, Data);
14  loop(Data);
    stop ->
        io:format("server_stopped"),
        ok  
end .

我收到以下错误(我将第 14 行放在代码中)

./dist_erlang.erl:14: 之前的语法错误:';' ./dist_erlang.erl:2: 函数循环/1 未定义 ./dist_erlang.erl:28: 警告:函数成员/2 未使用

我不确定上述代码的语法问题是什么。我有一个名为 member 的方法,由于第 14 行存在不同的语法错误,我确定该方法给出了错误。

感谢任何帮助。

【问题讨论】:

    标签: erlang


    【解决方案1】:

    在 Erlang 中,表达式用 逗号 分隔(子句用分号分隔)。试试:

    loop(Data) -> 
        receive 
            {Key, Value} -> 
                loop([{Key, Value}|Data]); 
            {Key} -> 
                member(Key, Data),
                loop(Data);
            stop -> 
                io:format("server_stopped"), 
                ok   
        end.
    

    【讨论】:

    • 这是否意味着我想在收到 {Key} 后循环?在对所有子句进行评估之后,我想循环,以保持此进程运行。
    • 哦,我误解了你的代码的意思。我修改了示例并将loop(Data) 放在receive 块之外。
    • 好的,谢谢,接收停止会结束流程吗?我只有一个打印声明,但我认为这不行。停止这个过程还是停止?谢谢
    • 实际上,再看一遍,您的代码似乎不仅仅存在这个问题。我再次修改了我的示例,以显示前两条消息的循环并在stop 上退出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 1970-01-01
    • 2020-06-23
    • 2018-02-07
    • 1970-01-01
    • 1970-01-01
    • 2013-05-05
    相关资源
    最近更新 更多