1

这是一个执行字符串反转的 Erlang 代码。

但是,它不起作用。

 -module(lists1).
 -export([reverse/1]).
  reverse(L) ->
        reverse(L, []).
  reverse([H|T], L) ->
        reverse(T, [H|L]);
  reverse([], L) ->
         L.

列表1:反向(英国广播公司)。** 异常错误:没有函数子句匹配 list1:reverse(def,[]) (lists1.erl, line 5)

为什么 ?

任何帮助将不胜感激。

谢谢

4

1 回答 1

7

根据错误消息,您尝试反转原子 ( def) 而不是字符串 ( "def")。原子不是字符串/列表,因此不匹配您的任何模式。您可以添加一个来处理这种情况:

reverse(A) when is_atom(A) -> list_to_atom(reverse(atom_to_list(A)));
reverse(L) -> reverse(L, []).

等等

这给了我这个:

Eshell V5.7.4(使用 ^G 中止)
1> lists1:reverse(def)。

2>

于 2012-04-19T00:51:38.750 回答