Elixir语言中 Code.eval_quoted
相关用法介绍如下。
用法:
eval_quoted(quoted, binding \\ [], opts \\ [])
@spec eval_quoted(Macro.t(), binding(), Macro.Env.t() | keyword()) ::
{term(), binding()}
评估引用的内容。
警告:在宏中调用此函数被认为是不好的做法,因为它将尝试在编译时评估运行时值。宏参数通常通过将它们取消引用转换为返回的带引号的表达式(而不是评估)。
有关 binding
和 opts
的说明,请参见
。eval_string/3
例子
iex> contents = quote(do: var!(a) + var!(b))
iex> {result, binding} = Code.eval_quoted(contents, [a: 1, b: 2], file: __ENV__.file, line: __ENV__.line)
iex> result
3
iex> Enum.sort(binding)
[a: 1, b: 2]
为方便起见,您可以将
作为 __ENV__/0
opts
参数传递,所有选项都将从当前环境中自动提取:
iex> contents = quote(do: var!(a) + var!(b))
iex> {result, binding} = Code.eval_quoted(contents, [a: 1, b: 2], __ENV__)
iex> result
3
iex> Enum.sort(binding)
[a: 1, b: 2]
相关用法
- Elixir Code.eval_string用法及代码示例
- Elixir Code.ensure_compiled用法及代码示例
- Elixir Code.ensure_loaded?用法及代码示例
- Elixir Code.ensure_loaded用法及代码示例
- Elixir Code.prepend_path用法及代码示例
- Elixir Code.compiler_options用法及代码示例
- Elixir Code.quoted_to_algebra用法及代码示例
- Elixir Code.put_compiler_option用法及代码示例
- Elixir Code.format_string!用法及代码示例
- Elixir Code.required_files用法及代码示例
- Elixir Code.get_compiler_option用法及代码示例
- Elixir Code.Fragment.cursor_context用法及代码示例
- Elixir Code.available_compiler_options用法及代码示例
- Elixir Code.require_file用法及代码示例
- Elixir Code.Fragment.container_cursor_to_quoted用法及代码示例
- Elixir Code.Fragment.surround_context用法及代码示例
- Elixir Code.delete_path用法及代码示例
- Elixir Code.append_path用法及代码示例
- Elixir Code.unrequire_files用法及代码示例
- Elixir Code.fetch_docs用法及代码示例
- Elixir Code.string_to_quoted_with_comments用法及代码示例
- Elixir Code用法及代码示例
- Elixir Config.config_env用法及代码示例
- Elixir Config.config用法及代码示例
- Elixir Config.Reader用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Code.eval_quoted(quoted, binding \\ [], opts \\ [])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。