【发布时间】:2025-12-15 06:40:01
【问题描述】:
我有一个 Elixir 中的宏列表,并试图在它周围加上引号,请帮助我。
我想将[Id, Node, Timestamp] 转换为"[Id, Node, Timestamp]"。
我该怎么做?
【问题讨论】:
-
到目前为止你有什么尝试?
标签: elixir
我有一个 Elixir 中的宏列表,并试图在它周围加上引号,请帮助我。
我想将[Id, Node, Timestamp] 转换为"[Id, Node, Timestamp]"。
我该怎么做?
【问题讨论】:
标签: elixir
[Id, Node, Timestamp] 是 原子 的列表,而不是 宏 的列表。
原子是简单的术语,因此简单的旧好的Kernel.inspect/2 就可以了。
inspect [Id, Node, Timestamp]
#⇒ "[Id, Node, Timestamp]"
【讨论】:
如果你有一个引用的表达式,我相信Macro.to_string/2 就是你要找的。p>
iex> ast = quote do: [Id, Node, Timestamp]
[Id, Node, Timestamp]
iex> Macro.to_string(ast)
"[Id, Node, Timestamp]"
然而,正如 Aleksei 指出的那样,原子列表的 AST 本身就是其本身,因此如果您只是想将其转换为字符串,Kernel.inspect/2 会完成同样的事情。
【讨论】:
Macro.to_string([Id, Node, Timestamp]) 效果一样。