Ich versuche Erlang zu lernen. Hier ist ein Basisserver, der die Fläche des Quadrats berechnet. Es ist eine modifizierte Version des Beispiels 6 der erlang white papererlang - empfange Loopmuster passendes Problem
Hier ist der Code:
-module(area_server).
-export([start/0, loop/0]).
start() ->
spawn(area_server, loop, []).
loop() ->
receive
{Client, {square, X}} ->
Client ! X*X,
loop()
end.
Das Problem, das ich habe ist, dass es scheint, dass ich X nur einen Wert binden kann. Die Bindung an einen anderen Wert funktioniert nicht. Zum Testen habe ich folgenden Code:
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.
Also wie kann ich Quadrat von 5 berechnen?
Ok. Es scheint also, dass das Problem nicht im Server, sondern im Client-Code liegt. Da ich in eine Variable mit dem Namen 'Area' empfangen habe und sie einmal an 100 gebunden ist, kann sie danach nicht an 25 gebunden werden. Wenn ich also im zweiten Aufruf zu' Area1' wechsel, funktioniert es. – arahant