Elixir语言中 Kernel.SpecialForms.unquote
相关用法介绍如下。
用法:
unquote(expr)
(宏)
在带引号的表达式中取消引用给定的表达式。
此函数需要一个有效的 Elixir AST(也称为引用表达式)作为参数。如果您想 unquote
任何值,例如映射或 four-element 元组,您应该在取消引用之前调用
。Macro.escape/1
例子
想象一下你有一个引用的表达式并且你想将它注入到一些引用中的情况。第一次尝试是:
value =
quote do
13
end
quote do
sum(1, value, 3)
end
然后会返回:
{:sum, [], [1, {:value, [], Elixir}, 3]}
这不是预期的结果。为此,我们使用 unquote
:
iex> value =
...> quote do
...> 13
...> end
iex> quote do
...> sum(1, unquote(value), 3)
...> end
{:sum, [], [1, 13, 3]}
如果要取消引用不是带引号的表达式的值,例如Map,则需要在之前调用
:Macro.escape/1
iex> value = %{foo: :bar}
iex> quote do
...> process_map(unquote(Macro.escape(value)))
...> end
{:process_map, [], [{:%{}, [], [foo: :bar]}]}
如果您忘记对其进行转义,Elixir 将在编译代码时引发错误。
相关用法
- Elixir Kernel.SpecialForms.unquote_splicing用法及代码示例
- Elixir Kernel.SpecialForms.case用法及代码示例
- Elixir Kernel.SpecialForms.%{}用法及代码示例
- Elixir Kernel.SpecialForms.for用法及代码示例
- Elixir Kernel.SpecialForms.quote用法及代码示例
- Elixir Kernel.SpecialForms.require用法及代码示例
- Elixir Kernel.SpecialForms.&expr用法及代码示例
- Elixir Kernel.SpecialForms.<<args>>用法及代码示例
- Elixir Kernel.SpecialForms.{args}用法及代码示例
- Elixir Kernel.SpecialForms.receive用法及代码示例
- Elixir Kernel.SpecialForms.%struct{}用法及代码示例
- Elixir Kernel.SpecialForms.import用法及代码示例
- Elixir Kernel.SpecialForms.left . right用法及代码示例
- Elixir Kernel.SpecialForms.alias用法及代码示例
- Elixir Kernel.SpecialForms.try用法及代码示例
- Elixir Kernel.SpecialForms.fn用法及代码示例
- Elixir Kernel.SpecialForms.cond用法及代码示例
- Elixir Kernel.SpecialForms.__aliases__用法及代码示例
- Elixir Kernel.SpecialForms.left :: right用法及代码示例
- Elixir Kernel.SpecialForms.with用法及代码示例
- Elixir Kernel.SpecialForms.__block__用法及代码示例
- Elixir Kernel.SpecialForms.^var用法及代码示例
- Elixir Kernel.round用法及代码示例
- Elixir Kernel.left / right用法及代码示例
- Elixir Kernel.put_in用法及代码示例
注:本文由纯净天空筛选整理自elixir-lang.org大神的英文原创作品 Kernel.SpecialForms.unquote(expr)。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。