StringTemplate.Net 学习笔记(5):条件声明

来源:互联网 发布:飞利浦空气净化器 知乎 编辑:程序博客网 时间:2024/06/08 05:05

ST的条件声明只有一个if语句,假如attribute为bool值,则直接计算,否则它通过判断attribute是否有值来计算。

接下来看几个例子:

例1,计算bool值:

StringTemplate st = new StringTemplate(@"$if(c)$  条件成立$else$  条件不成立$endif$");st.SetAttribute("c", false);Console.WriteLine(st.ToString());
输出:条件不成立

例2,计算bool值:

StringTemplate st = new StringTemplate(@"$if(c)$  条件成立$else$  条件不成立$endif$");st.SetAttribute("c", true);Console.WriteLine(st.ToString());
输出:条件成立

例3,判断是否有值:

StringTemplate st = new StringTemplate(@"$if(c)$  条件成立$else$  条件不成立$endif$");
Console.WriteLine(st.ToString());
输出:条件不成立

例4,判断是否有值:

StringTemplate st = new StringTemplate(@"$if(c)$  条件成立$else$  条件不成立$endif$");
st.SetAttribute("c", "test");Console.WriteLine(st.ToString());
输出:条件成立

例5,多个分支:

StringTemplate st = new StringTemplate(@"$if(a)$  条件a成立$elseif(b)$  条件b成立$elseif(c)$  条件c成立$else$  条件都不成立$endif$");st.SetAttribute("c", "00");Console.WriteLine(st.ToString());
输出:条件c成立

例6,多个分支设置了多个条件情况下,按照它们出现的顺序来确定条件是否成立:

StringTemplate st = new StringTemplate(@"$if(a)$  条件a成立$elseif(b)$  条件b成立$elseif(c)$  条件c成立$else$  条件都不成立$endif$");st.SetAttribute("c", true);st.SetAttribute("b", true);Console.WriteLine(st.ToString());
输出:条件b成立

例7,对attribute取反,这是ST唯一支持的运算符:

StringTemplate st = new StringTemplate(@"$if(!c)$  条件成立$else$  条件不成立$endif$");st.SetAttribute("c", true);Console.WriteLine(st.ToString());
输出:条件不成立

例8,嵌套的if语句:

StringTemplate st = new StringTemplate(@"$if(a)$  条件a成立  $if(b)$  条件b成立  $else$  条件b不成立  $endif$$else$  条件不成立$endif$");st.SetAttribute("a", true);Console.WriteLine(st.ToString());
输出:条件a成立 条件b不成立

支持的条件语法确实是太少了。

参考:http://www.antlr.org/wiki/display/ST/Expressions#Expressions-Attributeoperators