小编ini*_*nic的帖子

Elixir Agent元组返回

我正在研究以下教程

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
Run Code Online (Sandbox Code Playgroud)

产量

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}
Run Code Online (Sandbox Code Playgroud)

具有不同结果的简单函数

person = fn ( first, last ) -> {{:ok, first}, last} end
Run Code Online (Sandbox Code Playgroud)

输出:

iex(13)> person.("John", "Doe")                                 
{{:ok, "John"}, "Doe"}
Run Code Online (Sandbox Code Playgroud)

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

提前致谢!

elixir

0
推荐指数
1
解决办法
200
查看次数

标签 统计

elixir ×1