Erlang:提示,直到用户选择退出

时间:2016-08-04 20:10:27

标签: recursion functional-programming erlang

我是Erlang的新手。

我的问题是,我似乎无法弄清楚如何创建将继续提示用户的功能,直到他们输入某种"退出"按钮。

我在下面创建了一个非常简单的程序,如果用户键入" 4"我认为会退出,但我认为错了:

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

我尝试过其他变体,但大多数都遵循相同或相似的模式。

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

io:fread/2返回一个列表。使用格式"~s",它将返回包含一个字符串的列表。如果您想在X中输入一个号码,可以执行以下操作:

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

请注意,如果用户输入的数字不是数字,则会崩溃。您应该使用case表达式并为{ok, [X]}{error, Reason}添加子句。