2016-08-04 7 views
0

Ich bin neu in Erlang zu verlassen.Erlang: Prompt bis Benutzer wählt

Mein Problem ist aber, ich kann nicht scheinen, um herauszufinden, wie Funktionen erstellen, die einen Benutzer aufzufordern, werden fortgesetzt, bis sie eine Art von „exit“ Enter-Taste.

machte ich ein sehr einfaches Programm, unter dem ich dachte, würde verlassen, wenn der Benutzer „4“ eingegeben haben, aber ich dachte falsch:

reprompt() -> 
    {ok, X} = io:fread("Prompt>", "~s"), 
    case X of 
    4 -> io:format("exit"); 
    _ -> reprompt() 
    end. 

Ich habe andere Variationen ausprobiert, aber die meisten nach dem gleichen oder ähnliches Muster.

Irgendwelche Vorschläge?

Antwort

1

io:fread/2 gibt eine Liste. Mit dem Format "~s" wird eine Liste mit einer Zeichenfolge zurückgegeben. Wenn Sie zur Eingabe einer einzelnen Zahl in X möchten, können Sie tun:

{ok, [X]} = io:fread("Prompt>", "~d"), 

Beachten Sie, dass dies zum Absturz, wenn der Benutzer etwas anderes als eine Zahl eingibt. Sie sollten einen case Ausdruck und fügen Klauseln für {ok, [X]} und {error, Reason} verwenden.

+0

Ja, das fixiert alles. Manchmal sind es die kleinen Dinge im Leben. Vielen Dank. – Mascasc