Erlang,如何在控制台中打印每个值?
Posted
技术标签:
【中文标题】Erlang,如何在控制台中打印每个值?【英文标题】:Erlang, how to print every value in console? 【发布时间】:2021-08-04 20:14:10 【问题描述】:我有一个 start() 函数,它生成一个进程并在该进程中多次运行一个方法,它是一个简单的计算器,所以每一行都说: calculadora:contador(suma,1,1,Server) 将结果打印到控制台(在本例中为 1)。
问题是当 start 被调用时,它只打印 start 的最后一行: calculadora:contador('exit',Server) 作为结果给出(好的,再见)。
所以我的问题是如何使用这个启动函数打印每一个结果?
-module(calculadora).
-export([contador/2, loop/0, start/0]).
loop() ->
receive
Pid, suma, N1, N2 ->
Pid ! N1 + N2,
loop();
Pid, resta, N1, N2 ->
Pid ! N1 - N2,
loop();
Pid, multiplicacion, N1, N2 ->
Pid ! N1 * N2,
loop();
Pid, division, N1, N2 ->
Pid ! N1 / N2,
loop();
Pid, exit ->
Pid ! "Bye";
Pid, _ ->
Pid ! error, "wtf",
loop()
end.
contador(X, Pid) ->
Pid ! self(), X,
receive
error, E ->
bad, E;
Cont ->
ok, Cont;
R ->
ok, R
after 10 ->
error, timeout
end.
start() ->
Server = spawn(?MODULE, loop, []),
calculadora:contador(suma, 1, 1, Server),
calculadora:contador(multiplicacion, 1, 1, Server),
calculadora:contador(division, 1, 1, Server),
calculadora:contador(resta, 1, 1, Server),
calculadora:contador(exit, Server).
【问题讨论】:
【参考方案1】:使用io:format
,像这样:
io:format("Result: ~p~n", [calculadora:contador(suma,1,1,Server)]),
【讨论】:
以上是关于Erlang,如何在控制台中打印每个值?的主要内容,如果未能解决你的问题,请参考以下文章