我试图分离一个整数数组来计算有多少个重复的数字。
对于此输入[10, 20, 20, 10, 10, 30, 50, 10, 20]
,我将收到以下输出:
#{10=>"\n\n\n\n",20=>[20,20],30=>[30],50=>"2"}
问题
我想知道如何生成以下输出
#{10=>[10,10,10,10],20=>[20,20],30=>[30],50=>[50]}
我用来生成Map输出的函数是:
%% Next: number
%% Acc: map
separate_socks(Next, Acc) ->
KeyExists = maps:is_key(Next, Acc),
case KeyExists of
true ->
CurrentKeyList = maps:get(Next, Acc),
maps:update(Next, [Next | CurrentKeyList], Acc);
false -> maps:put(Next, [Next], Acc)
end.
3条答案
按热度按时间hivapdat1#
可以使用
shell:strings/1
函数来处理数字显示为字符的问题。当调用shell:strings(true)
时,数字将显示为字符:调用
shell:strings(false)
将导致数字打印为数字:3bygqnnd2#
Your output is actually correct. The ascii value for
\n
is 10. There is no nativestring
data type in erlang. A string is nothing by a list of values.erlang:is_list("abc")
would return true.Try [1010, 1020, 1020, 1010, 1010, 1030, 1050, 1010, 1020] as input. It should display all numbers.
3z6pesqy3#
您也可以使用io:format()来格式化输出:
w
使用标准语法写入数据。这是用来输出Erlang词汇。