Ошибка исключения Erlang для несоответствия правого значения - PullRequest
0 голосов
/ 23 сентября 2018

У меня есть этот код, который должен печатать числа от 1 до N-1 в списке, но I здесь не добавится в список.

enum(N,[],N) -> [];
enum(N,L,I) ->
  io:format("current number: ~w~n", [I]),
  L = L ++ I,
enum(N,[],I+1).

enumFunc(N) -> enum(N,[],1).

Когда я запускаю пример: enumFunc (100)., он возвращает exception error: no match of right hand side value [1]

Пожалуйста, помогите мне решить эту проблему.Спасибо.

1 Ответ

0 голосов
/ 23 сентября 2018

Erlang - это язык одного задания.Это означает, что вы не можете присвоить новое значение L, если значение уже присвоено L.Когда вы пытаетесь «назначить» новое значение с помощью L = L ++ I, вы фактически выполняете операцию , соответствующую .Причина, по которой вы видите ошибку no match of right hand side value [1], заключается в том, что L не равно L ++ I, поскольку L уже присвоено значение [1] и оно не соответствует [1,2]

enum(N,L,N) -> L;
enum(N,L,I) ->
  io:format("current number: ~w~n", [I]),
  L0 = L ++ [I],
  enum(N,L0,I+1).

enumFunc(N) -> enum(N,[],1).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...