diff options
author | Ev Bogdanov <evbogdanov.com@gmail.com> | 2017-08-19 22:33:24 +0300 |
---|---|---|
committer | Ev Bogdanov <evbogdanov.com@gmail.com> | 2017-08-19 22:33:24 +0300 |
commit | 04d2b5a2e93c73af269f754cabe78c55776735ba (patch) | |
tree | 333d3e2af1755f11a645255ad9d16b4f7457d62e /ru-ru/elixir-ru.html.markdown | |
parent | 13a89c7fd0a593876ad4366d4c89182612b76db6 (diff) |
[elixir/ru] Agents
Diffstat (limited to 'ru-ru/elixir-ru.html.markdown')
-rw-r--r-- | ru-ru/elixir-ru.html.markdown | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/ru-ru/elixir-ru.html.markdown b/ru-ru/elixir-ru.html.markdown index 459df53e..5e80592a 100644 --- a/ru-ru/elixir-ru.html.markdown +++ b/ru-ru/elixir-ru.html.markdown @@ -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) ``` |