基于超级宏变量赋值和逻辑判断的特性,引申出一些特别不合逻辑但是有效的使用方法
在宏的变量赋值与逻辑中:
1.一切不是false的在逻辑处理时都为true.
/if [1]
/print [str:helloworld]
/end
此时将会print出helloworld的语句
2.当表达式为true,将会把最后一个量装入保存的变量中.
/var [1<2] v_test
/print [v_test]
此时将会print出2的语句
综上将讲解的语句是下面这一句.
/var [!var,fun1(var);fun2(var)] var
fun2(var) 应有结构为
fun3() (<,>,=,~=) var
前后顺序由保存变量决定
举例1中保存变量为 切换目标
举例2中保存变量为tid
举例1:
/var [!v_切换目标,nowtime+0.5;tnodead,nowtime>v_切换目标] v_切换目标
等效于
if [!v_切换目标]
/var [nowtime+0.5] v_切换目标
/else
/var [tnodead,nowtime>v_切换目标] v_切换目标
/end
在宏的逻辑中,当(tnodead,nowtime>v_切换目标)为true,将会把最后一个量装入保存的变量中,
以上表达式等效于
全式拆解为
if [!v_切换目标]
/var [nowtime+0.5] v_切换目标
/else
/if [tnodead,nowtime>v_切换目标]
/var [v_切换目标] v_切换目标
/else
/var [false] v_切换目标
/end
/end
等效处理方案
if [tnodead,nowtime>v_切换目标]
/var [true] v_切目标
/var [nowtime+0.5] v_切换目标
/else
/var [false] v_切目标
/end
举例2:
/var [!v_切换目标,tid;v_切换目标=tid] v_切换目标
此式等效处理方案:
if [v_切换目标=tid]
/var [true] v_没换目标
/else
/var [false] v_没换目标
/else
/end
/var [tid] v_切换目标