【发布时间】:2016-11-02 13:45:04
【问题描述】:
我正在尝试创建读取 {Jid, Text} 的函数并检查它是否已经在列表中返回 true 否则如果不是,则此函数应将其附加到列表中然后返回 false
我正在做的是:
new_seen() -> [{"user@domain.tld", "hello"}].
check({Jid, Text}) ->
Term = {Jid, Text},
case lists:member(Term, new_seen()) of
true -> true;
false ->
%% here I want to add {Jid, Text} to new_seen() list.
false
end.
简单示例:
check({"us1@domain.tld", "hi"}).
%% here should appened {"us1@domain.tld", "hi"} to the list and return false.
%% if I run function again :
check({"us1@domain.tld", "hi"}).
%% here should return True cuz {"us1@domain.tld", "hi"} in the list.
我想将它与 ejabberd 一起使用来检查是否重复插入的消息。
【问题讨论】:
-
您有什么需求?您需要在该列表中保存哪些数据?它是一个大数据库吗?您可能需要检查Erlang ETS 或Process Dictionary
-
@A.Sarid 是的,它是一个大数据库。是的,但我不应该使用 ets 或处理字典,因为数据太多。我在这里也问过:stackoverflow.com/questions/35958767/…有什么办法吗?
-
您似乎在上一个问题中得到了答案。那么,为什么不将 ETS 用于您的数据库呢?它应该完全适合大型数据库。
-
@A.Sarid 我编辑我的问题。
-
@A.Sarid 这是真的吗? paste.ubuntu.com/18170115