[QMacros] 使用模板生成随机电话号码

这是一个使用 QMacros 的 Volatile 类型的宏来实现的小例子,首先我们看代码:

上面的代码将 186[n][n][n][n]5678 中的 [n] 每次替换为一个随机的 0-9 之间的数字,然后形成  186xxxx5678 这样的号码,我们看运行的结果:

QQ截图20150522151731实际上,上面的代码就是 Push 了一个回调函数,由于在 Push 时没有指定宏的易变性,所以 QMacros 就认为它是一个易变的宏,每执行一次替换时都会调用回调函数来生成新值,从而达到生成随机号码的效果。

由此,我们再回顾上 QMacros 宏的易变性:

  • mvImmutable
    值是固定不变的,是一种常量状态,它会在你Push时直接调用返回固定的值,然后在编译宏表达式时直接完成替换工作,而不是在实际替换时再替换。
  • mvStable
    值是相对不变的,它在一次替换操作过程中,在第一次出现的位置调用一次,然后再出现就会直接使用。
  • mvVolatile
    值是易变的,每次获取宏的值时,返回的值都可能是不同的,所以在宏每次出现的位置,都会调用它进行替换。

 

分享到:

1 条评论

沙发空缺中,还不快抢~