我需要创建一个程序,从控制台读取数字并将它们收集到列表中。 例如,输入:
1
2
3
4
程序应返回[1, 2, 3, 4]
。
算法非常简单:
我认为该程序应该是这样的(对于我不知道如何写的部分#):
read(L)->
case io:fread("", "#what format")
#number case ->
read([N|L])
#empty case ->
lists:reverse(L)
end.
答案 0 :(得分:1)
您可以定义递归函数,如
-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>