Erlang новичок здесь. Я нахожусь на фоне Java и нахожу Эрлана довольно интересным. Следуйте за отличной книгой «Узнай, что у тебя есть Эрланг».Понимание переменной «_» в Erlang
Вот пример рекурсии, как указано в книге для изменения порядка в списке:
tail_reverse(L) -> tail_reverse(L,[]).
tail_reverse([],Acc) -> Acc;
tail_reverse([H|T],Acc) -> tail_reverse(T, [H|Acc]).
Это работает, как ожидалось. Однако, если я изменил код:
tail_reverse(L) -> tail_reverse(L,[]).
tail_reverse([],_) -> [];
tail_reverse([H|T],Acc) -> tail_reverse(T, [H|Acc]).
это теперь всегда возвращает []
независимо от содержания Списка прошло. Таким образом, кажется, что линия tail_reverse([],_) -> [];
является вызываемой. Тем не менее, я понимаю, что он должен быть вызван только в том случае, если первый параметр пуст, а _
является просто заполнителем.
Что мне здесь не хватает?
Ah! немой, чтобы этого не видеть! Необходимо потратить больше времени на использование кода/синтаксиса Erlang. Благодаря! – imme