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 协议》,转载必须注明作者和本文链接