当前位置:  开发笔记 > 程序员 > 正文

Elixir Agent元组返回

如何解决《ElixirAgent元组返回》经验,为你挑选了1个好方法。

我正在研究以下教程

https://howistart.org/posts/elixir/1

我正在与代理商合作,我不明白这条线是如何工作的.

def pop(door) do
    Agent.get_and_update(door, fn
        []      -> {:error, []}
        [h|t]   -> {{:ok, h}, t}     ## returns {:ok, h} why not {{:ok, h}, t}
    end  )
end

产量

iex(5)> Portal.Door.push(:pink, 2)
:ok
iex(6)> Portal.Door.push(:pink, 3)
:ok
iex(7)> Portal.Door.push(:pink, 4)
:ok
iex(8)> Portal.Door.pop(:pink)    
{:ok, 4}

具有不同结果的简单函数

person = fn ( first, last ) -> {{:ok, first}, last} end

输出:

iex(13)> person.("John", "Doe")                                 
{{:ok, "John"}, "Doe"}

为什么一个返回内部元组和外部元组,代理只返回内部元组.

提前致谢!



1> AbM..:

从这里的Agent.get_and_update(agent, fun, timeout)文档:

在一个操作中获取并更新代理状态.

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

这是因为Agent只是一个GenServer必须返回响应和新状态的特殊情况.你可以查看这里的实现Agent.Server

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有