我有一个函数,它检查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).我在另一个模块中调用它,我总是得到false,最后一行中的问题,因为当我删除它时,函数可以正常工作。我把桌子关对了吗?
发布于 2016-04-13 16:29:43
问题是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.https://stackoverflow.com/questions/36604020
复制相似问题