2010-10-11 2 views
1

У меня есть следующий кодErlang ошибка компилятора

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: Синтаксис error before: ';' ./dist_erlang.erl:2: петля функции/1 неопределенные ./dist_erlang.erl:28: член функции/2 не используется

Я не уверен, что проблема синтаксиса с указанным кодом: Внимание , У меня есть метод, называемый членом, который дает ошибку из-за другой синтаксической ошибки в строке 14. Я уверен.

Любая помощь приветствуется.

ответ

3

В выражениях Erlang выражения разделяются запятыми (и предложения разделяются точкой с запятой). Попробуйте:

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

Означает ли это, что я хочу зациклиться после получения {Ключ}? Я хочу, чтобы цикл, который поддерживает этот процесс, после того, как все условия были оценены. – jarryd

+0

О, я неправильно понял, что означал ваш код. Я пересмотрел этот пример и поместил 'loop (Data)' вне блока 'receive'. –

+0

Хорошо, спасибо, будет ли остановить процесс завершения? У меня только оператор печати, но я не думаю, что все в порядке. останавливает этот процесс или делает это? спасибо – jarryd

Смежные вопросы