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


Elixir Supervisor.child_spec用法及代码示例


Elixir语言中 Supervisor.child_spec 相关用法介绍如下。

用法:

child_spec(module_or_map, overrides)
@spec child_spec(
  child_spec() | {module(), arg :: term()} | module(),
  keyword()
) :: child_spec()

构建并覆盖子规范。

start_link/2 init/2 类似,它需要 module{module, arg} 或映射作为子规范。如果给出了模块,则通过调用 module.child_spec(arg) 来检索规范。

检索到子规范后,overrides 上的字段将直接应用于子规范。如果 overrides 具有未映射到任何子规范字段的键,则会引发错误。

请参阅模块文档中的 "Child specification" 部分,了解所有可用于覆盖的键。

例子

当需要在监督树中多次启动同一个模块时,该函数通常用于设置:id选项:

Supervisor.child_spec({Agent, fn -> :ok end}, id: {Agent, 1})
#=> %{id: {Agent, 1},
#=>   start: {Agent, :start_link, [fn -> :ok end]}}

相关用法


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