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 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!