我有一个函数检查dets表中是否已经存在给定的用户名,或者是否:
is_username_web2_exists(Username)->
dets:open_file(?FILE_PATH),
case dets:lookup(?FILE_PATH,Username) of
[_] -> true;
_ -> false
end,
dets:close(?FILE_PATH).
我在另一个模块中调用它并且我总是得到错误,最后一行中的问题,因为当我删除它时,该函数工作正常。 我是否正确关闭了桌子?
答案 0 :(得分:3)
问题是Erlang中的函数返回最后一个表达式的值,在你的情况下是dets:close(?FILE_PATH)
,它在成功关闭表时返回ok
。您需要存储case
返回的值并返回:
is_username_web2_exists(Username)->
dets:open_file(?FILE_PATH),
Return = case dets:lookup(?FILE_PATH,Username) of
[_] -> true;
_ -> false
end,
dets:close(?FILE_PATH),
Return.