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 Macro.Env.fetch_alias用法及代碼示例
- Elixir Macro.Env.required?用法及代碼示例
- Elixir Macro.Env.prepend_tracer用法及代碼示例
- Elixir Macro.Env.lookup_import用法及代碼示例
- Elixir Macro.Env.has_var?用法及代碼示例
- Elixir Macro.prewalk用法及代碼示例
- Elixir Macro.generate_unique_arguments用法及代碼示例
- Elixir Macro.quoted_literal?用法及代碼示例
- Elixir Macro.validate用法及代碼示例
- Elixir Macro.camelize用法及代碼示例
- Elixir Macro.operator?用法及代碼示例
- Elixir Macro.var用法及代碼示例
- Elixir Macro.unescape_string用法及代碼示例
- Elixir Macro.unique_var用法及代碼示例
- Elixir Macro.expand_once用法及代碼示例
- Elixir Macro.to_string用法及代碼示例
- Elixir Macro.prewalker用法及代碼示例
- Elixir Macro.postwalker用法及代碼示例
- Elixir Macro.underscore用法及代碼示例
- Elixir Macro.generate_arguments用法及代碼示例
- Elixir Macro.decompose_call用法及代碼示例
- Elixir Macro.escape用法及代碼示例
- Elixir Macro.update_meta用法及代碼示例
- Elixir Macro.unpipe用法及代碼示例
- Elixir Macro用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Macro.Env。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。