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}的元组,其中第一个元素是函数名,第二个元素是其数量;如果不在函数内部,则返回nilline- 当前行为整数module- 当前模块名称
以下字段是 Elixir 宏扩展机制私有的,不能直接访问:
aliasesfunctionsmacro_aliasesmacroslexical_trackerrequirestracersversioned_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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。
