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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。