rust-quiz:022-macro-tokenize-number.rs
题目
macro_rules! m {
($a:tt) => { print!("1") };
($a:tt $b:tt) => { print!("2") };
($a:tt $b:tt $c:tt) => { print!("3") };
($a:tt $b:tt $c:tt $d:tt) => { print!("4") };
($a:tt $b:tt $c:tt $d:tt $e:tt) => { print!("5") };
($a:tt $b:tt $c:tt $d:tt $e:tt $f:tt) => { print!("6") };
($a:tt $b:tt $c:tt $d:tt $e:tt $f:tt $g:tt) => { print!("7") };
}
fn main() {
m!(-1);
m!(-1.);
m!(-1.0);
m!(-1.0e1);
m!(-1.0e-1);
}
关键
-
负号-
是独立进行解析的,如果不进行特殊声明,计算的时候也会分离。let a = -2i32.pow(2); // -4 let b = (-2i32).pow(2); // 4
integer
数值都是整体当做一个`token``进行解析。
题解
这里主要检测TokenTree
的数量,按照上述的原理,其实全部匹配的都是2
。
答案
22222
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: