【问题标题】:Erlang exception error: no function clause matchingErlang异常错误:没有函数子句匹配
【发布时间】: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,{[],[]},12456)(lists.erl,第 1262 行) 在函数 car:foa1/2 中(car.erl,第 53 行)

【问题讨论】:

  • 这是因为lists:foldl 的第三个参数需要一个列表,而在这一行中{Acc1, Acc2} = lists:foldl(A, {[],[]}, Tr),Tr 不是一个列表-> 因为你这样做foa1([{Tr}|Ot], {A1,A2}),它使@987654326 @ 作为第一个元组的元素,即在第一次迭代时产生12456
  • 非常感谢@Agus,您的评论帮助我解决了这个问题!一切顺利!

标签: erlang


【解决方案1】:

问题已解决!我已经更正了发送到工作的列表的格式。谢谢大家

【讨论】:

    猜你喜欢
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-20
    • 2018-09-03
    • 2018-11-29
    • 2015-12-06
    • 1970-01-01
    相关资源
    最近更新 更多