【发布时间】:2021-04-03 06:59:39
【问题描述】:
你能告诉我代码第 53 行有什么问题吗? 据我了解,它应该返回 {[{12456},{77777},{99999},{88888}],[]}。 为什么不匹配以及如何解决?谢谢!
fu() ->
Tr = [{12456},{77777}, {99999}, {88888}],
car:foa1(Tr, {[],[]}).
foa1([], Acc) -> Acc;
foa1([{Tr}|Ot], {A1,A2}) ->
Direction = unknown,
A = fun(T, {Acc1, Acc2}) ->
case Direction of
unknown -> {[T | Acc1], Acc2};
_ -> {Acc1, [T | Acc2]}
end
end,
{Acc1, Acc2} = lists:foldl(A, {[],[]}, Tr),
foa1 (Ot, {A1 ++Acc1, A2 ++ Acc2}).
** 异常错误:没有函数子句匹配
列表:foldl(#Fun
【问题讨论】:
-
这是因为
lists:foldl的第三个参数需要一个列表,而在这一行中{Acc1, Acc2} = lists:foldl(A, {[],[]}, Tr),,Tr不是一个列表-> 因为你这样做foa1([{Tr}|Ot], {A1,A2}),它使@987654326 @ 作为第一个元组的元素,即在第一次迭代时产生12456。 -
非常感谢@Agus,您的评论帮助我解决了这个问题!一切顺利!
标签: erlang