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


Elixir Module.create用法及代碼示例


Elixir語言中 Module.create 相關用法介紹如下。

用法:

create(module, quoted, opts)
@spec create(module(), Macro.t(), Macro.Env.t() | keyword()) ::
  {:module, module(), binary(), term()}

創建具有給定名稱並由給定引用表達式定義的模塊。

定義模塊的行及其文件必須作為選項傳遞。

它返回一個形狀為 {:module, module, binary, term} 的元組,其中 module 是模塊名稱,binary 是模塊字節碼,termquoted 中最後一個表達式的結果。

Kernel.defmodule/2 類似,如果在當前正在編譯的文件中調用 Module.create/3 ,二進製文件將僅作為 .beam 文件寫入磁盤。

例子

contents =
  quote do
    def world, do: true
  end

Module.create(Hello, contents, Macro.Env.location(__ENV__))

Hello.world()
#=> true

defmodule 的區別

Module.create/3 的工作方式與 Kernel.defmodule/2 類似,並返回相同的結果。雖然也可以使用defmodule 來動態定義模塊,但當模塊主體由帶引號的表達式給出時,此函數是首選。

另一個重要區別是 Module.create/3 允許您控製定義模塊時使用的環境變量,而 Kernel.defmodule/2 自動使用調用它的環境。

相關用法


注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Module.create(module, quoted, opts)。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。