当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Elixir Agent.update用法及代码示例


Elixir语言中 Agent.update 相关用法介绍如下。

用法一

update(agent, fun, timeout \\ 5000)
@spec update(agent(), (state() -> state()), timeout()) :: :ok

通过给定的匿名函数更新代理状态。

函数fun 被发送到调用传递代理状态的函数的agentfun 的返回值成为代理的新状态。

此函数始终返回 :ok

timeout 是一个大于零的整数,它指定在代理执行函数并返回结果值之前允许多少毫秒,或者原子:infinity 无限期等待。如果在指定时间内没有收到结果,则函数调用失败,调用者退出。

例子

iex> {:ok, pid} = Agent.start_link(fn -> 42 end)
iex> Agent.update(pid, fn state -> state + 1 end)
:ok
iex> Agent.get(pid, fn state -> state end)
43

用法二

update(agent, module, fun, args, timeout \\ 5000)
@spec update(agent(), module(), atom(), [term()], timeout()) :: :ok

通过给定的函数更新代理状态。

update/3 相同,但需要一个模块、函数和参数,而不是匿名函数。状态作为第一个参数添加到给定的参数列表中。

例子

iex> {:ok, pid} = Agent.start_link(fn -> 42 end)
iex> Agent.update(pid, Kernel, :+, [12])
:ok
iex> Agent.get(pid, fn state -> state end)
54

相关用法


注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Agent.update(agent, fun, timeout \\ 5000)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。