Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Erlang 为什么';是我的代码发送了双重消息(它发送的是XX而不是X)?_Erlang - Fatal编程技术网

Erlang 为什么';是我的代码发送了双重消息(它发送的是XX而不是X)?

Erlang 为什么';是我的代码发送了双重消息(它发送的是XX而不是X)?,erlang,Erlang,我正在做一个简单的计算器练习。这段代码发送一个数字。然而,当我尝试发送一个数字X时,例如,它发送XX。这是console中的外观: (pz@Molly)3> znamenka:send(0, prva_znamenka). I'm about to send: 00 (pz@Molly)4> 这是一段相关的代码: send(X, Name) -> if X =:= 0 -> Name!X; X =:=

我正在做一个简单的计算器练习。这段代码发送一个数字。然而,当我尝试发送一个数字X时,例如,它发送XX。这是console中的外观:

(pz@Molly)3> znamenka:send(0, prva_znamenka).
I'm about to send: 00
(pz@Molly)4>

这是一段相关的代码:

send(X, Name) ->
    if 
        X =:= 0 ->
            Name!X;
        X =:= 1 ->
            Name!X;
        X =:= 2 ->
            Name!X;
        X =:= 3 ->
            Name!X;
        X =:= 4 ->
            Name!X;
        X =:= 5 ->
            Name!X;
        X =:= 6 ->
            Name!X;
        X =:= 7 ->
            Name!X;
        X =:= 8 ->
            Name!X;
        X =:= 9 ->
            Name!X;
        X =:= stop ->
            Name!X;
        true ->
            io:format("You didn't enter a number or stop.")
    end.


loop() ->
    receive
        stop ->
            exit({myExit});
        X ->
            io:format("I'm about to send: ~w", [X]),
            {rjesenje, rjesenje@Molly}!{self(), X},
            loop()
    end.

你在混合两种东西。首先,程序使用io:format/2函数打印字符串。由于字符串末尾没有新行,因此shell中的光标保持在同一位置。然后函数send(X,Name)返回其值,即if语句的结果,因此消息本身为:0,并在打印提示之前添加新行

这两件事是相互独立的,因此您可能会得到:

0I'm about to send: 0
(pz@Molly)4>
或:

我不能确定订单

如果您对io:format lite进行注释,您将看到一个0剩余,或者如果您向send函数添加新行,如

end,
ok.
第二个0将替换为ok

io:format("I'm about to send: ~w~n", [X]),
你会发现不同之处

io:format("I'm about to send: ~w~n", [X]),