Как я могу решить «Ошибка исключения Erlang» - PullRequest
1 голос
/ 12 марта 2020

Я получаю сообщение об ошибке исключения при отладке механизма чата Erlang.

Сообщение об ошибке гласит:

ошибка исключения: нет совпадения функционального предложения code_lock: заблокирован (приведен, { button, 1}, # {button => [], code => [a, b, c, d], length => 4})

Есть идеи, как это отладить?

Ответы [ 2 ]

1 голос
/ 12 марта 2020

Функция locked определена (исключение также должно указывать, в каком месте и с какой строки начинается ее определение), но ни одно из предложений не соответствует параметрам, показанным в исключении.

Например, , если мы определим

nfcm([H|T],X) ->
    [H,X|T];
nfcm({A,B},C) ->
    {A,C,B}.

Мы можем позвонить nfcm([1,2,3], 4) и nfcm({1,2}, 3), чтобы получить [1,4,2,3] и {1,3,2}, но вызов nfcm(1, 2) или nfcm({1,2,3}, 4) приведет к исключению, как 1 не соответствует ни списку, ни кортежу, а {1,2,3} также не соответствует списку и не соответствует кортежу из двух элементов.

Существует два способа решения проблемы: либо исправьте определение функции, либо исправьте параметры в соответствии с существующим определением.

0 голосов
/ 12 марта 2020

Хорошо, это связано с параметрами, соответствующими существующему определению. Разобрался, и процесс отладки в порядке.

...