diff options
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) ``` |