在列表中搜索具有特定字段的记录并忽略其余字段

Mar*_*rov 2 erlang

我的记录定义为:

1> rd(fact, {a,b,c}).
fact
Run Code Online (Sandbox Code Playgroud)

我创建了三个记录并将它们放在一个列表中

2> F1 = #fact{a=1,b=1,c=1}.
#fact{a = 1,b = 1,c = 1}
(3> F2 = #fact{a=2,b=2,c=2}.
#fact{a = 2,b = 2,c = 2}
3> F3 = #fact{a=3,b=3,c=3}.
#fact{a = 3,b = 3,c = 3}
4> L = [F1,F2,F3].
[#fact{a = 1,b = 1,c = 1},
 #fact{a = 2,b = 2,c = 2},
 #fact{a = 3,b = 3,c = 3}]
Run Code Online (Sandbox Code Playgroud)

现在,我想检查列表是否包含"a"为1的记录,我不关心其余的字段

(dilbert@Martin-PC)21> lists:member(#fact{a=1}, L).
false
(dilbert@Martin-PC)23> lists:member(#fact{a=1,b=1,c=1}, L).
true
Run Code Online (Sandbox Code Playgroud)

我怎么能完成它?

小智 7

或者你可以使用keyfind.

lists:keyfind(1, #fact.a, L).
Run Code Online (Sandbox Code Playgroud)