erlang 如何在一个文件中存储元组及其大小?

sirbozc5  于 2023-01-03  发布在  Erlang
关注(0)|答案(1)|浏览(210)

我已经创建了一个gen_server,它应该接收从erlangshell发送的元组,并将其与元组大小沿着写入文件。
示例:接收到的输入是{"A","B","C","D"},应该将其写入文件:
{"A","B","C","D"};4
gen_server还应该接收新的输入,并将它们存储在txt文件中,每一个都在新的一行。
我已经尝试过了,但是我的代码没有生成所需的输出。假设我已经用start_linkinithandle_callhandle_casthandle_infoterminatecode_change编写了基本的gen_server代码。

yhxst69z

yhxst69z1#

试试这个:

go() ->
    Tuple = {"A", "B", "C", "D"},
    Length = tuple_size(Tuple),
    {ok, TupleFile} = file:open("tuples.txt", [append]),
    file:write(TupleFile, 
               io_lib:format("~p;~w~n", [Tuple, Length])
              ),
    file:close(TupleFile).

io_lib:format()io:format()类似,不同之处在于io_lib:format()不是将字符串写入shell,而是返回字符串。
在 shell 中:

1> c(a).
a.erl:2:2: Warning: export_all flag enabled - all functions will be exported
%    2| -compile(export_all).
%     |  ^

{ok,a}

2> a:go().
ok

3> 
BREAK: (a)bort (A)bort with dump (c)ontinue (p)roc info (i)nfo
       (l)oaded (v)ersion (k)ill (D)b-tables (d)istribution
                                                                        

~/erlang_programs% cat tuples.txt
{"A","B","C","D"};4

相关问题