Elixir語言中 Macro.escape
相關用法介紹如下。
用法:
escape(expr, opts \\ [])
@spec escape(
term(),
keyword()
) :: t()
遞歸地轉義一個值,以便將其插入到語法樹中。
例子
iex> Macro.escape(:foo)
:foo
iex> Macro.escape({:a, :b, :c})
{:{}, [], [:a, :b, :c]}
iex> Macro.escape({:unquote, [], [1]}, unquote: true)
1
選項
-
:unquote
- 當為 true 時,此函數使unquote/1
unquote_splicing/1
-
:prune_metadata
- 如果為真,則從轉義的 AST 節點中刪除元數據。請注意,此選項會更改轉義代碼的語義,並且僅應在轉義 AST 時使用。默認為假。例如,
ExUnit
ExUnit
:line
和:no_parens
。
與 Kernel.SpecialForms.quote/2
的比較
Kernel.SpecialForms.quote/2
函數有時會與 escape/2
混淆,因為上述示例對兩者的行為相同。當要轉義的值存儲在變量中時,最能說明關鍵區別。Kernel.SpecialForms.quote/2
iex> Macro.escape({:a, :b, :c})
{:{}, [], [:a, :b, :c]}
iex> quote do: {:a, :b, :c}
{:{}, [], [:a, :b, :c]}
iex> value = {:a, :b, :c}
iex> Macro.escape(value)
{:{}, [], [:a, :b, :c]}
iex> quote do: value
{:value, [], __MODULE__}
iex> value = {:a, :b, :c}
iex> quote do: unquote(value)
{:a, :b, :c}
用於轉義escape/2
values
(直接傳遞或變量綁定),而
為表達式生成語法樹。Kernel.SpecialForms.quote/2
相關用法
- Elixir Macro.expand_once用法及代碼示例
- Elixir Macro.Env.fetch_alias用法及代碼示例
- Elixir Macro.prewalk用法及代碼示例
- Elixir Macro.generate_unique_arguments用法及代碼示例
- Elixir Macro.quoted_literal?用法及代碼示例
- Elixir Macro.Env.required?用法及代碼示例
- Elixir Macro.validate用法及代碼示例
- Elixir Macro.Env.prepend_tracer用法及代碼示例
- Elixir Macro.camelize用法及代碼示例
- Elixir Macro.operator?用法及代碼示例
- Elixir Macro.var用法及代碼示例
- Elixir Macro.unescape_string用法及代碼示例
- Elixir Macro.unique_var用法及代碼示例
- Elixir Macro.to_string用法及代碼示例
- Elixir Macro.Env.lookup_import用法及代碼示例
- Elixir Macro.prewalker用法及代碼示例
- Elixir Macro.postwalker用法及代碼示例
- Elixir Macro.underscore用法及代碼示例
- Elixir Macro.generate_arguments用法及代碼示例
- Elixir Macro.Env.has_var?用法及代碼示例
- Elixir Macro.decompose_call用法及代碼示例
- Elixir Macro.Env用法及代碼示例
- Elixir Macro.update_meta用法及代碼示例
- Elixir Macro.unpipe用法及代碼示例
- Elixir Macro用法及代碼示例
注:本文由純淨天空篩選整理自elixir-lang.org大神的英文原創作品 Macro.escape(expr, opts \\ [])。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。