или как особенность в случае ... заявления?Или, может быть, более общий образец? - PullRequest
3 голосов
/ 26 июля 2011

Я уже некоторое время изучаю Erlang, и для того, чтобы выучить его, я пишу бот IRC.Этот IRC-бот должен слушать команды в «! Command» и «Nick: command» форме.Я предварительно анализирую протокол IRC, чтобы соответствовать только отправляемому сообщению.Я делаю это с помощью бинарных шаблонов, таких как:

case Msg of
    [Nick, _, <<"PRIVMSG">>, <<"#",Channel/binary>>, <<"!rock">>] ->
        irckybot_api:privmsg(<<"#",Channel/binary>>, [Nick, choose_hand(rock)]),
        {ok, State};
    [Nick, _, <<"PRIVMSG">>, <<"#",Channel/binary>>, <<BNick:Len/binary,": rock">>] ->
        irckybot_api:privmsg(<<"#",Channel/binary>>, [Nick, choose_hand(rock)]),
        {ok, State};
end

Прав ли я, что мне нужно написать два шаблона для этого?Разве я не могу объединить два шаблона в один?Может быть, с более общим рисунком?Я действительно не знаю ...

LG, CK

1 Ответ

4 голосов
/ 26 июля 2011

Полагаю, лучше написать:

case Msg of
  [Nick, _, <<"PRIVMSG">>, <<"#",Channel/binary>>, X] ->
    case X of
       <<"!rock">> -> ....;
       <<BNick:Len/binary,": rock">> -> .......
    end;
  _ -> .......
end
...