收集输入以使用 Erlang 列出

Collect an input to list with Erlang

我需要创建一个程序,从控制台读取数字并将它们收集到列表中。 例如输入:

1
2
3
4

程序应该return[1, 2, 3, 4]。 算法相当简单:

我认为程序应该是这样的(# 对于我不知道如何写的部分):

read(L)->
  case io:fread("", "#what format")
    #number case ->
     read([N|L])
    #empty case ->
     lists:reverse(L)
  end.

你可以像这样定义一个递归函数

-module(test).
-compile(export_all).

input(Acc) ->
    Data = io:get_line(""),
    Data2 = lists:sublist(Data, length(Data) - 1),
    case string:len(Data2) of
        0 ->
            Acc;
        _ ->
            input(Acc ++ [Data2])
    end.

解决了问题:

rorra:~/erlang > erl
Erlang/OTP 17 [erts-6.4] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false]

Eshell V6.4  (abort with ^G)
1> c(test).
{ok,test}
2> test:input([]).
hello
world

["hello","world"]
3>