当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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