如何在 erlang 中进行一些操作后正确关闭 dets table?
How to close a dets table correctly after some operations in erlang?
我有一个函数可以检查给定的用户名是否已经存在于 dets table 或者不存在:
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,最后一行的问题,因为当我删除它时,该函数可以正常工作。
我是否正确关闭了 table?
问题是 Erlang 中的函数 return 最后一个表达式的值,在你的例子中是 dets:close(?FILE_PATH)
which returns ok
成功关闭table。您需要存储 return 由 case
和 return 编辑的值:
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.
我有一个函数可以检查给定的用户名是否已经存在于 dets table 或者不存在:
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,最后一行的问题,因为当我删除它时,该函数可以正常工作。 我是否正确关闭了 table?
问题是 Erlang 中的函数 return 最后一个表达式的值,在你的例子中是 dets:close(?FILE_PATH)
which returns ok
成功关闭table。您需要存储 return 由 case
和 return 编辑的值:
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.