根据Erlang中的元素对元组进行排序

时间:2014-05-06 19:05:49

标签: sorting erlang

阅读当前回答THIS后,我做了以下事情:

A = {1, 99}, B = {5, 15}.
F = fun({key_X, val_X},{key_Y, val_Y}) -> 
       {val_X, key_X} =< {val_Y, key_Y} 
    end.

然后,将它放到lists:sort/2函数中。 如下:

lists:sort(F, [A, B]).

但得到了错误异常:

  

异常错误:没有匹配erl_eval的函数子句:&#39; -inside-an-interpret-fun - &#39;({1,99},{5,15})

这里有什么错误?你可以指导我吗?

1 个答案:

答案 0 :(得分:3)

你必须注意Erlang使用它们的情况区分 atoms 标识符
例如:

  • [a, b, bla, key_1, val_X] atoms
  • 的列表
  • [A, B, Bla, Key_1, Val_X]变量
  • 的列表

在您的代码中,您定义了F,以便它以某种方式表示特定原子作为输入
你应该做的(以及他们在你的链接中做了什么)是使用变量标识符:

F = fun({Key_X, Val_X},{Key_Y, Val_Y}) -> {Val_X, Key_X} =< {Val_Y, Key_Y} end.

请参阅?