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


Elixir Macro.Env用法及代碼示例


Elixir語言中 Macro.Env 相關用法介紹如下。

保存編譯時環境信息的結構。

當前環境可以隨時以 __ENV__/0 的形式訪問。在宏內部,調用者環境可以作為 __CALLER__/0 訪問。

Macro.Env 的實例不得手動修改。如果您需要創建自定義環境以傳遞給 Code.eval_quoted/3 ,請使用以下技巧:

def make_custom_env do
  import SomeModule, only: [some_function: 2]
  alias A.B.C
  __ENV__
end

然後,您可以調用 make_custom_env() 來獲取包含所需導入和別名的結構。

它包含以下字段:

  • context - 環境的上下文;它可以是nil(默認上下文)、:guard(在守衛內)或:match(在匹配內)
  • context_modules - 在當前上下文中定義的模塊列表
  • file - 當前文件名作為二進製文件
  • function - 作為 {atom, integer} 的元組,其中第一個元素是函數名,第二個元素是其數量;如果不在函數內部,則返回 nil
  • line - 當前行為整數
  • module - 當前模塊名稱

以下字段是 Elixir 宏擴展機製私有的,不能直接訪問:

  • aliases
  • functions
  • macro_aliases
  • macros
  • lexical_tracker
  • requires
  • tracers
  • versioned_vars

相關用法


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