在erlang中进行一些操作后,如何正确关闭dets表



我有一个函数,它检查给定的用户名是否已经存在于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,这是最后一行的问题,因为当我删除它时,函数运行良好。我把桌子合好了吗?

问题是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.

相关内容

  • 没有找到相关文章

最新更新