當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。