`quote` 宏是如何实现插值的?
How does the `quote` macro achieve interpolation?
quote
(声明式)和 proc_quote
(过程式)宏如何允许对局部变量进行插值?
由于(声明性)宏是卫生的,我预计它们将无法访问调用它们的环境。
Since (declarative) macros are hygienic, I would expect that they wouldn't be able to access the environment they're called in.
为什么?
vec![a, b, c]
工作正常。
卫生的宏并不意味着它们无法访问调用它们的环境(这会使它们完全无用),这意味着它们不会意外影响 调用的环境,即宏的内部符号既不会泄露也不会与环境符号冲突。
例如使用 C 宏,宏内部和外部的名称位于完全相同的命名空间中,因此可能会发生冲突和奇怪的副作用。
quote
(声明式)和 proc_quote
(过程式)宏如何允许对局部变量进行插值?
由于(声明性)宏是卫生的,我预计它们将无法访问调用它们的环境。
Since (declarative) macros are hygienic, I would expect that they wouldn't be able to access the environment they're called in.
为什么?
vec![a, b, c]
工作正常。
卫生的宏并不意味着它们无法访问调用它们的环境(这会使它们完全无用),这意味着它们不会意外影响 调用的环境,即宏的内部符号既不会泄露也不会与环境符号冲突。
例如使用 C 宏,宏内部和外部的名称位于完全相同的命名空间中,因此可能会发生冲突和奇怪的副作用。