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
是模块字节码,term
是 quoted
中最后一个表达式的结果。
与
类似,如果在当前正在编译的文件中调用 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 Module.concat用法及代码示例
- Elixir Module.defines?用法及代码示例
- Elixir Module.delete_attribute用法及代码示例
- Elixir Module.eval_quoted用法及代码示例
- Elixir Module.put_attribute用法及代码示例
- Elixir Module.split用法及代码示例
- Elixir Module.overridables_in用法及代码示例
- Elixir Module.definitions_in用法及代码示例
- Elixir Module.has_attribute?用法及代码示例
- Elixir Module.get_attribute用法及代码示例
- Elixir Module.reserved_attributes用法及代码示例
- Elixir Module.register_attribute用法及代码示例
- Elixir Module.safe_concat用法及代码示例
- Elixir Module.attributes_in用法及代码示例
- Elixir Module用法及代码示例
- Elixir Map.keys用法及代码示例
- Elixir Map.values用法及代码示例
- Elixir Map.update用法及代码示例
- Elixir MapSet用法及代码示例
- Elixir Map.split用法及代码示例
- Elixir MapSet.intersection用法及代码示例
- Elixir Map.put_new_lazy用法及代码示例
- Elixir Map.drop用法及代码示例
- Elixir Macro.Env.fetch_alias用法及代码示例
- Elixir Map用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Module.create(module, quoted, opts)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。