【发布时间】:2017-04-20 00:13:25
【问题描述】:
在 elixir 中,我们有 spawn/1 生成一个不带任何参数的匿名函数,spawn/3 生成一个带参数的完全限定函数。但是如何生成一个需要参数的匿名函数呢?
示例:我想运行一个匿名函数来接收消息,直到满足某个条件。参数是能够执行递归步骤的函数本身。
loop = fn f ->
receive do
{:end, pid} -> send(pid, "exiting")
{_, pid} ->
send(pid, "unrecognized message, keep waiting...")
f.(f)
end
end
child = spawn() # How do I spawn it passing itself as an argument?
【问题讨论】:
-
为什么不
spawn(fn -> loop.(loop) end)?这似乎在这里工作正常。 -
没想到,这绝对是一个解决方案。回答问题,如果这是最直接的方法,我会接受。谢谢。
标签: elixir erlang-otp