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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值