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


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