Я пытаюсь изучить erlang. Вот базовый сервер, который вычисляет площадь квадрата. Это модифицированная версия примера 6 erlang white papererlang - получение петли образец соответствия вопрос
Вот код:
-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?
Хорошо. Похоже, проблема не в сервере, а в клиентском коде. так как я получаю переменную под названием «Область», и она привязана к 100 раз, после чего она не может быть привязана к 25. Поэтому, если я перейду на «Area1» во втором вызове, он будет работать. – arahant