【问题标题】:Erlang, how to print every value in console?Erlang,如何在控制台中打印每个值?
【发布时间】: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).

【问题讨论】:

    标签: concurrency functional-programming erlang


    【解决方案1】:

    使用io:format,像这样:

    io:format("Result: ~p~n", [calculadora:contador({suma,1,1},Server)]),
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2013-01-21
      • 2014-08-24
      • 2011-01-30
      • 1970-01-01
      相关资源
      最近更新 更多