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


Elixir Agent.get_and_update用法及代码示例


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

用法:

get_and_update(agent, fun, timeout \\ 5000)
@spec get_and_update(agent(), (state() -> {a, state()}), timeout()) :: a when a: var

通过给定的匿名函数在一个操作中获取和更新代理状态。

函数fun 被发送到调用传递代理状态的函数的agent。该函数必须返回一个包含两个元素的元组,第一个是要返回的值(即 "get" 值),第二个是代理的新状态。

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

例子

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

相关用法


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