rust-quiz:024-local-and-const-hygiene.rs
题目#
fn main() {
let x: u8 = 1;
const K: u8 = 2;
macro_rules! m {
() => {
print!("{}{}", x, K);
};
}
{
let x: u8 = 3;
const K: u8 = 4;
m!();
}
}
关键#
- 卫生
看过macro_rules
的都知道卫生性。
这里简单的描述一下宏内部对于变量引用的特质- 变量:选择声明时候最近的值进行固化
- 常量:不进行固化
题解#
根据上述性质,对于 x
会选取 1
进行固化。
而针对 K
,并不会进行固化,也就是只会选取最近的 4
作为内部值。
因此打印的是 14
。
答案#
14
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: