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


Elixir Module.eval_quoted用法及代码示例


Elixir语言中 Module.eval_quoted 相关用法介绍如下。

用法:

eval_quoted(module_or_env, quoted, binding \\ [], opts \\ [])
@spec eval_quoted(
  module() | Macro.Env.t(),
  Macro.t(),
  list(),
  keyword() | Macro.Env.t()
) :: term()

评估给定模块上下文中引用的内容。

环境选项列表也可以作为参数给出。有关详细信息,请参阅 Code.eval_string/3

如果模块已经编译,则引发错误。

例子

defmodule Foo do
  contents =
    quote do
      def sum(a, b), do: a + b
    end

  Module.eval_quoted(__MODULE__, contents)
end

Foo.sum(1, 2)
#=> 3

为方便起见,您可以将任何 Macro.Env 结构体(例如 __ENV__/0 )作为第一个参数或选项传递。模块和所有选项都将从环境中自动提取:

defmodule Foo do
  contents =
    quote do
      def sum(a, b), do: a + b
    end

  Module.eval_quoted(__ENV__, contents)
end

Foo.sum(1, 2)
#=> 3

请注意,如果您将 Macro.Env 结构作为第一个参数传递,同时还传递 opts ,它们将与具有优先权的 opts 合并。

相关用法


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