【发布时间】:2016-11-19 09:51:19
【问题描述】:
我正在努力学习 erlang。这是一个计算正方形面积的基本服务器。它是erlang white paper示例6的修改版
代码如下:
-module(area_server).
-export([start/0, loop/0]).
start() ->
spawn(area_server, loop, []).
loop() ->
receive
{Client, {square, X}} ->
Client ! X*X,
loop()
end.
我的问题是我似乎只能将 X 绑定到一个值。绑定到任何其他值都不起作用。为了测试,我有以下代码:
Server = area_server:start().
%Works and returns 100
Server ! {self(), {square, 10}}, receive Area -> Area end.
%Does not work and just does not return at all
Server ! {self(), {square, 5}}, receive Area -> Area end.
那么如何计算 5 的平方呢?
【问题讨论】:
-
好的。所以看来问题不在于服务器,而在于客户端代码。因为我收到了一个名为
Area的变量,并且它被绑定到100 一次,之后它不能绑定到25。所以如果我在第二次调用中更改为Area1,它就可以工作。