如何使用' / ='确保数组中的元素是唯一的?

时间:2014-03-22 15:44:49

标签: erlang

我想确保数组中的元素是唯一的。

4> A=[1,2, 3].
[1,2]
5> lists:nth(1, A) /= lists:nth(2, A).
true
6> lists:nth(1, A) /= lists:nth(2, A) /= lists:nth(3, A).
* 1: syntax error before: '/='

不幸的是' / ='当我将它扩展到三个或更多元素用例时,在提示#6中不起作用。

可接受的erlang语法是什么?

2 个答案:

答案 0 :(得分:6)

我想正确的方法是从列表中进行设置,然后比较设置大小和列表长度。

A = [1,2,3].
S = sets:from_list(A).
length(A) == sets:size(S).

答案 1 :(得分:1)

如果你的数组有一个固定的,编译时已知的长度(那么你应该使用元组)并且你可以模式匹配它:

case A of  %% Size = 3
    {_,X,X} -> true;
    {X,_,X} -> true;
    {X,X,_} -> true;
    {_,_,_} -> false
end

否则,我想你会去this very inefficient way