【发布时间】:2015-04-20 13:44:54
【问题描述】:
这里是 Erlang 新手。我来自 Java 背景,发现 Erlan 相当有趣。我正在关注优秀的书“Learn You some 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([],_) -> []; 似乎是被调用的行。但是,我的理解是,只有当第一个参数为空且_ 只是一个占位符时才应该调用它。
我在这里错过了什么?
【问题讨论】:
标签: erlang