将Erlang元组从文本文件转换为列表和映射

3

我正在尝试从文本文件中读取数据,将元组从文件放入列表中,然后将它们映射到代码中,如下所示。我是erlang的新手,不知道我做错了什么:

-module(exchange).
-export([start/0]).
start()->
A= file:consult("calls.txt"),
B=tuple_to_list(A),
io:fwrite("~p~n",[maps:from_list([B])]).

它给我报错:
 5> c(exchange).     
  {ok,exchange}
  26> exchange:start().
      ** exception error: bad argument
         in function  maps:from_list/1
         called as maps:from_list([[ok,
                                   [{john,[jill,joe,bob]},
                                    {jill,[bob,joe,bob]},
                                    {sue,[jill,jill,jill,bob,jill]},
                                    {bob,[john]},
                                    {joe,[sue]}]]])
     in call from exchange:start/0 (exchange.erl, line 10)

请在这里帮帮我。谢谢。

1个回答

2

file:consult/2 在成功时返回 {ok, Terms},因此这应该有效:

{ok, A} = file:consult("calls.txt"),
io:fwrite("~p~n", [maps:from_list(A)]).

它没有起作用,我在文本文件中尝试了以下数据:{john,[jill,joe,bob]}。 {jill,[bob,joe,bob]}。 {sue,[jill,jill,jill,bob,jill]}。 {bob,[john]}。 {joe,[sue]}。每个句点后都会开始新的一行。 - newbie_erlang
好的,如果我不使用元组转换为列表,它就可以正常工作。exchange:start(). #{bob => [john], jill => [bob,joe,bob], joe => [sue], john => [jill,joe,bob], sue => [jill,jill,jill,bob,jill]} ok我得到了这个输出,我想从每个元组中获取第一个人,并对该元组中的每个人进行调用,例如向第一个人发送一些消息,然后收到回复。 - newbie_erlang

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接