2016-04-13 10 views
1

Ich habe eine Funktion, die bereits bei den angegebenen Benutzername überprüft die dets Tabelle oder existieren in:Wie man eine DTS-Tabelle nach einigen Operationen in Erlang korrekt schließt?

is_username_web2_exists(Username)-> 
    dets:open_file(?FILE_PATH), 
    case dets:lookup(?FILE_PATH,Username) of 
     [_] -> true; 
     _ -> false 
    end, 
    dets:close(?FILE_PATH). 

nenne ich es in einem anderen Modul und ich immer falsch bekommen, um das Problem in der letzten Zeile, denn als ich entfernen Sie es, die Funktion funktioniert gut. Habe ich den Tisch richtig geschlossen?

+0

Haben Sie bekommen 'false' mit diesem Code oder erhalten Sie' OK '? – Dogbert

+0

Sie sind richtig, ich habe 'ok' nicht 'falsch', wie kann ich 'wahr' oder 'falsch' mit dem Schließen der Tabelle bekommen –

Antwort

2

Das Problem ist, dass Funktionen in Erlang den Wert des letzten Ausdrucks zurückgeben, der in Ihrem Fall dets:close(?FILE_PATH) ist, der ok zurückgibt, wenn die Tabelle erfolgreich geschlossen wird. Sie müssen den Wert der case zurück speichern und zurück:

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. 
+0

danke Sir, es funktioniert gut –