[elixir/ru] Agents

This commit is contained in:
Ev Bogdanov 2017-08-19 22:33:24 +03:00
parent 13a89c7fd0
commit 04d2b5a2e9

View File

@ -439,4 +439,21 @@ send pid, {:circle, 2}
# Чтобы узнать текущий PID, воспользуйтесь встроенной функцией `self`
self() #=> #PID<0.27.0>
## ---------------------------
## -- Агенты
## ---------------------------
# Агент — это процесс, который следит за некоторым изменяющимся значением.
# Создайте агента через `Agent.start_link`, передав ему функцию.
# Начальным состоянием агента будет значение, которое эта функция возвращает.
{ok, my_agent} = Agent.start_link(fn -> ["красный", "зелёный"] end)
# `Agent.get` принимает имя агента и анонимную функцию `fn`, которой будет
# передано текущее состояние агента. В результате вы получите то, что вернёт
# анонимная функция.
Agent.get(my_agent, fn colors -> colors end) #=> ["красный", "зелёный"]
# Похожим образом вы можете обновить состояние агента
Agent.update(my_agent, fn colors -> ["синий" | colors] end)
```