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 協議》,轉載必須註明作者和本文連結