【发布时间】:2017-03-12 12:55:23
【问题描述】:
elixir 新手,我正在关注 José Valim 的帖子https://howistart.org/posts/elixir/1
当我收到错误时,我无法让主管启动孩子:
iex(1)> Portal.shoot(:orange)
{:error, {:invalid_child_spec, [:orange]}}
我们将不胜感激!
这是门户模块
defmodule Portal do
use Application
def start(_type, _args) do
import Supervisor.Spec, warn: false
children = [
worker(Portal.Door, [])
]
opts = [strategy: :simple_one_for_one, name: Portal.Supervisor]
Supervisor.start_link(children, opts)
end
@doc """
Shoots a new door with the given `color`
"""
def shoot(color) do
Supervisor.start_child(Portal.Supervisor, [color])
end
这里是 Portal.Door 模块和应该被调用的 start_link 函数
defmodule Portal.Door do
def start_link(color) do
Agent.start_link(fn -> [] end, name: color)
end
【问题讨论】:
-
您的代码对我有用。您确定这是显示该错误的确切代码吗?
-
是的。这是我的编辑器直接复制粘贴的。我在文件中确实有其他函数(也来自教程),但它们不应该有任何影响,因为它们没有被调用。 @Dogbert 查看整个 .ex 文件会有所帮助吗
-
是的。你能先复制问题中的代码,添加2个缺失的
end,看看它是否有效?我复制了这个并添加了 2 个缺失的end,昨天它对我有用。
标签: elixir