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

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
Tags: 

延伸阅读

最新评论

发表评论