私はerlangを学びたいと考えています。ここに四角形の面積を計算する基本的なサーバーがあります。erlang - ループパターンマッチングの問題を受け取ります
-module(area_server).
-export([start/0, loop/0]).
start() ->
spawn(area_server, loop, []).
loop() ->
receive
{Client, {square, X}} ->
Client ! X*X,
loop()
end.
私が持っている問題は、私が唯一の1つの値にXをバインドできるようだということである:それはここではerlang white paper
の例6の改良版であるコードです。他の値へのバインドは機能しません。テストするために、私は次のコードを持っています:
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にバインドすることはできません。したがって、2回目の呼び出しでArea1に変更すると動作します。 – arahant